最近項目中要用到URL scheme,首先就搜索相關資料,看了幾篇文章,自己也建了demo演示了下,發現網上寫的有點問題,所以寫下這文章來總結下.這里不寫概念,只寫具體操作,想了解概念的自己搜其他文章來了解
一: 起名
- 我的應用 - <小羊>,URL scheme為xiaoyang
- 別人的應用 - <微信>,URL scheme為weixin
二: 想要達到的目的:應用<小羊>跳轉到應用<微信>
- 新建工程1,名稱叫
小羊
,先在主界面中添加一個按鈕,只需要寫以下這幾行代碼,無需
其他任何操作:
- 注意:url為需要跳轉到的應用的URL scheme + ://,也就是
weixin://
#pragma mark - 點擊跳轉到微信
- (IBAction)turnToWeixin:(id)sender {
NSURL *url = [NSURL URLWithString:@"weixin://"];
[[UIApplication sharedApplication] openURL:url];
}
- 新建工程2,名稱叫
微信
,只需要配置一下URL scheme就行了,無需
其他任何操作:(相當于自己給自己起了個名字,告訴別人, 你要想跳到我這里, 你通過這個URL scheme就可以了,從上面的起名中可以知道微信
的URL scheme為weixin)
- 注意: 這里不需要加上
://
配置URL scheme.png
三: 準備工作完畢,運行看效果了,是不是很簡單
app間跳轉.gif
四: 完善及適配iOS9
- 估計有朋友注意到在按鈕點擊事件里寫的代碼邏輯不嚴謹,應該要先判斷下是否能打開那個URL,代碼如下:
#pragma mark - 點擊跳轉到微信
- (IBAction)turnToWeixin:(id)sender {
NSURL *url = [NSURL URLWithString:@"weixin://"];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
[[UIApplication sharedApplication] openURL:url];
}
}
- 如果是iOS9之前在加上這個判斷是無需其他任何操作的,如果是需要適配iOS9及以上的話就需要配置一下白名單,告訴程序,我可以跳到別的應用里,這里的例子就是,在
小羊
這個程序里配置一下白名單, 把微信
的URL scheme添加到白名單中.如果沒有配置的話,就會跳轉失敗,報錯如下所示:
未添加白名單報錯.png
- 添加白名單很簡單,增加一個Key: LSApplicationQueriesSchemes Type為數組:如下
Snip20161204_3.png
先暫時寫這么多, 有時間會完善以下兩點:
五:利用URL scheme跳轉到指定頁面
六:分享到朋友圈或者其他平臺的信息, 用戶點擊后, 如果安裝了應用就提醒是否在**應用
中打開,沒有安裝就跳轉到App store中下載安裝
- 目前從我們自己的app內分享到微信的內容,當用戶點擊后是無法做到跳轉回到我們自己應用的具體頁面.可能有些同學會問, 為什么像京東呀一些應用可以做到?暫且不說騰訊有入股京東, 就拿京東在應用寶上的應用評級是S級應用來說.因為微信在微信內跳轉有限制, 只要是在應用寶上的應用評級低于S級的都是不能跳轉的,只能夠跳轉到應用寶的下載頁面在跳轉到App Store