從外部跳轉(zhuǎn)到APP內(nèi)部有兩種方式
1、Universal Links
2、schema
一、Universal Links
tips:這個(gè)文章是給已經(jīng)創(chuàng)建有現(xiàn)成的app的開發(fā)者看的,如果沒有創(chuàng)建app,請(qǐng)先去創(chuàng)建app。
工作原理:
在安裝某個(gè)app的時(shí)候,iOS系統(tǒng)會(huì)檢查App bundle中的Info.plist文件。如果發(fā)現(xiàn)有associated domain字段,會(huì)讀取applinks的地址,比如wx.shunliandongli.com,然后系統(tǒng)會(huì)去該域名根目錄下尋找一個(gè)名為apple-app-site-association的文件。如果有,那么下載到本地,然后解析這個(gè)文件。根據(jù)path建立與appid的映射關(guān)系,保存在系統(tǒng)的數(shù)據(jù)庫中。如果有訪問http://wx.shunliandongli.com/path/ 的鏈接,系統(tǒng)會(huì)根據(jù)映射關(guān)系找到的appid,啟動(dòng)該app,實(shí)現(xiàn)universal link。
1、客戶端配置(根據(jù)下圖配置)
image.png
image.png
image.png
創(chuàng)建Domains 中
applinks:是固定前綴。后面跟著的是你們的要使用的域名,這樣客戶端就配置好了(xcode 幫你把a(bǔ)ppID中的Associated Domains開關(guān)打開了,不需要你處理)
2、服務(wù)端配置
在你剛剛添加
Associated Domains的域名 服務(wù)器根目錄中添加一個(gè)名為apple-app-site-association文件,不需要后綴
文件中的內(nèi)容
{
"applinks": {
"apps": [],
"details": [
{
"appID": "A5VC12345Y.com.ShunLian.Power",
"paths": ["/app","*"]
},
]
}
}
這個(gè)
A5VC12345Y是teamID 后面的com.ShunLian.Power是boundID
paths 是對(duì)應(yīng)的路徑,就是你域名路徑下,跳轉(zhuǎn)的路徑。比如:
/app對(duì)應(yīng)的路徑就是wx.shunliandongli.com/app
*對(duì)應(yīng)的路徑就是wx.shunliandongli.com/*就是所有路徑
3、使用
在Safari瀏覽器中輸入
wx.shunliandongli.com/app就能打開APP,如果沒有安裝APP的時(shí)候,就打開對(duì)應(yīng)的網(wǎng)頁。
4、調(diào)試 - 在Appdelegate中添加回調(diào)方法
在下面方法中添加網(wǎng)頁路徑對(duì)應(yīng)的APP頁面
-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler{
NSLog(@"path : %@",userActivity.webpageURL.absoluteString);
}
tips:我們?cè)谔幚砭W(wǎng)頁跳轉(zhuǎn)到對(duì)應(yīng)的APP回調(diào)的時(shí)候,我們公司的處理方法可以參考,假設(shè)有一個(gè)頁面,即在網(wǎng)頁中打開,又在APP中打開。我們就給這些頁面一個(gè)特定的路勁 比如wx.shunliandongli.com/app/*,就是app路徑下的所有網(wǎng)頁,都需要打開APP。然后我們把對(duì)應(yīng)要跳轉(zhuǎn)到APP頁面的信息,拼接在鏈接的參數(shù)后面。比如:wx.shunliandongli.com/app/activity?ios_schema=xxxxxx
這個(gè)鏈接地址,明顯在app/*路徑下,所以能跳轉(zhuǎn)。ios_schema=xxxxxx是我們要在APP跳轉(zhuǎn)到指定頁面的識(shí)別標(biāo)識(shí)。
二、schema
1、 添加Schema URL -我隨便寫了一個(gè) "myAppSL"
image.png
image.png
這樣Schema URL就添加成功了
2、使用
1、在Safari中輸入 myAppSL:// 就能跳轉(zhuǎn)到app
2、在其他APP跳轉(zhuǎn)到咱們自己的APP的時(shí)候,調(diào)用西下面方法
NSURL* url = [NSURL URLWithString: @"myAppSL://"];
[[UIApplication sharedApplication] openURL:url options:@{} completionHandler:nil];
3、在Appdelegate回調(diào)處理
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
NSLog(@"%@",url.absoluteString);
return YES;
}




