美文网首页
iOS 微信SDK1.8.6+Universal Link适配方

iOS 微信SDK1.8.6+Universal Link适配方

作者: 简书弧线 | 来源:发表于2020-07-09 11:03 被阅读0次

参考:https://developers.weixin.qq.com/doc/oplatform/Mobile_App/Access_Guide/iOS.html

1、确保项目已打开Associated Domains开关。(如果已打开,进入第二步)

1.1、登录开发者账号,在“Certificates, Identifiers & Profiles”的找到项目对应的“App ID”
App ID
1.2、找到“Associated Domains”并勾选
Associated Domains
1.3、保存后会出现提醒框,大概意思是更新了App ID的配置后,需要删除项目旧的证书,然后重新下载最新的,实际上我们不需要管,因为Xcode会自动帮我们更新。点击“确认”即可。
确认
1.4、在项目中找到并添加“Associated Domains”,到这里项目的准备工作已经做好了。
添加Associated Domains

2、填写Universal Links,并配置apple-app-site-association文件

2.1、Universal Link固定格式举例:applinks:www.baidu.com/
其中“baidu”, 就是我们公司的域名或者网站。注意这个Universal Links必须要支持https,这个微信官方要求的。另外最后的“/”不要漏了。
Universal Link填写
2.2、配置apple-app-site-association文件,按照Apple官方的文档格式进行编辑。
使用一个txt文件作为底子,输入一下指定格式:
{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID":"teamId.bundleId",
                "paths": [ "*"]
            }
        ]
    }
}

这里注意:appID填写的你的开发者teamId.项目bundleId。比如:Y381XBRN75.com.baidu.app
然后paths一般直接填:* 就行,或者还可以填:/wx_open/xxx/* 等格式,这个后面会说到区别。这里图方便就填个*
输入完毕后保存,将文件的.txt后缀去掉,只保留“apple-app-site-association”字样。

在桌面是这个样子的:
apple-app-site-association
2.3、将apple-app-site-association文件交给后台的同事,让他把文件放到网站的服务器下,要求达到这样的效果:
在浏览器中输入:https://www.xxxxx.com/apple-app-site-association,可以自动下载文件。
如果后台的同事不太明白怎么弄,把这个地址给他看下,应该没问题了。https://www.jianshu.com/p/f47ec0b9055e

2.4、等后台的同事把文件上传后,我们需要校验一下文件是否成功放到服务器了。

检验的方法一:打开手机的备忘录,输入我们配置的universalLink,比如:https://www.baidu.com/,然后长按这个地址,会出现“在xxx中打开“,说明我们配置成功了。这里的xxx就是我们的APP名字。
或者点击链接,可以直接拉起APP,也说明成功了。
检测一
检验方法二:打开手机Safari浏览器,输入:https://www.baidu.com/,然后滑动到最上面,会出现我们的APP名字,并带有”在xxx“APP中打开的字样,点击可以拉起我们的APP。也说明成功了。
检测二
两个方法的原理是一样的,就是通过universalLink来拉起APP。记得这里的 https://www.baidu.com/ 换成我们自己的universalLink就行。

3、完成前面两步后,我们开始适配微信SDK。建议使用CocoaPods 集成,文章开头的地址有微信官方的集成步骤,可以参考。

3.1、在“info”标签栏的“URL type“添加“URL scheme”在注册微信的APPID
3.2、在“info”标签栏的“LSApplicationQueriesSchemes“添加weixin 和 weixinULAPI
这两步应该没什么问题,我们之前都有配置过的。

3.3、微信SDK初始化,我是在didFinishLaunchingWithOptions中注册的:
[WXApi registerApp:微信APPID universalLink:@“https://www.baidu.com/”]
注意了,这里的universalLink就是我们在Associated Domains中填写的
比如我们刚才填写的是:applinks:www.baidu.com/
那么这里的universalLink就填写:https://www.baidu.com/
按照这个模块,根据我们自己公司的网站域名不同而作修改即可。

3.4、在appdelegate中实现以下3个方法:
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
return  [WXApi handleOpenURL:url delegate:self];
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
 return [WXApi handleOpenURL:url delegate:self];
} 
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray<id<UIUserActivityRestoring>> * __nullable restorableObjects))restorationHandler {
return [WXApi handleOpenUniversalLink:userActivity delegate:self];
} 

这里都是按照官方文档的流程走的,没什么问题。

3.5、需要到微信开放平台,找到项目对应的应用,填写Universal Links:https://www.xxxxx.com/
微信开放平台配置

4、如果项目中集成了友盟分享,比如我的就是。需要确保友盟的SDK也是最新版的,然后注册友盟的SDK时,也需要配置Universal Links。

4.1、友盟SDK注册时加上这行代码:

[UMSocialGlobal shareInstance].universalLinkDic = @{@(UMSocialPlatformType_WechatSession): wechatUniversalLink};

这里的wechatUniversalLink,就是我们上面填写的:https://www.baidu.com/

4.2、注意了,如果你是通过CocoaPods 集成友盟SDK,里面会包含了微信的SDK,这样就和我们自己集成的微信SDK冲突,解决办法就是删掉其中一方的文件即可。
可能会冲突的文件
我的处理方法是手动集成友盟的SDK,然后删掉里面的微信SDK。如果不存在这样问题的,请忽略4.2这段。

5、到这里就可以算是完成了微信分享+Universal Link适配了。接下来讲一下遇到的坑:

5.1、Associated Domains、微信Universal Links 和 apple-app-site-association文件
这三个需要填写的地方,很容易搞混淆或者搞懵。其实这三者都有固定的填写格式,只要搞清楚之后,就很好理解了。
Associated Domains固定格式:applinks:www.xxxxx.com/
微信Universal Links固定格式:https://www.xxxxx.com/
apple-app-site-association固定格式:
{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID":"teamId.bundleId",
                "paths": [ "*"]
            }
        ]
    }
}
注意了,这里paths与Universal Links是有关联的。比如paths填写的是:/wx_open/app/* (必须用*结尾)
那么我们的微信Universal Links就要这样写:https://www.xxxxx.com/wx_open/app/
Associated Domains格式不变,仍然是:applinks:www.xxxxx.com/
那么在备忘录/浏览器中输入:https://www.xxxxx.com/wx_open/app/ 就可以打开APP

搞明白这个格式,对我们配置来说,就非常简单了。我就是在这里遇到问题,一直转不出来。花了2天时间才搞明白。

5.2、让后台同事上传apple-app-site-association文件时,一开始的效果是输入:https://www.xxxxx.com/apple-app-site-association
直接打开了这个文件,显示了json,这样是不行的。
我们需要的效果是,输入地址后,可以直接自动下载文件。

5.3、如果是一个项目,有多个Target,那么apple-app-site-association文件需要这样填写:

{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID":"teamId1.bundleId1",
                "paths": [ "/wx_open/app1/*", "qq_open/app1/*"]
            },
            {
                "appID":"teamId1.bundleId2",
                "paths": [ "/wx_open/app2/*", "qq_open/app2/*"]
            }
        ]
    }
}

直接复制粘贴就行,根据自己的项目需求,改一下里面的字段:teamId1、bundleId1、app1 即可。以此类推,一个apple-app-site-association文件是可以支持多个项目的。

相关文章

网友评论

      本文标题:iOS 微信SDK1.8.6+Universal Link适配方

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