APE*_*APE 5 amazon-s3 amazon-web-services ios amazon-cloudfront apple-app-site-associate
这是我的设置:
我的 apple-app-site-association 如下:
{
"webcredentials": {
"apps": [ "TeamID.BundleId1",
"TeamID.BundleId2" ]
}
}
Run Code Online (Sandbox Code Playgroud)
当然,这些值将替换为我的团队 ID 和我的 2 个应用程序的捆绑 ID。
当我跑
curl -i https://example.com/apple-app-site-association
Run Code Online (Sandbox Code Playgroud)
或者
curl -i https://example.com/.well-known/apple-app-site-association
Run Code Online (Sandbox Code Playgroud)
我有以下结果:
HTTP/2 200
content-type: application/pkcs7-mime
content-length: 156
date: Wed, 18 Dec 2019 03:08:15 GMT
last-modified: Wed, 18 Dec 2019 03:04:14 GMT
etag: "redacted"
x-amz-server-side-encryption: AES256
accept-ranges: bytes
server: AmazonS3
x-cache: Miss from cloudfront
via: 1.1 redacted.cloudfront.net (CloudFront)
x-amz-cf-pop: redacted
x-amz-cf-id: redacted
{
"webcredentials": {
"apps": [ "TeamID.BundleId1",
"TeamID.BundleId2" ]
}
}
Run Code Online (Sandbox Code Playgroud)
这告诉我该文件有效且正确托管。
在 Xcode 方面,我的目标在 Signing & Capabilities > Associated Domains 中有以下行:
webcredentials:example.com
Run Code Online (Sandbox Code Playgroud)
所以我的权利文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>aps-environment</key>
<string>development</string>
<key>com.apple.developer.associated-domains</key>
<array>
<string>webcredentials:example.com</string>
</array>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)
但是,当我转到应用程序上的注册屏幕时,我有以下控制台日志:
[自动填充] 无法为应用程序 bundleID 显示自动强密码:由于错误 BundleId:无法保存此应用程序的密码。确保你已经为你的应用设置了关联域,并且在设置中启用了自动填充密码
我正在 iOS 13 上的真实设备上进行测试,并且启用了自动填充。
注意:我的应用程序还没有上线(以防我被建议使用 Apple crawler aka App Search API Validation Tool)
在此先感谢您的帮助!
我终于让它工作了。我做了 4 件不同的事情,我认为其中只有 2 件很重要,但我会将它们全部发布在这里,以防它对遇到相同问题的人有所帮助。
1:使用我的 iPhone 开发者 ID 而不是我的团队 ID(重要)
当我在开发环境中调试应用程序时,该应用程序是使用我的 iPhone 开发人员证书而不是我团队的生产证书进行签名的。所以我改变了我的 apple-app-site-association 文件
{
"webcredentials": {
"apps": [ "TeamID.BundleId1",
"TeamID.BundleId2" ]
}
}
Run Code Online (Sandbox Code Playgroud)
到
{
"webcredentials": {
"apps": [ "TeamID.BundleId1",
"TeamID.BundleId2",
"iPhoneDeveloperID.BundleId1",
"iPhoneDeveloperID.BundleId2" ]
}
}
Run Code Online (Sandbox Code Playgroud)
2:测试前使AWS CloudFront缓存失效(重要)
在测试过程中,我最终发现我有时会得到旧版本的 apple-app-site-association,具体取决于我用来获取它的设备或软件应用程序。因此,我登录到 CF 控制台,选择我的发行版,选择 Invalidations 选项卡,然后创建一个 Invalidation with Object Path /.well-known/apple-app-site-association。
3:添加应用链接
我不确定这是否对我的问题有任何影响,因为我在尝试此操作后才使缓存无效,但为了防止它对某人有帮助,我决定将应用程序链接添加到我的应用程序。webcredentials我在我的 apple-app-site-association 中添加了以下对象
"applinks": {
"apps": [],
"details": [
{
"appID": "iPhoneDeveloperID.BundleId1",
"paths": [ "*"]
},
{
"appID": "iPhoneDeveloperID.BundleId2",
"paths": [ "*" ]
},
{
"appID": "TeamID.BundleId1",
"paths": [ "*"]
},
{
"appID": "TeamID.BundleId2",
"paths": [ "*" ]
}
]
}
Run Code Online (Sandbox Code Playgroud)
确保您正在测试的应用程序位于顶部,因为其他应用程序将被丢弃(第一个通配符获胜)。显然,在投入生产之前必须对此进行更改。
我向我的应用程序添加了以下权利
<string>applinks:example.com</string>
Run Code Online (Sandbox Code Playgroud)
4:仅使用.wellknown
再说一遍,我不认为这很重要,但我不再需要为每个测试上传两次文件,而是停止使用根目录,只上传到/.well-known/apple-app-site-association
| 归档时间: |
|
| 查看次数: |
2130 次 |
| 最近记录: |