美文网首页good
QQ、微信分享适配Universal Link

QQ、微信分享适配Universal Link

作者: ShenYj | 来源:发表于2020-06-24 09:37 被阅读0次

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

    相关文章

      网友评论

        本文标题:QQ、微信分享适配Universal Link

        本文链接:https://www.haomeiwen.com/subject/xuglfktx.html