Universal Links可在本地运行,但不适用于AppStore Apps

Ale*_*RKO 13 deep-linking ios cordova ios-universal-links

手动安装应用程序在Xcode(与插入到MacBook设备),我可以点击邮件的链接到Web App和它打开入科尔多瓦应用,而Web应用程序(如预期).

但是当我从AppStore或testFlight(具有完全相同的代码库)下载并安装应用程序时,将忽略Universal Links并打开Web App.

当我监控Apache日志并手动安装应用程序时,我得到:

XX.XX.XX.XX - - [29/Aug/2018:14:32:33 +0000] "GET /.well-known/apple-app-site-association HTTP/1.1" 200 730 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"
Run Code Online (Sandbox Code Playgroud)

但是从testFlight或AppStore安装应用程序时,没有对该文件的请求.

有人可以帮我找到搜索的线索......我怎样才能为我的制作应用启用UniversalLink?

[编辑]来自john316的回答

我拉开了生成的IPA,打开了embedded.mobileprovision,我得到了:

<key>Entitlements</key>
<dict>
    <key>keychain-access-groups</key>
    <array>
        <string>XXXX.*</string>     
    </array>
    <key>get-task-allow</key>
    <true/>
    <key>application-identifier</key>
    <string>XXXX.my.domain.com</string>
    <key>com.apple.developer.associated-domains</key>
    <string>*</string>
    <key>com.apple.developer.team-identifier</key>
    <string>XXXX</string>
    <key>aps-environment</key>
    <string>development</string>
</dict>
Run Code Online (Sandbox Code Playgroud)

关联域已启用,但它们不应该有一个包含所有我的字符串数组applinks:domains

joh*_*316 8

根据我所观察到的差异,例如您所描述的差异,在大多数情况下,这是由于开发和分发配置文件的应用权利不同所致.即使您可以在应用程序项目设置中明确指出您需要某些功能(在本例中为"关联域"复选框),但在签名过程中(当您导出应用程序以进行分发时)Xcode可能不会丢失任何错误,如果缺少某些权利在配置文件中.

它们可能由于两个原因而丢失 - 它们可能未在此配置文件的developer.apple.com门户中添加,或者Xcode未从该门户刷新配置文件.在后一种情况下,有助于从本地磁盘中删除旧配置文件以强制Xcode重新下载它.

要验证com.apple.developer.associated-domains您的分发文件中是否确实拥有授权,可以解压缩IPA文件并检查此处指定的com.apple.developer.associated-domains密钥 <key>Entitlements</key>部分.

另一种调试方法是在运行AppStore/TestFlight版本的应用程序时查看控制台中的设备日志(Xcode-> Window-> Devices&Simulators-> Open Console).当链接正确地进入应用程序开发版本的应用程序时,您可以找到iOS输出的日志行,并将其与失败时的情况进行比较.通常iOS会在日志中抱怨缺少权利.

  • 实际上,embedded.mobileprovision 似乎从未提及特定关联域的列表 - 我们只关心它是否提到存在权利。该列表本身在可执行文件本身(这是一个二进制文件)内部被提及 - 以这种形式:`&lt;key&gt;com.apple.developer.related-domains&lt;/key&gt; &lt;array&gt; &lt;string&gt;applinks:get。 myapp.org&lt;/string&gt; &lt;/array&gt;` (2认同)