在使用手机时,经常会出现一种场景,当点击某个链接时,会启动已经安装的某个应用来完成接下来的流程。比如当点击网页中一个淘宝的购物链接时,如果手机安装了淘宝客户端,便会导致客户端被唤醒。
iOS中可以通过自定义URL Scheme机制来实现这种跳转,从而带来更好的用户体验。
基本实现方式
URL Scheme跳转机制非常简单,只需要修改info.plist增加一个键值即可。
URL Scheme设置方法按图中的方式创建URL Scheme,在属性字典中添加了一个URL types键值对,设置内容可以参考图中的设置方式。现在以xml文件方式打开info.plist文件,可以看出对应的信息如下:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>usd</string>
<string>urlsd</string>
</array>
</dict>
</array>
完成上述操作后,在模拟器或真机上启动应用,然后打开safari,在地址栏中输入usd://
或urlsd://
,系统会弹出提示框,提示是否跳转到应用,如果点击确认,便会跳到自己的应用。
通过URL传递参数
只要URL的scheme与应用中定义的scheme相同,便可以从外部(比如safari)打开应用。当应用打开时,该应用的方法- application:handleOpenURL:
会被调用,而在该方法中能够获取到完整的URL,因此外部应用能够通过URL向被打开的应用传递参数。
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
NSLog(@"%@: url is: %@", self.class, url);
return YES;
}
下图为一个http协议的URL,其scheme为http。
URL Structure
比如本例中在浏览器中输入usd://scheme.demo/dir/redirect?sku=123&lang=en
,此时应用会被打开。在方法- application:handleOpenURL:
中设置断点,可以观察到如下信息:
此时通过解析query
字段,应用便可获取外部应用传入的参数。
URL Scheme应用场景
- 从一个应用中打开另外一个应用
- 产品H5页面通过URL Scheme打开Native应用,并可传递参数,从而带来更好的交互体验(H5与Native通信)
网友评论