URL Scheme的作用是应用间调用

URL Scheme的作用

我们都知道苹果手机中的APP都有一个沙盒,APP就是一个信息孤岛,相互是不可以进行通信的。但是iOS的APP可以注册自己的URL Scheme,URL Scheme是为方便app之间互相调用而设计的。我们可以通过系统的OpenURL来打开该app,并可以传递一些参数。

例如:你在Safari里输入www.alipay.com,就可以直接打开你的支付宝app,前提是你的手机装了支付宝。如果你没有装支付宝,应该显示的是支付宝下载界面,点击会跳到AppStore的支付宝下载界面。

URL Scheme必须能唯一标识一个APP,如果你设置的URL Scheme与别的APP的URL Scheme冲突时,你的APP不一定会被启动起来。因为当你的APP在安装的时候,系统里面已经注册了你的URL Scheme。

一般情况下,是会调用先安装的app。但是iOS的系统app的URL Scheme肯定是最高的。所以我们定义URL Scheme的时候,尽量避开系统app已经定义过的URL Scheme。

注册URL Scheme

1.在info.plist里添加URL types

每一个项目里面都会有一个info.plist配置文件。找到info.plist,右键选择Add Row,然后选择URL types。如图所示:

2.添加URL Schemes

添加完URL types,点击展开。右键选择Add Row,添加URL Schemes:

3.设置URL Schemes

设置URL Schemes为iOSDevTip

4.设置URL Identifier

URL Identifier是自定义的 URL scheme 的名字,一般采用反转域名的方法保证该名字的唯一性,比如 com.iOSStrongDemo.www

添加成功启动提示

为了方便测试,我们在AppDelegate里面添加一个UIAlertView,当app被成功打开时,会提出提示:

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL*)url
{
    // 接受传过来的参数
    NSString *text = [[url host] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"打开啦"
                                           message:text
                                          delegate:nil
                                 cancelButtonTitle:@"OK"
                                 otherButtonTitles:nil];
    [alertView show];
    return YES;
}

Safari启动自定义的URL Schemes APP

既然已经配置好URL Schemes,那么我们可以来款速测试一下,我们设置的URL Schemes是否有效。打开Safari,在地址栏里输入:iOSDevTip://

果然成功打开:

也可以在地址栏中输入:iOSDevTip://com.iOSStrongDemo.www。也是可以打开注册了URL Schemes的APP的。

通过另一个APP启动注册了URL Schemes的APP

 NSString *url = @"iOSDevTip://";
//    NSString *url = @"iOSDevTip://com.iOSStrongDemo.www";
if ([[UIApplication sharedApplication]
     canOpenURL:[NSURL URLWithString:url]])
{
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]];
}
else
{
    NSLog(@"can not open URL scheme iOSDevTip");
}

打开注册iOSDevTip的APP格式为: URL Scheme://URL identifier,直接调用URL Scheme也可打开程序, URL identifier是可选的。

注册URL Scheme就是这么简单。下一篇会分享如何通过URL Scheme传递参数。demo下载地址:https://github.com/worldligang/iOSStrongDemo

Posted by 李刚 Jul 14th, 2015 11:34 pm  ios开发 
来源:刚刚在线(微信:iOSDevTip),欢迎分享本文,转载请保留出处! 
原文链接:http://www.superqq.com/blog/2015/07/14/xcode6-dot-4zhu-ce-url-schemebu-zou-xiang-jie/

时间: 2024-12-25 16:10:38

URL Scheme的作用是应用间调用的相关文章

Xcode6.4注册URL Scheme步骤详解

URL Scheme的作用 我们都知道苹果手机中的APP都有一个沙盒,APP就是一个信息孤岛,相互是不可以进行通信的.但是iOS的APP可以注册自己的URL Scheme,URL Scheme是为方便app之间互相调用而设计的.我们可以通过系统的OpenURL来打开该app,并可以传递一些参数. 例如:你在Safari里输入www.alipay.com,就可以直接打开你的支付宝app,前提是你的手机装了支付宝.如果你没有装支付宝,应该显示的是支付宝下载界面,点击会跳到AppStore的支付宝下载

iOS 自定义 URL Scheme 完全指南

http://www.cocoachina.com/industry/20140522/8514.html “” 阅读器 自定义URL Scheme 本文转自Migrant的博客,原文:<The Complete Tutorial on iOS/iPhone Custom URL Schemes> iPhone / iOS SDK 最酷的特性之一就是应用将其自身”绑定”到一个自定义 URL scheme 上,该 scheme 用于从浏览器或其他应用中启动本应用. 注册自定义 URL Schem

iOS程序间使用URL scheme通信

由于iOS的沙盒机制,程序之间通信受到限制,还好iOS可以很方便的注册自己程序的 URL scheme,因此可以通过打开特定的URL scheme来实现程序间通信传递参数. 1.新建A程序,并注册 URL scheme: 在程序的 Info.plist 添加一个 URL types 节点就可以了.注意结构体顺序不要搞乱 ,因为我之前结构体顺序不对,一直跳转不成功. 这样就注册好了scheme. 2.新建B程序,然后在B中打开A. 我们可以看到通过点击这个按钮之后,就跳转到A去了.(同理:当你的程

iOS App 自定义 URL Scheme 设计(转自COCOACHINA)

在 iOS 里,程序之间都是相互隔离,目前并没有一个有效的方式来做程序间通信,幸好 iOS 程序可以很方便的注册自己的 URL Scheme,这样就可以通过打开特定 URL 的方式来传递参数给另外一个程序. 例如在 iPad 上浏览网页,并且 iPad 已经安装了 淘宝 HD,那么就打开下面这个链接就会在淘宝 HD 中查看这个商品的详细信息,也可以方便的使用淘宝 HD 进行购买.收藏等操作. 在淘宝 HD 中查看商品“2012西藏卓明谷方舟登舰卡(船票)” 当然,如果你在 Mac OS X 中打

ios 自定义URL Scheme 设计

在 iOS 里,程序之间都是相互隔离,目前并没有一个有效的方式来做程序间通信,幸好 iOS 程序可以很方便的注册自己的 URL Scheme,这样就可以通过打开特定 URL 的方式来传递参数给另外一个程序. 例如在 iPad 上浏览网页,并且 iPad 已经安装了 淘宝 HD,那么就打开下面这个链接就会在淘宝 HD 中查看这个商品的详细信息,也可以方便的使用淘宝 HD 进行购买.收藏等操作. 在淘宝 HD 中查看商品"2012西藏卓明谷方舟登舰卡(船票)" 当然,如果你在 Mac OS

IOS应用程序的跳转和URL Scheme的使用

第一:什么是URL Scheme 与Android的URL Scheme类似,是为方便app之间互相调用而设计的.你可以通过一个类似URL的链接,通过系统的OpenURl来打开该app,并可以传递一些参数.每个URL必须能唯一标识一个APP,如果你设置的URL与别的APP的URL冲突,此时,你的APP不一定会被调用起来,原因是当APP在安装的时候就已经在系统里面注册了此APP的URL Scheme,如果你的一致但是是后安装的,那么系统不会调用你的APP,因为你的APP设置的URL scheme被

Android Studio 第六十四期 - Android业务组件化之URL Scheme使用

什么是 URL Scheme? android中的scheme是一种页面内跳转协议,是一种非常好的实现机制,通过定义自己的scheme协议,可以非常方便跳转app中的各个页面:通过scheme协议,服务器可以定制化告诉App跳转那个页面,可以通过通知栏消息定制化跳转页面,可以通过H5页面跳转页面等. URL Scheme应用场景: 客户端应用可以向操作系统注册一个 URL scheme,该 scheme 用于从浏览器或其他应用中启动本应用.通过指定的 URL 字段,可以让应用在被调起后直接打开某

通过注册的URL Scheme向目标APP传递参数

通过注册的URL Scheme向目标APP传递参数 通过URL Scheme启动APP很简单就可以做到,但有时候我们想在启动APP的时候传递一些参数,这个时候我们就可以通过URL Scheme自定义URL来传递参数了. 昨天我们在AppDelegate调用了UIApplicationDelegate的代理方法: - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL*)url { // 接受传过来的参数 NSSt

IOS之URL Scheme的使用

本文转载自(下载示例代码请打开第一个链接): http://www.cocoachina.com/industry/20140522/8514.html http://blog.csdn.net/wbw1985/article/details/26264029 1 URL Scheme是什么 与Android的URL Scheme类似,是为方便app之间互相调用而设计的.你可以通过一个类似URL的链接,通过系统的OpenURL来打开该app,并可以传递一些参数.每个URL必须能唯一标识一个APP