对Url Schemes的简单了解
Url Schemes應用之間跳轉
url schemes在app中使用范圍很廣,比如:支付,分享,app之間互相跳轉,app打開系統設置,撥打電話,發送短信等
- 使用這么頻繁的話,那么url schemes究竟該怎么用?
最主要的就是openURL: options: completionHandler:這個方法
在iOS10之前調用的是openURL:這個方法,如果app兼容iOS10以下的話需要進行系統版本判斷
- 如何配置app之間跳轉url schemes?
第一個url types是我們自身app的identifier和url schemes
第二個是我們需要跳轉到的app的配置,如果不設置將跳轉不了鏈接
通過這張圖片我們有些問題:
- 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.
您的方案提供的標識符將您的應用程序與其他可能支持同一方案的應用程序區分開來。為了確保唯一性,指定一個包含您公司域名和應用程序名稱的反向DNS字符串。
- url schemes是什么?
url schemes是我們app需要跳轉到目的app,目的app給的回調路徑,比如跳轉其它頁面,拷貝app字符串打開詞典等檢測app能否進行目的app對應規則的回調(類似目的app打開當前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.
也就是說通過設置role可以賦予其它app對你app進行操作的權限. 如果微信的app把role設置為None我們就不能對微信進行分享功能,viewer表示只可對app進行查看不能操作app, editor為可讀寫操作,設置這個之后三方軟件就可以調起微信分享功能.
跳轉鏈接的則是需要傳遞的url,如果調用系統設置的話比較簡單,不需要進行其它配置
- 常用跳轉鏈接
tips:跳轉鏈接不生效可能因為app沒有當前權限,比如說app中沒有用到定位服務,在打開定位url的時候不會跳轉到定位的偏好設置頁面
| WIFI | App-Prefs:root=WIFI |
| Bluetooth | App-Prefs:root=Bluetooth |
| 蜂窩移動網絡 | App-Prefs:root=MOBILE_DATA_SETTINGS_ID |
| 個人熱點 | App-Prefs:root=INTERNET_TETHERING |
| 定位服務 | App-Prefs:root=Privacy&path=LOCATION |
| 鍵盤 | App-Prefs:root=General&path=Keyboard |
| 語言和地區 | App-Prefs:root=General&path=INTERNATIONAL |
| 隱私 | App-Prefs:root=Privacy |
| 照相與相機 | 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跳轉 | url schemes可能不對(原因:文章最后有解釋) |
| mqq:// | |
| 微信 | weixin:// |
| 淘寶 | taobao:// |
| 支付寶 | alipay:// |
| 新浪微博 | sinaweibo:// |
| 知乎 | zhihu:// |
結尾:如果你的應用使用了如SSO授權登錄或跳轉到第三方分享功能,在iOS9/10下就需要增加一個可跳轉的白名單,即LSApplicationQueriesSchemes,否則將在SDK判斷是否跳轉時用到的canOpenURL時返回NO,進而只進行webview授權或授權/分享失敗。在項目中的info.plist中加入應用白名單,右鍵info.plist選擇source code打開(plist具體設置在Build Setting -> Packaging -> Info.plist File可獲取plist路徑)請根據選擇的平臺進行設置
如果那里不對希望能給予指正,多謝大佬不吝賜教
總結
以上是生活随笔為你收集整理的对Url Schemes的简单了解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《梦断代码》阅读笔记Ⅱ
- 下一篇: Android如何实现TCP和UDP传输