如果我們想更清楚地了解URL方案電話,我們需要了解以下概念:
這種比較就很容易理解URL Scheme的真正含義了。就是在iOS系統中定位相應的App,然後進行相應的操作。復雜的URL方案也可以傳遞參數。
所以說了這麽多,有壹種跳轉方式既能滿足跳轉的動態要求,又能靈活傳遞參數。這種方式就是使用URL方案進行動態跳轉。這也是非常推薦的使用方法。而且在組件開發的壹些嘗試中,這種跳轉模式也帶來了很多便利。
第三方應用可以通過向自己發送URL方案請求來證明自己沒有被劫持,如果沒有收到自己的URL方案,可以及時向用戶發送提醒;②使用MobileCoreServices服務中的Application Savailable for HandlingurlScheme()檢查所有註冊了URL方案的應用程序和處理序列,從而檢測自己或他人的URL方案是否被劫持。
註冊自定義URL方案有兩種方式。
這兩種報名方式本質上是壹樣的,只是地點不同。
我們需要在APPdelegate中實現相應的代理方法:
iOS 9.0以下
-(BOOL)application:(ui application *)application openURL:(NSURL *)URL source application:(ns string *)source application annotation:(id)annotation
IOS 9.0或以上
-(BOOL)application:(ui application *)application openURL:(NSURL *)URL source application:(ns string *)source application annotation:(id)annotation;
讓我們通過Safari來驗證壹下:
在應用程序中調用URL方案需要以下方法:
在iOS10.0下使用此方法:
-(BOOL)openURL:(NSURL *)URL NS _ DEPRECATED _ IOS(2 _ 0,10_0,"請使用openURL:options:completion handler:instead ")NS _ EXTENSION _ UNAVAILABLE _ IOS(" ");
在iOS10.0上使用此方法:
- (void)openURL:(NSURL*)url選項:(NSDictionary & ltUIApplicationOpenExternalURLOptionsKey,id & gt*)options completion handler:(void(^ _ _可空)(BOOL成功))completion ns _ available _ IOs(10 _ 0)ns _ extension _ unavailable _ IOs(" ");
還有壹種方法可以判斷對應的URL方案是否存在,這種方法壹般與上述方法壹起使用:
-(BOOL)canOpenURL:(NSURL *)URL NS _ AVAILABLE _ IOS(3 _ 0);
我們來驗證壹下: