【问题标题】:Open in "(null)"? dialog in iOS 9在“(空)”中打开? iOS 9 中的对话框
【发布时间】:2016-06-28 18:23:12
【问题描述】:

所以我正在尝试向我的应用添加自定义 URL 方案。一切正常。令人困惑的是,当用户被重定向时,它会弹出一个对话框,上面写着:

在“(null)”中打开?

我不明白为什么它说 null 而不是应用程序的名称。我唯一能看到提到的这个问题的地方是这里:

'Open this page in "null"' Modal appearing from FacebookSDK login after iOS9 and Swift 2 upgrade

但这谈到了更新到最新的 SDK。它确实提到了将我尝试使用 LSApplicationQueriesSchemes 执行的方案列入白名单,但这似乎也没有解决它。

【问题讨论】:

    标签: ios ios9 url-scheme


    【解决方案1】:

    所以在我的情况下,我的 Info.plist 中添加了以下内容:

    <key>CFBundleDisplayName</key>
    <string></string>
    

    删除这个键或者给它一个非空字符串值可以解决这个问题并导致它给出:在“应用程序名称”中打开?。

    【讨论】:

      【解决方案2】:

      该对话框中的值在 Build Settings -> Packaging -> Product Name 中指定。无论如何,该字段是否为空白?如果是这样,通常构建应该会失败,并且大概您还会在主屏幕上注意到一些错误,但谁知道呢!

      附带说明,URL 方案不再是处理深度链接的万无一失的方法,Apple 实际上不鼓励这样做。至少,您还需要实现通用链接,但即使这样也不是一个完整的解决方案,因为其他应用程序(Facebook 等)处理出站链接的方式有所不同。您可能需要考虑使用像 Branch.io 之类的工具(完全披露:我在 Branch 团队)来帮助处理所有后勤工作。

      【讨论】:

      • 感谢您的意见。我检查了产品名称,正如预期的那样,它是正确的。我查看了通用链接,但在这种情况下,我没有将它们带到的网站页面。它用于 Oauth 身份验证,因此只应返回应用程序。在我的测试中,它似乎有时可以将其发送到应用程序,但有时除了这个奇怪的消息之外,URL 方案方法每次都能正常工作。
      • 嗯......没有其他事情会立即浮现在脑海中。你试过产品 -> 清洁吗?
      • 刚刚再试一次以确保我有同样的东西。
      【解决方案3】:

      我发现这个关于 iOS 9 的白名单 urlschemes (found answer here)

      使用 SDK 9 构建的任何应用都需要在其 plist 文件中提供 LSApplicationQueriesSchemes 条目,声明它尝试查询的方案。

      <key>LSApplicationQueriesSchemes</key>
      <array>
       <string>urlscheme</string>
       <string>urlscheme2</string>
       <string>urlscheme3</string>
       <string>urlscheme4</string>
      </array> 
      

      这对我来说很有效。

      【讨论】:

      • 谢谢heLL0。正如您在我的问题中看到的那样,我确实尝试添加 LSApplicationQueriesSchemes 但这并没有为我解决问题。这似乎处理从我没有做的应用程序中调用 urlscheme 的问题。我正在从 Safari 调用 url 方案。添加此功能为您解决了什么问题?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-25
      • 2016-07-30
      • 1970-01-01
      • 2010-12-20
      • 1970-01-01
      相关资源
      最近更新 更多