美文网首页
自定义URL Scheme启动应用

自定义URL Scheme启动应用

作者: ldldlkdldld | 来源:发表于2016-03-10 15:11 被阅读591次

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

    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应用场景

    • 从一个应用中打开另外一个应用
    • 产品H5页面通过URL Scheme打开Native应用,并可传递参数,从而带来更好的交互体验(H5与Native通信)

    相关文章

      网友评论

          本文标题:自定义URL Scheme启动应用

          本文链接:https://www.haomeiwen.com/subject/unytlttx.html