Universal Link
的实现不做介绍, 这里只介绍SDK
层的变化
更换SDK
的注册方法
- 微信分享:
替换原注册方法为:
[WXApi registerApp:kLibAppIDWeiXin];
↓
[WXApi registerApp:kLibAppIDWeiXin universalLink:kUniversalLink];
- QQ分享:
[[TencentOAuth alloc] initWithAppId:kLibAppIDQQ andDelegate:self];
↓
NSString *universalLink = [NSString stringWithFormat:@"%@qq_conn/%@", kUniversalLink, kLibAppIDQQ];
[[TencentOAuth alloc] initWithAppId:kLibAppIDQQ enableUniveralLink:NO universalLink:universalLink delegate:self];
注意 enableUniveralLink 这个参数
默认为NO,第三方应用是否将sdk和手机QQ的交互方式切换为UniversalLink方式,启用后则在iOS9及以上的系统都会生效UniversalLink方式;否则,默认仅在iOS13及以上的系统生效UniversalLink方式。
实现回调
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler
{
// Demo处理手Q UniversalLink回调的示例代码
if([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
NSURL *url = userActivity.webpageURL;
if(url && [TencentOAuth CanHandleUniversalLink:url]) {
[QQApiInterface handleOpenURL:url delegate:[QQSahreObject sharedManager]];
[QQApiInterface handleOpenUniversallink:url delegate:[QQSahreObject sharedManager]];
return [TencentOAuth HandleUniversalLink:url];
}
}
return [WXApi handleOpenUniversalLink:userActivity delegate:[WeChatObject sharedManager]];
}
原协议方法不要去掉, 保留
代码来源于SDK demo, 可以重构下, 保证代码的可读性, 使业务更加清晰