我目前正在使用自定义网址方案,允许用户从自定义链接(FoobarApp
)访问我的应用(例如foobar://resource/42
)。
我设置了这样的方案:
<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,如果我没有记错的话)现在要求应用程序将他们想要查询的网址列入白名单(使用Info.plist中的LSApplicationQueriesSchemes
)。
(当我点击第三方应用中的链接时,这是我在日志中收到的消息:
iPad Trello(UIKit)[2368]:-canOpenURL:网址失败:“foobar:// resource / 42” - 错误:“此应用不允许查询方案foobar”
)
期望第三方应用将我的(企业)应用方案添加到其LSApplicationQueriesSchemes
列表中是不合理的。他们可以选择“绕过”这种保护措施吗?告诉系统的一种方式“很好,Trello可以打开我的应用程序”?
foobar://
适用于Safari 答案 0 :(得分:1)
一个应用程序必须告诉ios它想要查询url方案。它必须在编译时在其信息plist中声明它!
当你越狱手机时,一切都可以完成,但......这也不是一个有效的假设;)
解决方法可能是通过HTTP链接到网站,让用户从那里打开应用程序。