iOS升级微信SDK、QQSDK必备之Universal Link

最近升级到最新微信SDK遇到一个比较棘手的问题,多个APP配置相同的Universal Link时调不起微信,支付时会跳转两次才能调成功。后来查了很多资料才算是解决了,在这里分享一下自己的经验。
1、配置Universal Link(通用链接)必须是https的域名,域名证书过期的也不行,我用的是公司官网
2、开发者中心配置:找到对应的App ID,在Application Services列表里有Associated Domains勾选上


image.png
image.png

然后需要重新配置profiles,否则项目运行不成功
3、工程配置中相应功能:targets->Signing&Capabilites->Capability->Associated Domains,在其中的Domains中填入你想支持的域名,也必须必须以applinks:为前缀。

image.png

4、创建一个文件,名必须为apple-app-site-association,切记没有后缀名


image.png
单个APP使用
{
    "applinks": {
        "apps": [],
        "details": [
        {
                "appID": "T***X2DQ**N3.com.baidu.com",
                "paths": [ "*" ]
            }
        ]
    }
}
多个APP使用同一个apple-app-site-association
{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "PBD6F.com.baidu.fsyy",
                "paths": [ "/applink/gdfs/*" ]
            },
        {
                "appID": "TUX23.com.baidu.bjsjt",
                "paths": [ "/applink/bjsjt/*" ]
            }
        ]
    }
}
多个APP支持微信、QQ使用同一个apple-app-site-association
{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "PBD6F.com.baidu.fsyy",
                "paths": [ "/applink/gdfs/*","/qq_conn/11057124/*" ]
            },
        {
                "appID": "TUX23.com.baidu.bjsjt",
                "paths": [ "/applink/bjsjt/*","/qq_conn/11097571/*" ]
            }
        ]
    }
}
appID是由teamID和bundle id组成
paths是指定的路径的链接才能调起APP
/qq_conn/11057124/  11057124为APP对应的qqkey值

5、上传apple-app-site-association文件到https域名所对应的根目录或者.well-known目录下
(一)单个APP的用Safari输入 https://api.baidu.com/apple-app-site-association
可验证是否能打开APP
(二)多个APP的是域名加路径paths https://api.baidu.com/applink/gdfs/
https://api.baidu.com/applink/bjsjt/

6、配置微信开放平台、QQ互联平台的Universal Link
用的是可以打开APP的路径


image.png

QQ需要在QQ互联平台配置https://connect.qq.com/index.html
应用管理---移动应用

image.png

编辑单个应用的基本信息


image.png

7、需要在工程里的实现AppDelegate里对应的方法:

//配置Universal Links唤醒的APP 实现引流
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray> * _Nullable))restorationHandler{
  
  // NSUserActivityTypeBrowsingWeb 由Universal Links唤醒的APP
  if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
    NSURL *webpageURL = userActivity.webpageURL;
    NSString *host = webpageURL.host;
    if ([host containsString:@"api.baidu.com"] || [host containsString:@"apitest.baidu.com"]) {
      //QQ处理Universallink
      if (webpageURL && [TencentOAuth CanHandleUniversalLink:webpageURL]) {
          return [TencentOAuth HandleUniversalLink:webpageURL];
       }
      //进行我们需要的处理
      return [WXApi handleOpenUniversalLink:userActivity otherDelegate:self];

    } else {
      [[UIApplication sharedApplication]openURL:webpageURL];
    }
  }
  return YES;
}

8、在info.plist文件中的LSApplicationQueriesSchemes下新增两项:
weixinULAPI
weixin


image.png

你可能感兴趣的:(iOS升级微信SDK、QQSDK必备之Universal Link)