
寫在前面,如果你的app,已經升級了微信和友盟的最新版,而且正確配置了universal link,分享到微信還是提示未驗證應用的話,就等一周左右吧(我們的app也是等了一周左右,未驗證應用才消失的。)。如果等不及,可以提交工單。(微信這個做的感覺真的很拉胯??)
最近在做新項目時發(fā)現(xiàn)微信的sdk從1.8.6版本開始,在registerApp的時候必須提供@param universalLink 微信開發(fā)者Universal Link,友盟分享的sdk在6.9.9版本也是需要提供配置universalLink,而且友盟也不在提供微信的精簡版本。
網上已經有很多,對于universalLink配置的教程,這里就不在做過多介紹。
我主要說下,一個公司有多個項目,用的同一個開發(fā)者賬號發(fā)布,在配置universalLink的情況。
比如我有兩個項目為:
bundleId: TEAM.com.red.company
bundleId: TEAM.com.blue.company
我兩個項目用的域名也是同一個:
www.companyname.com
那我的apple-app-site-association文件可以這樣寫:
{
"applinks": {
"apps": [],
"details": [
{
"appID": "TEAM.com.red.company",
"paths": [ "/app/red/wechat/*"]
},
{
"appID": "TEAM.com.blue.company",
"paths": [ "/app/blue/wechat/*"]
}
]
}
}
然后把這個apple-app-site-association文件,放在www.companyname.com的根目錄
在xcode - Associated Domains里面可以這樣寫(兩個項目都一樣):
applinks:www.companyname.com
在微信開放平臺后臺的配置分別是:
Universal Links:https://www.companyname.com/app/red/wechat/
Universal Links:https://www.companyname.com/app/blue/wechat/
配置完成之后,在手機備忘錄里面寫入這兩個鏈接:
www.companyname.com/app/red/wechat/
www.companyname.com/app/blue/wechat/
如果點擊能夠分別跳轉相對應的app,就代表配置正確。
這里也說一下,友盟的新版sdk,需要在初始化微信平臺之前設置universalLinkDic
UMSocialGlobal.shareInstance()?.universalLinkDic = [UMSPlatformNameWechatSession : WXAPPLink]
UMSocialGlobal.shareInstance()?.universalLinkDic = [UMSPlatformNameWechatTimeline : WXAPPLink]
UMSocialGlobal.shareInstance()?.universalLinkDic = [UMSPlatformNameWechatFavorite : WXAPPLink]
可以試驗分享到微信,然后點擊返回到app,如果能夠正確返回并且能夠拿到回調,代表配置正確。
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
guard let url = userActivity.webpageURL?.description else {
return true
}
print("ullink:" + url)
if url.contains("wechat") {
WXApi.handleOpenUniversalLink(userActivity, delegate: self)
}
return true
}
目前只遇到微信平臺強制需要設置universalLink,如果以后還有其他平臺需要,應該原理都是一樣的。