
版权声明:本文为博主原创文章,未经博主允许不得转载。
今天在接入友盟分享sdk的时候,发现了一个奇怪的问题,在iOS8.x上边分享成功后回调正常,但是在iOS9上边回调居然没有回调,检查了一圈没有发现什么错误啊?究竟是怎么回事呢?最后才发现原来是因为这个: 在同时接入talkingdata和友盟分享的时候,连个sdk都会要求我们实现两个系统方法,//这两个方法的作用就是打开其他的应用,但是是有区别的,一个方法是在iOS9中回调,一个方法是在iOS8中回调 -(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{[TalkingDataAppCpa onReceiveDeepLink:url]; return [UMSocialSnsService handleOpenURL:url wxApiDelegate:nil]; } //iOS9中的回调方法,如果此方法没有定义则在iOS9中也会回调iOS8中的那个重载方法 - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options { [TalkingDataAppCpa onReceiveDeepLink:url]; return [UMSocialSnsService handleOpenURL:url wxApiDelegate:nil]; } 如果两个方法我们只实现了第一个的话是没有问题的,而且友盟的demo中实现的也是第一个、但是问题来了,在其他的sdk中可能会要求我们同时实现iOS8和iOS9中的方法。如果我们只在ios8中的方法中调用了 [UMSocialSnsService handleOpenURL:url wxApiDelegate:nil]这个方法,而在iOS9的方法中没有写 [UMSocialSnsService handleOpenURL:url wxApiDelegate:nil]这个方法那个就会出现在iOS8上边回调正常iOS9上边无回调,所以我推荐使用上述方法来解决在iOS8上边回调正常但是在iOS9上边回调不正常的情况。 声明:可能上述文章中存在知识性错误,如果大家有发现尽请指正,不胜感激 |