【问题标题】:Custom URL Scheme Parameters自定义 URL 方案参数
【发布时间】:2014-10-07 23:37:24
【问题描述】:

在为我的应用定义自定义 URL 方案时,我需要了解以下 3 个键:

  1. CFBundleTypeRole 又名文档角色
  2. CFBundleURLName 又名 URL 标识符
  3. CFBundleURLSchemes a.k.a. URL Schemes

我可以看到,如果我只是将 CFBundleURLSchemes 定义为 myapp,那么应用程序可以正常启动,并且 URL 为 myapp://。 问题是:

  1. 那里的 URL 标识符是否只是为了使我的方案唯一?如何 它这样做吗?如果我在 2 个应用程序中定义了相同的方案 myapp,我调用 myapp:// 我可以通过调用myapp://<URL Identifier> 指定我想调用哪一个吗? 编辑: 这个 URL 标识符实际上是做什么的?它只给url命名吗?它是如何使用的?
  2. 角色定义权限级别,即 None, Viewer or Editor,我不确定我的权限级别 应用程序已在启动的应用程序上,因为我没有定义任何东西。我会 想知道什么是默认权限 CFBundleTypeRole 未定义。

【问题讨论】:

    标签: ios objective-c cocoa-touch core-foundation url-scheme


    【解决方案1】:

    广告 1)

    根据Apple documentation,他们没有提供太多关于标识符以及为什么需要它或在哪里使用它的信息。他们只说它应该是独一无二的。

    此外,如果多个应用指定相同的 url 方案,则结果是不可预测的。

    URL identifier and URL scheme

    广告 2)

    iOS 不使用 Role 标志。

    In Xcode, under Info tab, what's Role for in URL Types section?

    【讨论】:

      【解决方案2】:

      转1:

      不保证协议是唯一的。您无法定义将打开 app1 或 app2 的参数。如果两个应用程序使用相同的方案,则不确定会发生什么

      到2:

      这个角色在很大程度上是无关紧要的,但是强制

      • editor = 已启动,因为它们可以读写由相同标识的文件
      • 查看者 = 只能阅读和显示

      【讨论】:

      • 对于文档类型恕我直言,角色更重要
      • 但是当我没有在Role中定义任何东西时,默认的角色是什么?
      • docs:“此密钥是必需的。” -- 读作:没有默认值,因为需要。
      • 正如我所说,我可以在不指定密钥的情况下启动我的应用程序。虽然它声明是必需的。
      • 我猜它现在是安全的,但尽快:改变它