最近升級到最新微信SDK遇到一個比較棘手的問題型凳,多個APP配置相同的Universal Link時調(diào)不起微信丈冬,支付時會跳轉兩次才能調(diào)成功。后來查了很多資料才算是解決了甘畅,在這里分享一下自己的經(jīng)驗埂蕊。
1、配置Universal Link(通用鏈接)必須是https的域名疏唾,域名證書過期的也不行蓄氧,我用的是公司官網(wǎng)
2、開發(fā)者中心配置:找到對應的App ID槐脏,在Application Services列表里有Associated Domains勾選上
然后需要重新配置profiles喉童,否則項目運行不成功
3、工程配置中相應功能:targets->Signing&Capabilites->Capability->Associated Domains顿天,在其中的Domains中填入你想支持的域名堂氯,也必須必須以applinks:為前綴蔑担。
4、創(chuàng)建一個文件咽白,名必須為apple-app-site-association啤握,切記沒有后綴名
單個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是指定的路徑的鏈接才能調(diào)起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互聯(lián)平臺的Universal Link
用的是可以打開APP的路徑
QQ需要在QQ互聯(lián)平臺配置https://connect.qq.com/index.html
應用管理---移動應用
編輯單個應用的基本信息
7授段、需要在工程里的實現(xiàn)AppDelegate里對應的方法:
//配置Universal Links喚醒的APP 實現(xiàn)引流
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _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