簡介
隨著iOS和微信SDK版本的更新,有變化。
新版本,需要配置Unuversal Links。沒辦法,填坑工作開始。
Unuversal Links介紹
Seamlessly link to content inside your app, or on your website in iOS 9 or later. With universal links, you can always give users the most integrated mobile experience, even when your app isn’t installed on their device.
Universal Link(通用鏈接)是蘋果在iOS9
推出的,一種能夠方便的通過傳統HTTPS鏈接來啟動APP的功能,可以使用相同的網址打開網址和APP。
看起來就是一條普通的https
鏈接,當然是我們在該鏈接域名根目錄配置過的一個鏈接,也可以在該鏈接中放置對應的H5頁面。當用戶的點擊該鏈接,只要手機中安裝了支持該鏈接的APP就會直接進入到APP中。如果沒有安裝APP則會跳轉到Safari
瀏覽器中,展示H5頁面。對用戶來說則是一個無縫跳轉的過程。
詳細介紹:https://www.cnblogs.com/guoshaobin/p/11164000.html
配置Unuversal Links
其實要做的很簡單,但是坑多。
1.蘋果開發者賬號打開配置
2.XCode工程配置
打開Associated Domains開關,將Universal Links域名加到配置上
如果沒有Associated Domains選項,則添加。
配置URL Types
配置info.plist,“LSApplicationQueriesSchemes“欄添加
3.配置JSON文件
創建一個空白文件(必須純文本,命名為apple-app-site-association
,去除后綴名)。這里建議讓后臺人員在其本地創建,避免文件傳輸時,文件自動被更改格式、后綴自動添加等問題。
內容如下
{
"applinks": {
"apps": [],
"details": [
{
"appID": "XXXXXXX.OOOOOOO",
"paths": [ "*" ]
}
]
}
}
說明:XXX表示蘋果賬號的團隊ID,OOO表示項目的BundleID。
4.后臺服務器配置
把文件apple-app-site-association,放置在服務器的根目錄(不要問我,讓后臺自己去理解),然后讓他提供一個https的url地址,格式是“正式域名/apple-app-site-association”,如:https://www.baidu.com/apple-app-site-association。
達到的效果是,瀏覽器打開這個地址,可以下載這個文件。另外用GET請求這個地址,返回文件的JSON內容(這里通過工具Postman進行試驗)
注意,返回的數據,不能存在亂碼,否則說明JSON文件有問題。
5.微信開放平臺配置
填寫正式域名。
6.初始化代碼
// 微信SDK注冊,universal link
[WXApi registerApp:APP_ID universalLink: UNIVERSAL_LINK];
補充說明:
如果后臺提供的url地址是https://www.baidu.com/apple-app-site-association
。那么,
Associated Domains中填寫applinks:www.baidu.com
,
代碼注冊方法及微信開放平臺中都填https://www.baidu.com/
,
微信登錄
微信文檔中,重寫的方法,適用于iOS10以前。
- (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 *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options{
return [WXApi handleOpenURL:url delegate:self];
}
-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler{
return [WXApi handleOpenUniversalLink:userActivity delegate:self];
}
其他資料
http://www.lxweimin.com/p/bb8429cd7bce
http://www.lxweimin.com/p/6a25b18577eb
http://www.lxweimin.com/p/c9c09992a6fe
http://www.lxweimin.com/p/ab50bdaec65d
http://www.lxweimin.com/p/8e8840dcd54d