自定义URL Scheme启动应用

2016-03-10  本文已影响591人  ldldlkdldld

在使用手机时,经常会出现一种场景,当点击某个链接时,会启动已经安装的某个应用来完成接下来的流程。比如当点击网页中一个淘宝的购物链接时,如果手机安装了淘宝客户端,便会导致客户端被唤醒。

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:中设置断点,可以观察到如下信息:

iOS URL Scheme传参示例

此时通过解析query字段,应用便可获取外部应用传入的参数。

URL Scheme应用场景

上一篇下一篇

猜你喜欢

热点阅读