允许从第三方应用中的 link 打开我的应用

Allow opening my app from a link in a third-party app

我目前正在使用自定义 URL 方案来允许用户从自定义 links (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 中单击 link 时,这很有效。

现在我希望他们能够在第三方应用程序(在我的例子中是 Trello)中单击 links 来打开我的应用程序。

这不起作用,因为系统(因为 iOS 9 如果我没记错的话)现在需要应用程序白名单 URL 他们想要查询的方案(使用 LSApplicationQueriesSchemes 在 Info.plist).

(这是我在第三方应用程序中单击 link 时在日志中收到的消息:

iPad Trello(UIKit)[2368] : -canOpenURL: failed for URL: "foobar://resource/42" - error: "This app is not allowed to query for scheme foobar"

)

期望第三方应用程序将我的(企业)应用程序的方案添加到他们的 LSApplicationQueriesSchemes 列表中是不合理的。他们对 "bypass" 这种保护有任何选择吗?一种告诉系统的方式"It's fine, Trello can open my app"?

总结

一个应用程序必须告诉 ios 它想要查询一个 url 方案。它必须在编译时在其信息 plist 中声明它!

在允许的苹果上没有办法解决这个问题 iPhone。

当然,当你越狱 phone 时,一切都可以完成,但是......这也不是一个有效的假设 ;)


解决方法可能是 link 通过 HTTP 访问网站并让用户从那里打开应用程序。