1. 程式人生 > >微信分享中的回撥處理-OnResp

微信分享中的回撥處理-OnResp

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; //進行判斷 ..... }