iOS功能点APP & program

iOS中使用Scheme实现不同App之间的跳转

2022-05-08  本文已影响0人  心中有光啊

Scheme的理解

我们都知道,苹果系统使用沙盒机制来保障用户的隐私和安全,一个App只能访问自己的沙盒,不能访问其他app的信息。这样保证了app的用户的信息的同时,也阻碍了不同的App 之间的信息交流。所以苹果提供了一个可以在App之间跳转的方法:URL Scheme。一个App可以设置自己的URL Scheme,另外的App可以使用这个URL Scheme,然后通过系统的OpenURL来打开该App。就像网页一样,通过一个网址来跳转到另一个网址。

URL的样式

protocol://hostname[:port]/path/[;parameters][?query]#fragment

举例如下:
shemeUseApp://ipOrYuming:8080/path?param1=xxx&param2=yyy

设置Scheme的注意点

  1. URL Scheme必须能唯一标识一个APP。
    • 如果你设置的URL Scheme与别的APP的URL Scheme冲突时,你的APP不一定会被启动起来。

注册URL Scheme

  1. 打开工程,点击项目名称,找到info条目,在info条目下,找到URL Types

    未添加URL Types.png
  2. URL Types处点击“+”号,新增一个URLTypes,然后填写identifierURL Schemes.

    • identifier:URL Identifier是自定义的 URL scheme 的名字,一般采用反转域名的方法保证该名字的唯一性。例如:com.xxxx.schemeUse
    • URL Schemes:为自己的app定义的schemes。使用另外的app调起自己的app时,使用这个参数,其格式为:schemeUseApp://
      添加URL Types.png

验证App的调起

使用上述所说的schemeUseApp://在浏览器中进行测试。本文使用的是模拟器,在浏览器中输入schemeUseApp://,点击搜索。

  1. 如果手机上没有还没有安装app,是找不到的,safari提示的时候是以网址的形式进行提醒,“Safari浏览器打不开该网页,因为网址无效。”


    未安装App的情况.png
  1. 手机上已经安装了App的情况下,是可能正常调起。


    已安装App的情况.png

不同应用之间,带参数的跳转

在跳转的 URL scheme中可以添加参数,比如:shemeUseApp://ipOrYuming:8080/path?param1=xxx&param2=yyy
在工程的AppDelegate.m文件中,重写方法- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options,并在方法中进行URL的分析拆解,就可以得到相关的参数。

Appdelegate添加URL处理.png
其程序表现如下:
带参数URL跳转.png
AppDelegation.m中的openURL方法中的打印结果为:
2022-05-09 15:04:35.544398+0800 schemeUse[6268:326999] url : shemeuseapp://ipOrYuming:8080/path?param1=xxx&param2=yyy
2022-05-09 15:04:35.544524+0800 schemeUse[6268:326999] URL scheme:shemeuseapp
2022-05-09 15:04:35.544580+0800 schemeUse[6268:326999] URL host: ipOrYuming
2022-05-09 15:04:35.544632+0800 schemeUse[6268:326999] URL port: 8080
2022-05-09 15:04:35.544695+0800 schemeUse[6268:326999] URL path: /path
2022-05-09 15:04:35.544739+0800 schemeUse[6268:326999] URL query: param1=xxx&param2=yyy
上一篇 下一篇

猜你喜欢

热点阅读