# 应用间跟踪中通用链接的故障排除

<a href="https://pxa.impact.com/student/activity/1117597?sid=0c0e3e5c-54c9-4435-9bee-ebcdccb7f292&#x26;sid_i=0?utm_source=app.impact.com&#x26;utm_medium=owned-platform&#x26;utm_content=tra-350&#x26;utm_campaign=help-center" class="button primary">参加 PXA 课程</a>

通用链接在操作系统 (OS) 级别进行验证，并且需要用户初始化的操作（例如点击网页链接）以打开移动应用。

#### 排查通用链接问题

{% stepper %}
{% step %}

### **确认来自合作伙伴应用的点击是用户发起的点击**

假设该链接不是常规的锚点标签，而是实例化了一个新的 **WebView** （参见本页底部的澄清）。在这种情况下，这不被视为用户发起的导航，因此操作系统不会打开通用链接。这是最常见的场景。要解决此问题，您应考虑在 WebView（WKWebView、UIWebView 或 SFSafariViewController）内部使用常规锚点链接，以便通用链接能启动应用。

其他非用户发起点击的示例包括将 URL 直接复制粘贴到搜索栏，或通过在 JavaScript 中使用以下方式导航到链接 `onload()` 或 `click()`.
{% endstep %}

{% step %}

### **检查您将用户发送到的页面是否允许通用链接**

在某些情况下，impact.com 依赖通用链接在后续重定向（通常是广告主域名）上进行配置。

* 例如，impact.com 的跟踪域（`goto.advertiser.com`）会重定向到 `advertiser.com`。通用链接配置在 `advertiser.com` 域上。因此，验证您发送用户到的页面是否启用了通用链接非常重要。您可以通过检查位于广告主域上的 Apple association 文件来进行验证。
* 在我们的示例中， `http://advertiser.com/.well-known/apple-app-site-association`，您会注意到 impact.com 跟踪域的 association 文件默认包含所有子目录。

{% hint style="info" %}
**注意：** 尽管在使用 JavaScript 重定向时通用链接无法工作，但 HTTP 3xx 重定向仍会保留对原始用户事件的引用。impact.com 在跟踪中使用 HTTP 3xx 重定向，因此在满足其他条件时，通过跟踪域上的点击进行的链接重定向会成功启动广告主应用。
{% endhint %}

例如，下面的 association 文件将允许通用链接用于 `advertiser.com/item/123` 但不会允许用于 `advertiser.com` 或 `advertiser.com/section/furniture`.

```programlisting
{
   "applinks":{
      "apps":[
      ],
      "details":[
         {
            "appID":"A1AAA22BBB.com.advertiser.Advertiser",
            "paths":[
               "NOT /section/*",
               "/item/*"
            ]
         }
      ]
   }
} 
```

{% endstep %}

{% step %}

### **请注意，打开的初始 WebView 也必须支持通过通用链接进行重定向**

某些 WebView 可能会阻止通用链接，这会导致跟踪链接在 WebView 内部打开，而不是打开广告主应用。虽然不常见，但当 WebView 的导航策略设置为 WKNavigationActionPolicyAllow + 2 时可能会发生这种情况。这会导致 WebView 导航到该链接而不尝试通用链接。
{% endstep %}

{% step %}

### **审查社交媒体策略**

一些社交媒体应用（如 Facebook）会阻止通用链接。如果是这种情况，使用 **移动应用插页 (Mobile App Interstitial)** 可能会有所帮助，我们建议联系您的客户成功经理（CSM）寻求帮助（或 [联系支持](https://app.impact.com/support/portal.ihtml?createTicket=true)）。impact.com 正在积极研究改进来自社交媒体应用的深度链接和归因的方法。
{% endstep %}
{% endstepper %}

#### 来自 Apple 的进一步说明

如果您实例化一个 [SFSafariViewController](https://developer.apple.com/documentation/safariservices/sfsafariviewcontroller) , [WKWebView](https://developer.apple.com/documentation/webkit/wkwebview) ，或 [UIWebView](https://developer.apple.com/documentation/uikit/uiwebview) 对象来处理通用链接，iOS 会在 Safari 中打开您的网站，而不是打开您的应用。然而，如果用户在嵌入的 SFSafariViewController、WKWebView 或 UIWebView 对象内点击通用链接，iOS 会打开您的应用。

参考 Apple 的 [支持通用链接](https://developer.apple.com/library/archive/documentation/General/Conceptual/AppSearch/UniversalLinks.html) 帮助文章以获取更多信息。
