iOS-关于URL schema

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:Jump to Baidu

点击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开发,会经常遇到打开其他的APP的功能。本篇文章讲的就是打开别人的APP的一些知识。我们的目...
    橙娃阅读 11,605评论 0 5
  • 项目演示 URL Scheme是什么 由于苹果的app都是在沙盒中,相互是不能访问数据的。但是苹果还是给出了一个可...
    Mob移动开发者服务平台阅读 6,215评论 3 3
  • “知识改变命运,习惯成就人生。”广阔的知识海洋,写满了我对过去的回忆,铭刻了我对未来的遐思,是它让我成长,是它...
    談笑風昇阅读 3,047评论 6 9
  • 1. 作用域 let关键字:引入let的原因正是var的局限性. 相比于var,let有以下几点优势: 作用域va...
    金桔柠檬加冰阅读 5,527评论 0 2
  • 1 天上白云朵朵, 地里花儿绽放。 远处绿树葱茏, 近来芳草萋萋。 2 春风来往不招呼, 衣袖飘扬千里白。 阳光沐...
    枫桥下的光阅读 1,469评论 0 6