iOS URL Scheme
一、簡單使用
URL Scheme是能讓其它APP通過連接來訪問你的APP的一個比較特殊的URL。
在項目 > TARGETS > info > URL Types 設置你的APP URL Scheme如下圖:
然后在瀏覽器中輸入連接mytestapp:// 搜索就會進入AppDelegate的代理方法(iOS 9.0+)
也可以設置參數:mytestapp://aa?key=value
以上通過safari瀏覽器調用起我們的APP,但在實際開發其它APP如果想通過URL Scheme調用起這個APP需要額外設置該APP的URL Scheme白名單(具體看第二部分內容)。比如這時另外創建一個項目通過以下方法調用時會出現如下圖中的錯誤:
NSURL *url = [NSURL URLWithString:@"mytestapp://aa?key=value"]; if ([[UIApplication sharedApplication] canOpenURL:url]) {if (@available(iOS 10.0, *)) {[[UIApplication sharedApplication] openURL:url options:@{} completionHandler:nil];} else {[[UIApplication sharedApplication] openURL:url];} }這新項目info.plist文件中添加之前APP的 scheme 白名單就可以正常跳轉了:
<key>LSApplicationQueriesSchemes</key> <array><string>mytestapp</string> </array>二、URL Scheme白名單設置
當你的APP要調用其它APP時,你需要給這些APP設置對應的URL Scheme白名單。
問題描述:
在iOS9下涉及到平臺客戶端跳轉,系統會自動到項目info.plist下檢測是否設置平臺Scheme。對于需要配置的平臺,如果沒有配置,就無法正常跳轉平臺客戶端。
應用場景:
支持客戶端的分享和授權,跳轉三方地圖導航等需要配置Scheme白名單。
具體方法:
1、在項目的info.plist中添加LSApplicationQueriesSchemes,類型為數組。
2、然后給它添加需要支持的項目,類型為字符串類型。
注意:
1、在iOS9中,如果沒有添加需要的Scheme白名單,系統會打印類似如下提示:
-canOpenURL: failed for URL: "baidumap://" - error: "This app is not allowed to query for scheme baidumap" -canOpenURL: failed for URL: "iosamap://" - error: "This app is not allowed to query for scheme iosamap" -canOpenURL: failed for URL: "qqmap://" - error: "This app is not allowed to query for scheme qqmap"(也說明了客戶端中使用了-canOpenURL:方法)
2、如果添加了需要的Scheme白名單,系統依然會打印類似如下信息,說明你的手機未安裝對應的APP。
-canOpenURL: failed for URL: "baidumap://" - error: "未能完成操作。(“OSStatus”錯誤 -10814。)" -canOpenURL: failed for URL: "qqmap://" - error: "未能完成操作。(“OSStatus”錯誤 -10814。)"3、上面兩點是客戶端需要打開三方地圖導航的例子,在分享、授權操作中也是,在一些接入文檔中也是說明得很詳細。
Defining a Custom URL Scheme for Your App
友盟分享集成
總結
以上是生活随笔為你收集整理的iOS URL Scheme的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【平差软件学习---科傻】三、平面导线平
- 下一篇: 【模板】普通平衡树,洛谷P3369,sp