2

嗨,我知道之前有人问过这个问题,但我仍然无法弄清楚做错了什么。

  1. 在我们的服务器中添加了 apple-app-site-association 文件,位于https://ourserver.com/.well-known/apple-app-site-association
  2. 文件内容如下

`

{
   "applinks":{
      "apps":[],
      "details":[
         {
            "appID":"<teamId>.<bundleId>",
            "paths":[ "*",  "/" ]
         }
      ]
   }
}

` 3. 关联域作为功能添加

 applinks:servername.com
 applinks:dev.servername.com
  1. 在 AppDeletegate.m 中添加代码

    - (BOOL)application:(UIApplication *)application
     openURL:(NSURL *)url
     options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
    {
      return [RCTLinkingManager application:application openURL:url options:options];
     }
    
    
    - (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity
     restorationHandler:(nonnull void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler
    {
     return [RCTLinkingManager application:application
                  continueUserActivity:userActivity
                    restorationHandler:restorationHandler];
    }
    

编辑 1

注意到我在 iOS 版本 12.4.2 iPhone 中尝试了通用链接并正确重定向。在 iOS 版本 14 中,它重定向到我们的网页。所以我更新了我的 apple-app-site-association 文件如下

{
   "applinks": {
      "details": [
         {
            "appIDs": [
               "teamid.bundleid"
            ],
            "components": [
               {
                  "/": "/*",
                  "comment": "Matches any URL whose path starts with URL_PATH and instructs the system not to open it as a universal link"
               },
               {
                  "/": "*",
                  "comment": "Matches any URL whose path starts with URL_PATH and instructs the system not to open it as a universal link"
               }
            ],
            "paths": [
               "*",
               "/"
            ]
         }
      ]
   }
}

oru 网址已在此链接中验证

所有测试均在真实设备中完成。

编辑 2

以下所有内容均在模拟器中测试 - iPhone 11 Pro iOS 14.4

  1. 在具有开发者模式的模拟器中进行了相同的测试

    applinks:servername.com?mode=developer applinks:dev.servername.com?mode=developer

它在 SIMUALTOR 中正确打开

  1. 然后我拼错了我们的服务器名称并从 iMessages 单击它重定向到 SIMULATOR 中的 Safari -

  2. 清除 Safari 历史记录和缓存后,我再次尝试使用正确的服务器名称 - 仍然重定向到浏览器而不是应用程序

编辑 3

在模拟器上

浏览此链接并看到有关 Smart App 的横幅,因为我找不到类似的东西。搜索后发现此SO Post并尝试设置 - Safari - 高级 - 网站数据 - 在页面中显示我的域名 - 清除网站数据。在模拟器上再次尝试,应用程序正确打开

在 iPhone 上发布临时构建

在真实设备上进行了相同的设置 - Safari - 高级 - 网站数据 - 在页面中显示了我的域名 - 清除网站数据,但它不起作用。它仍然在应用程序中打开浏览器

编辑 4

EDIT 2 中的 AASA 文件使 iOS 版本 12.4.2 中的重定向失败。因此像这样更新它

{
   "applinks":{
      "apps":[
         
      ],
      "details":[
         {
            "appID":"teamid.bundleid",
            "paths":[
               "*",
               "/"
            ],
            "appIDs":[
               "teamed.bundleid"
            ],
            "components":[
               {
                  "/":"/*"
               },
               {
                  "/":"*"
               }
            ]
         }
      ]
   }
}

更新到此重定向到版本 12.4.2 中的应用程序后,但在 14 及更高版本中失败。通过此链接后修改的 AASA 文件

感谢任何帮助

提前致谢

4

1 回答 1

0

我遇到了同样的问题,看到上面@suja 还没有解决它,所以我想在这里发布答案。

首先,我们需要仔细检查我们的<teamID>.<bundleID>模式。因为如果我们的关联文件不能识别它,如果它是错误的(即使我们正确地完成了所有其他步骤)。

我找到了这个有用的官方链接,并仔细看了这个视频。此外,可以在此处以 PDF 格式查看视频幻灯片

实际上,他们已经更新了关联文件的内容,比如

  1. appID: string_value关键现在变成appIDs: array_of_strings
  2. 钥匙paths现在已被替换为components
  3. 如果您想在开发期间在模拟器中进行测试,那么您应该mode=developer在 XCode 的关联域功能中匹配 URL 的末尾使用查询参数。 在此处输入图像描述
  4. 您不能使用http://(例如,如果您在本地启动您的网站,localhost:PORT那么您应该使用一些外部服务来使您的 localhost 作为公共链接可用)。就我而言,我确实使用ngrok将我的 localhost 模拟为https://,如果从您的网页调用 Web 服务 (API),也不要忘记在 CORS 策略中允许该 ngrok URL。
  5. apple-app-site-association必须在您网站的子目录下的公共文件夹中.well-known

现在结合所有步骤。从昨天开始我就遇到了同样的问题,然后我从苹果官方网站上找到了上述链接来完成这项工作,并了解通用链接的工作原理。

最重要的是,如果您在 Simulator 上进行测试,请确保从您的Apple 开发者帐户中确保您的开发appID.bundleID在关联文件中应该是准确的。

下面是以我的关联文件为例

{
    "applinks": {
        "details": [
            {
                "appIDs": [
                    "YOUR_PRODUCTION_TEAM_ID.com.yourapp_bundleID",
                    "YOUR_DEV_TEAM_ID.com.yourapp_bundleID.dev"
                ],
                "components": [
                    {
                        "/": "*",
                        "comment": "Matches any URLs"
                    }
                ]
            }
        ]
    }
}

对于生产,不要忘记在关联域功能以及文件PROD_appID.PROD_bundleID中添加生产 URL。apple-app-site-association记住这个文件应该可以被苹果访问

https://your-web.com/.well-known/apple-app-site-association

就是这样,为了进一步使用查询参数和动态路径,我建议查看上面的 PDF 链接,尤其是 Apple 官方网站上的视频!

于 2022-02-16T09:01:37.413 回答