iOS-关于URL schema

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS-关于URL schema相关的知识,希望对你有一定的参考价值。

参考技术A URL schema用于其他 APP 或者浏览器启动此 APP 的标识

添加

在 URL Types 上添加一个 item

Identifier建议采用反转域名的方法保证该名字的唯一性,比如com.yourCompany.yourApp

URL Schemes理论上随便填什么都可以,比如iosDevApp

验证

在浏览器中输入iOSDevApp://,确认后就可以跳转到APP

疑问

试验下如果两个 APP 使用同一个URL Schemes,后一个注册URL Schemes的APP会被启动,APP安装后就会注册URL Schemes。

当使用第三方的平台分享或者登陆的时候,使用appkey作为URL Schemes的原理是什么,不可能说新浪需要注册N个URL Schemes提供给我们用。

案例

比如自定义的链接NSString *customURL = @"iOSDevTips://?token=123abct®istered=1";

- (BOOL)application:(UIApplication*)application openURL:(NSURL*)url

sourceApplication:(NSString*)sourceApplication annotation:(id)annotation



// Check the calling application Bundle ID

if([sourceApplication isEqualToString:@"com.xxx.xxxx"])



NSLog(@"Calling Application Bundle ID: %@", sourceApplication);

NSLog(@"URL scheme:%@", [url scheme]);

NSLog(@"URL query: %@", [url query]);

returnYES;



else

returnNO;



Calling Application Bundle ID: com.3Sixty.CallCustomURL

URL scheme:iOSDevTips

URL query: token=123abct®istered=1

比如一些蘑菇街,可以直接从网页上跳转到 APP 的相应页面,应该用的就是query来标识特定的页面,去请求相应的数据

应用内浏览器

测试网页:

iOS and Js

点击Click me here:的按钮跳转到 Native 的页面,需要实现以下方法

- (void)webView:(WKWebView *)webViewdecidePolicyForNavigationAction:(WKNavigationAction *)navigationActiondecisionHandler:(void(^)(WKNavigationActionPolicy))decisionHandler

if(webView != self.webView)

decisionHandler(WKNavigationActionPolicyAllow);



UIApplication *app = [UIApplication sharedApplication];

NSURL *url = navigationAction.request.URL;

if(!navigationAction.targetFrame)

if([appcanOpenURL:url])

[appopenURL:url];

decisionHandler(WKNavigationActionPolicyCancel);





if([url.schemeisEqualToString:@"shopman"])

if([appcanOpenURL:url])

[appopenURL:url];

decisionHandler(WKNavigationActionPolicyCancel);





decisionHandler(WKNavigationActionPolicyAllow);

以上是关于iOS-关于URL schema的主要内容,如果未能解决你的问题,请参考以下文章

关于iOS URL缓存机制原理解析

关于使用纯java获取http url请求返回的信息

关于HttpURLConnection/HttpsURLConnection请求出现了io.filenotfoundexception:url的解决方法

iOS9适配 之 关于info.plist 第三方登录 添加URL Schemes白名单

关于Spring

iOS9适配 之 关于info.plist 第三方登录 添加URL Schemes白名单