iOS--設置URL scheme用openUrl方法來打開另一個應用

最近項目中要用到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
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容