微信分享中的回撥處理-OnResp
阿新 • • 發佈:2019-02-05
1.回撥代理方法的位置,是在AppDelegate還是指定介面
- 在微信所給的demo中是通過委託讓AppDelegate.m中來執行回撥方法的,但在實際專案中確會把分享相關的程式碼寫在自定義的控制器中,這就需要指定的介面作為代理執行回撥方法
- 例項化一個控制器,作為代理,且新增協議
@interface ShareViewController : BaseViewController<WXApiDelegate>
-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{//9.0-
ShareViewController *shareVC = [[ShareViewController alloc] init];
return [WXApi handleOpenURL:url delegate:shareVC];
}
-(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options//9.0+
{
ShareViewController *shareVC =[[ShareViewController alloc] init];
return [WXApi handleOpenURL:url delegate:shareVC];
}
2.區分分享到朋友圈還是微信好友
- 某些統計或特殊需求需要在分享的時候能夠區分是朋友圈還是好友,但是在微信提供的SDK中,只是在分享時進行區分,回撥方法中不會進行區分,這就需要自己新增標記來實現功能
- 使用單例進行標記-[Singleton sharedSingleton].shareScene,分享之前進行標記,分享之後獲取標記
- 其中就算點選分享跳到微信,使用者還是可以不進行分享操作,直接返回app的,所以,需要在標記中進行加減1000,避免這種情況
#pragma mark - 具體的分享
- (void)WXApi_ShareWebpage:(int)scene dict:(NSDictionary *)dict{
.....
//請求request
SendMessageToWXReq* req = [[SendMessageToWXReq alloc] init];
req.bText = NO;
req.message = message;
//1.可以選擇傳送到會話(WXSceneSession)或者朋友圈(WXSceneTimeline)
req.scene = scene;
//2.發出請求
[WXApi sendReq:req];
//3.使用單例進行標記:朋友圈還是好友
[Singleton sharedSingleton].shareScene = req.scene+10000;
}
#pragma mark - 微信分享後的回撥
-(void)onResp:(BaseResp *)resp{
//獲取分享結果
int errCode = resp.errCode;
//獲取分享到的位置
[Singleton sharedSingleton].shareScene -= 10000;
//進行判斷
.....
}