iOS applink 在设备上不起作用,但在模拟器上打开应用程序

Posted

技术标签:

【中文标题】iOS applink 在设备上不起作用,但在模拟器上打开应用程序【英文标题】:iOS applink not working on the device but opens app on simulator 【发布时间】:2021-06-03 22:32:07 【问题描述】:

我尝试尽可能多地遵循建议,但无法让它在我仍在开发中的应用上运行(尚未在应用商店中)。以下是详细信息:

目前仅在 ios 14 中进行测试。

以下 JSON 文件“apple-app-site-association”存储在 Wordpress Web 根目录和 .well-known/ 下


    "applinks": 
        "apps": [],
        "details": [
            
                "appID": "XXXXXXXXXX.com.xxx.myapp",
                "paths": [
                    "item/*"
                ]
            
        ]
    

使用 .htaccess 强制 MIME 类型

<Files apple-app-site-association>
ForceType application/json
</Files>

curl -v 到 https://mydomain/.well-known/apple-app-site-association 返回具有正确 mime 类型 application/json 和状态码 200 的内容。

这是.entitlements 文件:

<?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>applinks:www.myapp.com</string>
                <string>applinks:www.myapp.com?mode=developer</string>
        </array>
</dict>
</plist>

在设置 -> 开发者菜单中启用 Associated Domains Debugging

在 developer.apple.com 门户中添加了 Associated Domains 功能。

用https://branch.io/resources/aasa-validator/验证OK

实现了委托方法但未调用

func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool 
    print("Opening app thru applink")
    // ....
    return true

服务器访问日志有这一行,表示 Apple Bot 或访问它的设备

00.000.00.00 - - [04/Mar/2021:23:05:19 -0700] "GET /.well-known/apple-app-site-association HTTP/1.1" 200 133 "-" "swcd (unknown version) CFNetwork/1220.1 Darwin/20.3.0" **0/507**

在与此相关的设备日志中未看到和 swcd 错误。

尝试了调试和发布版本。

我还能做些什么来排除故障?

【问题讨论】:

【参考方案1】:

终于想通了。缺少几件事:

    关联文件中的路径必须有“/”前缀,例如"/item/*" 在“appID”字段中使用了团队 ID,但使用应用前缀 ID 有所帮助

【讨论】:

以上是关于iOS applink 在设备上不起作用,但在模拟器上打开应用程序的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的字体在 Android Studio Preview 中显示,但在设备或模拟器上不起作用?

iOS:GCDWebServer 在设备上不起作用

NSUserDefaults 在 IOS 8 模拟器上不起作用 [重复]

iOS框架在模拟器上不起作用

界面生成器 UIButton 自定义背景图像在模拟器/设备上不起作用

Ionic 2 动画在 iOS 设备上不起作用