我目前正在使用自定义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”
)
它_1113719_计划到他们的 LSApplicationQueriesSchemes
名单 . 他们对这种保护有什么选择吗?一种告诉系统"It's fine, Trello can open my app"的方法?
摘要
-
自定义应用程序链接
foobar://
在Safari中工作 -
他们不在第三方应用程序中工作(没有任何反应,请参阅日志几行)
-
如何将第三方应用列入白名单,以便他们可以打开我的应用?
1 回答
一个应用程序必须告诉ios它想要查询url方案 . 它必须在编译时在其信息plist中声明它!
在苹果允许的iPhone上无法解决这个问题 .
当你越狱手机时,一切都可以完成,但......这也不是一个有效的假设;)
解决方法可能是通过HTTP链接到网站,让用户从那里打开应用程序 .