【问题标题】:Cannot get Universal Links to work无法使通用链接正常工作
【发布时间】:2016-06-29 19:10:40
【问题描述】:

我知道以前有人问过这个问题,我已经尝试了所有可以在这里、Apple 论坛和各种操作指南网站上找到的东西,但我仍然遗漏了一些东西,而且我束手无策。我希望有人能在某个地方发现错误。

我正在 iPhone 6S 上使用 XCode 7.3.1 和 iOS 9.3.2。

会员中心应用 ID ID:com.hotelplanner.hotelplanner

App ID 有 Assoc。已启用域

使用 Assoc 开发供应配置文件。已启用域 iOS 团队配置文件:com.hotelplanner.hotelplanner

我在 XCode Build Settings 中选择的 Debug Provisioning Profile 与在会员中心启用了 App Domains 的配置文件相匹配。

Xcode 功能 关联域 应用链接:www.hotelplanner.com

Xcode 权利

<?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>com.apple.developer.associated-domains</key>
    <array>
        <string>applinks:www.hotelplanner.com</string>
    </array>
</dict>
</plist>

apple-app-site-association的curl下载 泰坦:app nancysmithwp$ curl -v https://www.hotelplanner.com/.well-known/apple-app-site-association * 尝试 69.56.156.14... * 连接到 www.hotelplanner.com (69.56.156.14) 端口 443 (#0) * 使用 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 的 TLS 1.2 连接 * 服务器证书:*.hotelplanner.com * 服务器证书:Symantec Class 3 Secure Server CA - G4 * 服务器证书:VeriSign Class 3 Public Primary Certification Authority - G5

> GET /.well-known/apple-app-site-association HTTP/1.1
> Host: www.hotelplanner.com
> User-Agent: curl/7.43.0
> Accept: *
> 
< HTTP/1.1 200 OK
< Content-Type: application/json
< Last-Modified: Wed, 29 Jun 2016 14:05:46 GMT
< Accept-Ranges: bytes
< ETag: "f35d6255fd2d11:0"
< Vary: Accept-Encoding,User-Agent
< Server: HOTELPLANNER.COM
< P3P: CP="NOI DSP COR LAW NID CUR ADMa OUR DELa IND PHY ONL UNI PUR COM NAV STA"
< Date: Wed, 29 Jun 2016 17:24:51 GMT
< Content-Length: 169
< 
{
  "applinks": {
    "apps": [],
    "details": [
      {
        "appID": "M57RZA2QX5.com.hotelplanner.hotelplanner",
        "paths":[ "/Hotels" ]
     }
    ]
  }
}

我已将 iOS 部署目标设置为 9.0,因此不需要对其进行签名。

https://search.developer.apple.com/appsearch-validation-tool 的验证工具给出的 URL www.hotelplanner.com/Hotels/2446-in-Nassau-Bahamas.html 表示应用站点关联文件已通过。深层链接因“无法提取深层链接所需的信息”而失败。

便笺中的相同链接始终在 Safari 中打开。长按链接让我没有选择。

myAppDelegate 有 application:continueUserActivity:restorationHandler 实施。

-(BOOL) application:(UIApplication*) application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler:(nonnull void (^)(NSArray * _Nullable))restorationHandler{

    if (userActivity.activityType == NSUserActivityTypeBrowsingWeb){ 
        NSLog(@"continueUserActivity");
    }
    return NO;
}

当我在我的设备上启动应用程序时,控制台中没有错误。

编辑添加:
我实施了 webcredentials 以查看是否可以获得更多见解,并且我在回调中收到一个错误,即 www.hotelplanner.com 不在我的权利中,但它在那里,并且设置了它的目标复选框。此外,如果我将第一个参数保留为 NULL,以便它使用我的权利文件中的域,我会收到错误“未提供域”。

【问题讨论】:

  • 第一次安装(先删除再重新安装)时,Xcode 设备日志中是否出现任何错误?有这样的吗? Sep 21 14:27:01 Derricks-iPhone swcd[2044] &lt;Notice&gt;: 2015-09-21 02:27:01.878907 PM [SWC] ### Rejecting URL 'https://examplecustomdomain.com/apple-app-site-association' for auth method 'NSURLAuthenticationMethodServerTrust': -6754/0xFFFFE59E kAuthenticationErr
  • 我在设备日志中看到的唯一内容是一周前的崩溃。安装应用程序时似乎没有打印任何内容。
  • 嗯...我们可能会讨论不同的设备日志,因为如果您能在一周前找到任何东西,我会感到非常惊讶!这是我希望看到的:youtube.com/watch?v=rHQZy_WFdEs
  • 感谢您提供该链接!我不知道那个窗口的下半部分。那里有很多。我卸载、重新启动并重新安装了该应用程序,但日志中没有任何与您的示例类似的内容。它确实显示了一些错误,尤其是 SecTrustEvaluate,但我明天必须重新运行几次,看看它们是否与我的应用程序相关。
  • 是的......那些日志肯定飞得很快!似乎身份验证循环没有完全关闭,因此文件没有被请求或请求失败。要检查的另一件事是 .entitlements 文件已添加到您的构建目标中。有时这不是第一次

标签: ios ios-universal-links


【解决方案1】:

我终于向 Apple 提出了我的第一个技术支持协助请求,并且能够解决这个问题。在 Code Signing 下,Any SDK 下的条目为空。我删除了这些条目,一切都像魅力一样。

【讨论】:

    【解决方案2】:

    我过去遇到过类似的问题,这似乎是 XCode 错误。在实现通用链接之前,我一直在使用相同的设备来测试构建,一旦我实现了它们,它们就不起作用了。通过卸载应用程序并重新安装它,我就可以让链接正常工作了。

    我的假设是链接是在安装应用程序时在操作系统中创建的。

    【讨论】:

      【解决方案3】:

      你的情况我也有同样的问题,我解决了。 来自苹果的 App Search API Validation Tool(https://search.developer.apple.com/appsearch-validation-tool),我得到了 ACTION REQUIRED 无法提取深层链接所需的信息。了解如何实施 Deep Link 中的建议,但它确实有效。

      将“路径”:[“/Hotels”]更改为“路径”:[“/Hotels/*”]。

      我希望它有效。

      【讨论】:

      • 我现在只有一个空方法。-(BOOL) application:(UIApplication*) application continueUserActivity:(nonnull NSUserActivity *)userActivity restoreHandler:(nonnull void (^)(NSArray * _Nullable)) restoreHandler{ if (userActivity.activityType == NSUserActivityTypeBrowsingWeb){ NSLog(@"continueUserActivity"); } 返回否; }
      • 如果你运行通用链接,你必须重新构建你的应用程序并再次测试。请在重建项目后再次测试。
      • 您需要返回 YES 来 continueUserActivity 以使链接正常工作。这是根据developer.apple.com/library/content/qa/qa1916/_index.html
      猜你喜欢
      • 2012-12-27
      • 2017-04-30
      • 2014-12-26
      • 1970-01-01
      • 1970-01-01
      • 2015-07-05
      • 2017-11-28
      • 2014-12-15
      • 2016-02-10
      相关资源
      最近更新 更多