【发布时间】:2017-05-18 12:04:01
【问题描述】:
我目前正在使用自定义 URL 方案来允许用户从自定义链接 (foobar://resource/42) 访问我的应用程序(例如,FoobarApp)。
我这样设置方案:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>com.acme.foobarapp</string>
<key>CFBundleURLSchemes</key>
<array>
<string>foobar</string>
</array>
</dict>
</array>
当用户在 Safari 中单击链接时,这很有效。
现在我希望他们能够单击第三方应用(在我的情况下为 Trello)中的上述链接,以打开我的应用。
这不起作用,因为系统(如果我没记错的话,从 iOS 9 开始)现在要求应用将他们想要查询的 URL 方案列入白名单(在 Info.plist 中使用 LSApplicationQueriesSchemes)。
(这是我在第三方应用程序中单击链接时在日志中收到的消息:
iPad Trello(UIKit)[2368]:-canOpenURL:URL 失败:“foobar://resource/42”-错误:“此应用不允许查询方案 foobar”
)
期望第三方应用程序将我的(企业)应用程序的方案添加到他们的LSApplicationQueriesSchemes 列表中是不合理的。他们是否可以选择“绕过”这种保护?一种告诉系统“很好,Trello 可以打开我的应用”的方式?
总结
- 自定义应用链接
foobar://可在 Safari 中使用 - 它们在第三方应用程序中不起作用(没有任何反应,请参阅记录几行)
- 如何将第三方应用列入白名单,以便他们可以打开我的应用?
【问题讨论】:
标签: ios url-scheme