QQ、微信分享适配Universal Link

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> * _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, 可以重构下, 保证代码的可读性, 使业务更加清晰

你可能感兴趣的:(QQ、微信分享适配Universal Link)