因为微信之后不再支持1.8.6以下的分享,所以今天对友盟分享进行了升级,踩了一点坑,这里记录一下,希望能对大家有帮助。
最新微信sdk使用通用链接(Universal Link)进行跳转,注册等操作这里就不再赘述了,下面记录一下再xcode里面的集成。
1: 假设现已拿到微信Universal Links为https://xxx.xxx.cn/yyy/。
在Xcode中添加Associated Domains,新增 applinks: + 域名,其中applinks:为固定字符,已上述地址为例,域名为https://xxx.xxx.cn,则新增domians为 -> applinks:https://xxx.xxx.cn
2: 创建apple-app-site-association文件
在电脑文件夹中创建一个空白文件(注意不是xcode中创建),命名为apple-app-site-association,不加后缀
在文件中写入
{
"applinks": {
"apps": [],
"details": [
{
"appID": "teamID.BundleIdentifier",
"paths": [ "*"]
},
{
"appID": "teamID.BundleIdentifier",
"paths": ["*"]
}
]
}
}
其中appID由两部分组成 teamID可在苹果开发者中心查询,BundleIdentifier就是app的 Bundle Identifier。paths以1中链接为例则填/yyy/,即 "paths": [ "/yyy/*"](注意后面的*不能删掉)
details中为各类app的集合。
3: 上传apple-app-site-association文件
把2中创建的名为apple-app-site-association的文件(不带后缀名)发给后台的哥们,让他们上传到https服务器的根目录下(一级目录)。
4:初始化
由于sdk的升级,友盟的初始化方法发生了改变。下面是xcode代码中的集成(重点)
4.1: swift在桥接文件中引入WXAPI,即 #import "WXAPI.h"
4.2:在Appdelegate文件中进行初始化:
WXApi.registerApp("app在微信中注册的appkey", universalLink: "https://xxx.xxx.cn/yyy/")
UMSocialGlobal.shareInstance()?.universalLinkDic = [UMSocialPlatformType.wechatSession: "https://xxx.xxx.cn/yyy/"]
此时再调用微信分享已经可以跳转微信了,但是注意此时回调已经发生改变,需要在Appdelegate中实现以下方法则可正常跳转。而使用友盟微信登录则使用UMSocialManager,注释WXApi。
funcapplication(_application:UIApplication, continue userActivity:NSUserActivity, restorationHandler:@escaping([Any]?) ->Void) ->Bool
{
// let result = UMSocialManager.default()?.handleUniversalLink(userActivity, options: nil)
// return result ?? false
letresult =WXApi.handleOpenUniversalLink(userActivity, delegate:self)
returnresult
}