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

mctunoxg  于 2023-03-09  发布在  iOS
关注(0)|答案(4)|浏览(160)

从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,打开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

hfyxw5xn

hfyxw5xn1#

根据我观察到的像您所描述的差异的经验,在大多数情况下,这是由于开发和分发配置文件的应用程序权限的差异。即使您可能在应用程序项目设置中明确声明您需要某些功能(在本例中为“关联域”复选框),如果预置配置文件中缺少某些授权,Xcode可能不会在签名过程中(当您导出应用程序进行分发时)引发任何错误。
它们丢失的原因可能有两个--可能没有在developer.apple.com门户网站上为该配置文件添加它们,或者Xcode没有从该门户网站刷新配置文件文件。在后一种情况下,从本地磁盘中删除旧的配置文件会有助于强制Xcode重新下载它。
要验证您的分发文件中是否确实具有com.apple.developer.associated-domains权利,您可以解压缩IPA文件,并检查<key>Entitlements</key>部分中的com.apple.developer.associated-domains密钥是否为指定的here
另一种调试方法是查看控制台中的设备日志(Xcode-〉窗口-〉设备和模拟器-〉打开控制台),当运行应用的AppStore/TestFlight版本时。您可以找到iOS输出的日志行,当正确地按照链接进入应用的开发版本时,并将其与失败时的情况进行比较。通常iOS会在日志中抱怨缺少授权。

nue99wik

nue99wik2#

最后,我能够解决这个问题:
确保Entitlements-Release.plist包含正确的授权。在我的例子中,只有Entitlements-Debug.plist具有正确的授权。另外,当你在最后一步导出应用时,你通常会看到一个关于所包含授权的摘要,确保com.apple.developer.associated-domains与相应的applinks条目一起列出。
它应类似于:

xriantvc

xriantvc3#

如果您使用Cordova/离子v3
有虫子...
检查这些步骤:
有四个过程
1.app 台
应用程序ID-〉选择应用程序ID→启用关联域-〉完成预配配置文件-〉再次编辑
1.在Xcode上
AppName -〉常规<->功能-〉关联域-〉+ -〉
应用链接:example.com
1.在您的服务器上传apple-app-site-association文件在根目录为http和. wellknown文件夹为https
例如-https://www.skyscanner.com/apple-app-site-association
例如-https://www.skyscanner.com/.well-known/apple-app-site-association
不要将此文件附加为json,保留为文本Ex -- of apple-app-site-association
4.(重要)
(cordova)项目文件夹中有两个文件:项目-〉平台-〉ios -〉项目名称文件夹-〉
Entitlements-Debug.plist
Entitlements-Release.plist
当我将值applinks:www.example.com添加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-deeplink来获取参数和路由您的Deeplink进程
.......稍后再谢首先构建您的项目

qyyhg6bp

qyyhg6bp4#

检查ipa文件中的applink。
进入ipa -〉append.zip作为扩展名。解压缩它。你将能够看到有效载荷。现在右击并选中显示包内容。
在包内容中,您将找到archived-expanded-entitlements.xcent
拖放此文件以进行文本编辑。您将看到在关联域中配置的应用程序链接。这样您就可以确定您是否使用了正确的应用程序链接。

相关问题