最近項目中要新加一個小功能,通用鏈接處理(Universal Links):
即當(dāng)某一個界面中有一個自己公司的URL鏈接,如果發(fā)現(xiàn)本地安裝了app,那么就跳轉(zhuǎn)到app而不是跳轉(zhuǎn)safari的網(wǎng)頁信息轧苫。這個時候需要用到ios9中的新個性:通用鏈接處理
說一下流程:
1.在自己的開發(fā)者賬號需要申請包含?Associated Domains
2.設(shè)置里配置響應(yīng)的域名(注意不要寫ip)
注意:添加的Domains 應(yīng)該以 applinks開頭光督,比如:applinks:mobile.amon.cn
添加完之后阳距,會在程序里自動生成一個.entitlements文件,
item0是第一個域名地址结借,item1是第二個域名地址(后邊的Value是創(chuàng)建的時候默認的名字筐摘,應(yīng)該填自己公司的域名)
3.代碼中接收來自其他外部url點擊,并且在 AppDelegate 里支持通用鏈接
實現(xiàn):?- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray *restorableObjects))restorationHandler方法船老,如下:
當(dāng) userActivity 是 NSUserActivityTypeBrowsingWeb 類型, 則意味著它已經(jīng)由通用鏈接 API 代理咖熟。這樣的話, 它保證用戶打開的 URL 將有一個非空的 webpageURL 屬性。
4.設(shè)置json柳畔,這些需要服務(wù)端去配置
{
??"applinks":?{
????"apps":?[],
????"details":?{
? ? ? ? “appID”: "公司開發(fā)者賬號的小組ID.包名id":?{
????????"paths":[?"*"]
??????}
????}
??}
}
appID是公司開發(fā)者賬號的小組id和包名id馍管,中間用.隔開
paths是在項目中的的.entitlements文件中域名后支持的路徑,*表示全路徑薪韩,download表示download路徑下的所有url都可以進入到app中打開确沸,其他的路徑是不允許使用的
json格式的文件是app第一次安裝,它會從?https://domain.com/apple-app-site-association?下載這個文件俘陷。
5.測試
需要測試該功能的時候罗捎,只需要在記事本或短信中輸入App能識別的鏈接,然后直接點擊或是長按就可以了拉盾,直接點的效果是跳轉(zhuǎn)到你的App桨菜,長按的效果是彈出的菜單中第二項是“在'XXX'中打開”,這也代表著成功捉偏。直接在Safari中輸入鏈接是無效的雷激,必須從一處跳入才可以(比如上一級網(wǎng)頁)
在開發(fā)這個功能的時候參考了很多資料替蔬,在這里附上鏈接
http://www.reibang.com/p/c2ca5b5f391f
歡迎關(guān)注我的公眾號,專注iOS開發(fā)屎暇、大前端開發(fā)承桥、跨平臺技術(shù)分享。