在“(null)”中打开? iOS 9 中的对话框

Open in "(null)"? dialog in iOS 9

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

在“(null)”中打开?

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

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

该对话框中的值在构建设置 -> 打包 -> 产品名称 中指定。无论如何,那个领域是空白的吗?如果出现这种情况,构建通常会失败,而且您可能还会在主屏幕上注意到一些错误,但谁知道呢!

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

我发现了关于 iOS 9

的白名单 urlschemes

Any app built with SDK 9 needs to provide a LSApplicationQueriesSchemes entry in its plist file, declaring which schemes it attempts to query.

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

这对我摆脱它很有帮助。

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

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

删除这个键或者给它一个非空字符串值解决了这个问题并导致它给出:Open in "name of app"?.