iOS URL Scheme
一、簡單使用
URL Scheme是能讓其它APP通過連接來訪問你的APP的一個比較特殊的URL。
在項目 > TARGETS > info > URL Types 設(shè)置你的APP URL Scheme如下圖:
然后在瀏覽器中輸入連接mytestapp:// 搜索就會進(jìn)入AppDelegate的代理方法(iOS 9.0+)
也可以設(shè)置參數(shù):mytestapp://aa?key=value
以上通過safari瀏覽器調(diào)用起我們的APP,但在實際開發(fā)其它APP如果想通過URL Scheme調(diào)用起這個APP需要額外設(shè)置該APP的URL Scheme白名單(具體看第二部分內(nèi)容)。比如這時另外創(chuàng)建一個項目通過以下方法調(diào)用時會出現(xiàn)如下圖中的錯誤:
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 白名單就可以正常跳轉(zhuǎn)了:
<key>LSApplicationQueriesSchemes</key> <array><string>mytestapp</string> </array>二、URL Scheme白名單設(shè)置
當(dāng)你的APP要調(diào)用其它APP時,你需要給這些APP設(shè)置對應(yīng)的URL Scheme白名單。
問題描述:
在iOS9下涉及到平臺客戶端跳轉(zhuǎn),系統(tǒng)會自動到項目info.plist下檢測是否設(shè)置平臺Scheme。對于需要配置的平臺,如果沒有配置,就無法正常跳轉(zhuǎn)平臺客戶端。
應(yīng)用場景:
支持客戶端的分享和授權(quán),跳轉(zhuǎn)三方地圖導(dǎo)航等需要配置Scheme白名單。
具體方法:
1、在項目的info.plist中添加LSApplicationQueriesSchemes,類型為數(shù)組。
2、然后給它添加需要支持的項目,類型為字符串類型。
注意:
1、在iOS9中,如果沒有添加需要的Scheme白名單,系統(tǒng)會打印類似如下提示:
-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白名單,系統(tǒng)依然會打印類似如下信息,說明你的手機(jī)未安裝對應(yīng)的APP。
-canOpenURL: failed for URL: "baidumap://" - error: "未能完成操作。(“OSStatus”錯誤 -10814。)" -canOpenURL: failed for URL: "qqmap://" - error: "未能完成操作。(“OSStatus”錯誤 -10814。)"3、上面兩點是客戶端需要打開三方地圖導(dǎo)航的例子,在分享、授權(quán)操作中也是,在一些接入文檔中也是說明得很詳細(xì)。
Defining a Custom URL Scheme for Your App
友盟分享集成
總結(jié)
以上是生活随笔為你收集整理的iOS URL Scheme的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【平差软件学习---科傻】三、平面导线平
- 下一篇: Android 桌面插件