Ios 通用链接在本地工作,但不能从AppStore应用程序中工作

Ios 通用链接在本地工作,但不能从AppStore应用程序中工作,ios,cordova,deep-linking,ios-universal-links,Ios,Cordova,Deep Linking,Ios Universal Links,从xCode手动安装应用程序后(设备插入MacBook),我可以单击带有Web应用程序链接的邮件,它会将其打开到cordova应用程序而不是Web应用程序中(如预期的那样) 但是当我从AppStore或testFlight下载并安装应用程序(使用完全相同的代码库)时,通用链接被忽略,Web应用程序被打开 当我监视Apache日志并手动安装应用程序时,我得到: XX.XX.XX.XX - - [29/Aug/2018:14:32:33 +0000] "GET /.well-known/apple-

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

但是当我从AppStore或testFlight下载并安装应用程序(使用完全相同的代码库)时,通用链接被忽略,Web应用程序被打开

当我监视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,打开了嵌入式.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>
权利
密钥链访问组
XXXX.*
获取任务允许
应用程序标识符
XXXX.my.domain.com
com.apple.developer.associated-domains
*
com.apple.developer.team-identifier
XXXX
aps环境
发展

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

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

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

要验证您的分发文件中是否确实有
com.apple.developer.associated domains
权限,您可以解压缩IPA文件,并按照指定检查
com.apple.developer.associated domains
键入
权限
部分


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

最终我解决了这个问题:

确保
权利发布.plist
包含正确的权利。在我的例子中,只有
权限Debug.plist
具有正确的权限。此外,当您在最后一步导出应用程序时,您通常会看到有关所包含权利的摘要,请确保com.apple.developer.associated domains与相应的
applinks
条目一起列出

它应该类似于:


来源:

如果您使用Cordova/Ionic v3

有一只虫子

检查以下步骤:

有四个过程

1.应用程序控制台

应用程序id->选择应用程序id→ 已启用关联域->完成 设置配置文件->再次编辑

  • 关于Xcode
  • AppName->general capability->关联域->+->

    applinks:example.com

  • 在您的服务器上 在http的根目录中上载apple应用程序站点关联文件 和。著名的https文件夹
  • 不要将此文件附加为json,保留为文本 Ex--苹果应用程序网站协会会员

    4.(重要)

    (cordova)项目文件夹有两个文件: 项目->平台->ios->项目名称文件夹->

    权限-Debug.plist

    权利-Release.plist

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

     <key>com.apple.developer.associated-domains</key> <array>  
     <string>applinks:example.com</string> </array>
    
    com.apple.developer.associated-domains
    applinks:example.com
    
    但“权利-Release.plist”并没有改变。我所做的是将生成的行复制粘贴到authentications-Debug.plist。在这之后,我做了与以前完全相同的归档和上传过程,一切都很好

    并使用ionic插件deeplinks获取参数并路由您的Deeplink过程


    ……感谢您稍后首先构建您的项目

    对于您在Xcode中为通用链接列出的任何主机名,您是否在
    hostname/.well Known/apple app site association
    中有AASA文件?苹果从应用商店下载应用程序时需要获取该文件。您可以通过访问浏览器中的
    hostname/.well know/apple app site association
    来确保它在那里。更多信息:我有一个AASA文件,可以使用你提供的URL访问。也给我一个全绿色的验证。这听起来很傻,但是你试过重新启动你的手机吗?有时,除非在某些情况下,否则操作系统可能不会检查.well-known文件。另外,要知道有一个影响通用链接的开放bug。我试着重新启动,结果不一样devices@KyleH我刚注意到你写了
    ,我想你是说
    谢谢你详细的回答!我试图打开embedded.mobileprovision。我找到了
    关联域
    部分,但它是空的。你有什么想法吗?好问题-我需要先自己试试。但是,您已经有了一个可以使用的构建(dev-one)——您是否也可以将其embedded.mobileprovision文件中的相同行添加到您的问题中?你应该能找到