对Url Schemes的简单了解
Url Schemes應(yīng)用之間跳轉(zhuǎn)
url schemes在app中使用范圍很廣,比如:支付,分享,app之間互相跳轉(zhuǎn),app打開系統(tǒng)設(shè)置,撥打電話,發(fā)送短信等
- 使用這么頻繁的話,那么url schemes究竟該怎么用?
最主要的就是openURL: options: completionHandler:這個方法
在iOS10之前調(diào)用的是openURL:這個方法,如果app兼容iOS10以下的話需要進(jìn)行系統(tǒng)版本判斷
- 如何配置app之間跳轉(zhuǎn)url schemes?
第一個url types是我們自身app的identifier和url schemes
第二個是我們需要跳轉(zhuǎn)到的app的配置,如果不設(shè)置將跳轉(zhuǎn)不了鏈接
通過這張圖片我們有些問題:
- identifier是什么?
The identifier you supply with your scheme distinguishes your app from others that might declare support for the same scheme. To ensure uniqueness, specify a reverse DNS string that incorporates your company’s domain name and app name.
您的方案提供的標(biāo)識符將您的應(yīng)用程序與其他可能支持同一方案的應(yīng)用程序區(qū)分開來。為了確保唯一性,指定一個包含您公司域名和應(yīng)用程序名稱的反向DNS字符串。
- url schemes是什么?
url schemes是我們app需要跳轉(zhuǎn)到目的app,目的app給的回調(diào)路徑,比如跳轉(zhuǎn)其它頁面,拷貝app字符串打開詞典等檢測app能否進(jìn)行目的app對應(yīng)規(guī)則的回調(diào)(類似目的app打開當(dāng)前app這樣的過程)
- 支付寶沒有我們的url schemes為什么也能返回我們的app?
在我們配置支付寶的url schemes的時候identifier的時候會把identifier寫成alipay,url schemes寫成ap+appid, 支付寶可以通過這個appid返回到我們的app
- role是什么?
URL schemes offer a potential attack vector into your app, so validate all URL parameters and discard any malformed URLs. It is also recommended that you limit the available actions to those that do not risk the user’s data. For example, do not allow other apps to delete content or access sensitive information about the user. Thoroughly test your URL handling code, and make sure your test cases include improperly formatted URLs.
也就是說通過設(shè)置role可以賦予其它app對你app進(jìn)行操作的權(quán)限. 如果微信的app把role設(shè)置為None我們就不能對微信進(jìn)行分享功能,viewer表示只可對app進(jìn)行查看不能操作app, editor為可讀寫操作,設(shè)置這個之后三方軟件就可以調(diào)起微信分享功能.
跳轉(zhuǎn)鏈接的則是需要傳遞的url,如果調(diào)用系統(tǒng)設(shè)置的話比較簡單,不需要進(jìn)行其它配置
- 常用跳轉(zhuǎn)鏈接
tips:跳轉(zhuǎn)鏈接不生效可能因為app沒有當(dāng)前權(quán)限,比如說app中沒有用到定位服務(wù),在打開定位url的時候不會跳轉(zhuǎn)到定位的偏好設(shè)置頁面
| WIFI | App-Prefs:root=WIFI |
| Bluetooth | App-Prefs:root=Bluetooth |
| 蜂窩移動網(wǎng)絡(luò) | App-Prefs:root=MOBILE_DATA_SETTINGS_ID |
| 個人熱點 | App-Prefs:root=INTERNET_TETHERING |
| 定位服務(wù) | App-Prefs:root=Privacy&path=LOCATION |
| 鍵盤 | App-Prefs:root=General&path=Keyboard |
| 語言和地區(qū) | App-Prefs:root=General&path=INTERNATIONAL |
| 隱私 | App-Prefs:root=Privacy |
| 照相與相機(jī) | App-Prefs:root=Photos |
| 電池電量 | App-Prefs:root=BATTERY_USAGE |
| 存儲空間 | Prefs:root=General&path=STORAGE_ICLOUD_USAGE/DEVICE_STORAGE |
| 打10086 | tel://10086 |
| App Store | itms-apps:// |
| 地圖 | maps:// |
| 信息 | sms:// |
| 郵箱 | mailto:// |
| 常用app跳轉(zhuǎn) | url schemes可能不對(原因:文章最后有解釋) |
| mqq:// | |
| 微信 | weixin:// |
| 淘寶 | taobao:// |
| 支付寶 | alipay:// |
| 新浪微博 | sinaweibo:// |
| 知乎 | zhihu:// |
結(jié)尾:如果你的應(yīng)用使用了如SSO授權(quán)登錄或跳轉(zhuǎn)到第三方分享功能,在iOS9/10下就需要增加一個可跳轉(zhuǎn)的白名單,即LSApplicationQueriesSchemes,否則將在SDK判斷是否跳轉(zhuǎn)時用到的canOpenURL時返回NO,進(jìn)而只進(jìn)行webview授權(quán)或授權(quán)/分享失敗。在項目中的info.plist中加入應(yīng)用白名單,右鍵info.plist選擇source code打開(plist具體設(shè)置在Build Setting -> Packaging -> Info.plist File可獲取plist路徑)請根據(jù)選擇的平臺進(jìn)行設(shè)置
如果那里不對希望能給予指正,多謝大佬不吝賜教
總結(jié)
以上是生活随笔為你收集整理的对Url Schemes的简单了解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《梦断代码》阅读笔记Ⅱ
- 下一篇: 手机定位App从想法到上线运营(1)--