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,根据自己的需求设置,一定要有自己App的特点
4.设置URL Identifier
URL Identifier是自定义的 URL scheme 的名字,一般采用反转域名的方法保证该名字的唯一性,比如 com.Demo.www
如图所示:这些设置完成后,我们可以通过调用一个方法来检验之后的测试效果,如下:
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL*)url { // 接受传过来的参数 NSString *text = [[url host] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"打开了自己的DemoApp" message:text delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alertView show]; return YES; }
运行项目,然后关闭项目,然后在Safari中搜索刚才设置的URL Schemes,效果图如:iOSMyDemoApp://或iOSMyDemoApp://com.Demo.www
通过另一个APP启动注册了URL Schemes的APP
打开注册iOSDevTip的APP格式为: URL Scheme://URL identifier,直接调用URL Scheme也可打开程序, URL identifier是可选的。NSString *url = @"iOSMyDemoApp://"; // NSString *url = @"iOSMyDemoApp://com.Demo.www "; if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:url]]) { [[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]]; } else { NSLog(@"can not open URL scheme iOSDevTip"); }