通用链接在本地有效,但不能从AppStore应用程序中使用

时间:2018-08-29 15:10:05

标签: ios cordova deep-linking ios-universal-links

从xCode 手动安装应用程序后(设备已插入MacBook),我可以单击带有Web应用程序链接的邮件,然后将其打开到cordova应用程序而不是Web应用程序中(符合预期)。

但是,当我从AppStore或testFlight 下载并安装应用(具有完全相同的代码库)时,通用链接将被忽略,并且Web应用将打开。 / p>

当我监视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"

但是从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>

已启用关联域,但是它们不应该与我所有的applinks:domains一起使用字符串数组吗?

4 个答案:

答案 0 :(得分:7)

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

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

要验证您的分发文件中实际上是否拥有com.apple.developer.associated-domains权利,您可以解压缩IPA文件并按照指定的{{3}检查com.apple.developer.associated-domains部分中的<key>Entitlements</key>键}。

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

答案 1 :(得分:3)

最后,我能够解决此问题:

确保Entitlements-Release.plist包含正确的权利。就我而言,只有Entitlements-Debug.plist拥有正确的权利。另外,当您在最后一步导出应用时,通常应该会看到有关所包含权利的摘要,请确保在 com.apple.developer.associated-domains 中列出了相应的applinks条目

它应该类似于:

enter image description here

来源:https://forums.developer.apple.com/message/334862

答案 2 :(得分:1)

如果您使用的是Cordova / Ionic v3

有错误...

检查以下步骤:

有四个过程

1.app控制台

应用程序ID->选择应用程序ID→启用关联域->完成 供应配置文件->重新编辑

  1. 在Xcode上

AppName->常规<->功能->关联域-> +->

  

applinks:example.com

  1. 在您的服务器上 在根目录中为http上载apple-app-site-association文件 还有https的.well-known文件夹

例如-https://www.skyscanner.com/apple-app-site-association

例如-https://www.skyscanner.com/.well-known/apple-app-site-association

当json保留为文本时,请勿附加此文件 例如-apple-app-site-association

4.(重要)

(cordova)项目文件夹中有两个文件: 项目->平台-> iOS-> projectNameFolder->

Entitlements-Debug.plist

Entitlements-Release.plist

当我将值applinks:example.com添加到Capabilities-> Associated domains-> Domains时,Entitlements-Debug.plist出现以下行:

 <key>com.apple.developer.associated-domains</key> <array>  
 <string>applinks:example.com</string> </array>

但是Entitlements-Release.plist不变。我要解决的问题是将生成的行从Entitlements-Debug.plist复制粘贴。之后,我执行了与以前完全相同的存档和上传过程,一切正常。

并使用ionic-plugin-deeplinks获取参数并路由Deeplink进程

.......感谢以后先构建您的项目

答案 3 :(得分:-1)

请参考以下链接。

请按照上述步骤操作。您必须更改产品的团队ID

https://medium.com/@abhimuralidharan/universal-links-in-ios-79c4ee038272