添加深度链接支持
深度链接可引导用户访问应用程序中的特定内容。当用户在已安装应用的设备上点击深层链接时,应用会直接打开到目标内容,如产品页面或特定体验。
奇异跟踪链接支持标准深度链接(适用于已安装的应用)和延迟深度链接(适用于新安装的应用)。有关详细信息,请参阅深度链接常见问题解答和奇异链接常见问题解答。
要求
先决条件
完成Singular Links 先决条件,为您的应用程序启用深度链接。
注释:
- 本文假设您的组织正在使用 SingularLinks- Singular 的跟踪链接技术。老客户可能正在使用传统的跟踪链接。要使用传统链接支持深度链接,请参阅本指南末尾的 "传统链接 "部分
- 需要在 Singular 的 "应用程序"页面设置您应用程序的深度链接目的地(请参阅 "为归因跟踪配置您的应用程序")。
实施 Singular 链接处理程序
SingularLinkHandler 提供了一种回调机制,用于在应用程序打开时从 Singular 跟踪链接中检索深层链接、延迟深层链接和直通参数。
可用参数:
- 深度链接 (_dl):点击链接的用户在应用程序中的目标 URL
- 延迟深度链接 (_ddl):点击链接后安装应用程序的用户的目标 URL
- 直通 (_p):通过跟踪链接传递的自定义数据,以获取更多上下文信息
平台配置
安卓设置
配置您的 Android 应用程序,以便通过 Android 应用程序链接技术来支持深度链接。
步骤 1:配置活动
打开Project > Assets > Plugins > Android > AndroidManifest.xml,更新活动名称。
从:
<activity android:name="com.unity3d.player.UnityPlayerActivity"
更改为
<activity android:name="com.singular.unitybridge.SingularUnityActivity"
自定义活动实施:如果您实施了自定义活动,请在活动的onNewIntent 方法中添加以下内容:
import com.singular.unitybridge.SingularUnityBridge;
@Override
protected void onNewIntent(Intent intent) {
setIntent(intent);
// Call this method from your custom activity in onNewIntent
SingularUnityBridge.onNewIntent(intent);
}
步骤 2:添加意图过滤器
添加 Intent Filter 以支持 Android 应用程序链接。android:host 的值必须与你的 Singular Links 域相匹配。
<!-- Added Intent Filter for Singular Android Links Deeplinking -->
<!-- Replace example.sng.link with your Singular Links domain -->
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:host="example.sng.link" />
<data android:pathPrefix="/A"/>
<data android:pathPrefix="/B"/>
<data android:pathPrefix="/E"/>
<data android:pathPrefix="/F"/>
</intent-filter>
完成Singular Links Android 先决条件,了解详细设置说明。
iOS 设置
配置 iOS 应用程序以支持通过通用链接和自定义 URL 方案进行深度链接。
步骤 1:启用通用链接
- 配置 Singular Links 域:在 Singular 的 "属性">"管理链接"页面设置至少一个子域
- 启用关联域:在Apple Developer Portal 中,转到Identifiers,选择您的应用程序,然后在 Capabilities 菜单中启用关联域
-
在 Xcode 中添加域:在 Xcode 项目中,导航至 "项目设置">"功能">"关联域",然后以
applinks:yourdomain.sng.link格式添加您的 Singular Links 域。 - 配置团队 ID:从苹果开发者门户复制您的 "应用程序前缀"(团队 ID
-
将团队 ID 添加到 Singular:在 Singular 中,进入 "应用程序配置",找到你的应用程序,展开 "iOS 应用程序高级设置",然后粘贴团队 ID。这样,Singular 就能托管通用链接的
apple-app-site-association文件。
第 2 步:配置 URL 方案(回退)
添加自定义 URL 方案,作为通用链接无法运行时的备用方案。
- 在 Singular 的 iOS 应用程序高级设置(团队 ID 下方)中,输入您的iOS 应用程序方案
- 在 Xcode 项目的 "信息">"URL 类型 "下将应用程序方案注册为 "URL 类型
有关 iOS URL 方案的详细信息,请参阅Apple 开发人员文档。
SDK 配置
在应用程序中添加 SingularLinkHandler
配置 SingularLinkHandler,以便在应用程序启动时处理传入的深度链接和延迟的深度链接数据。
实现步骤
- 将SingularLinkHandler接口添加到主类中,或创建一个专用类并将其附加到 SingularSDKObject 中。
-
在脚本顶部添加 Singular 指令:
using Singular; - 在你的类中实现SingularLinkHandler接口
-
调用
SetSingularLinkHandler()注册处理程序(建议在Awake()函数中使用 -
覆盖
OnSingularLinkResolved()以处理深层链接参数
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Singular;
public class DeepLinkManager : MonoBehaviour, SingularLinkHandler
{
void Awake()
{
Debug.Log("Registering Singular Link Handler");
// Register this class as the Singular Link handler
// This will fetch the tracking link details and call OnSingularLinkResolved
SingularSDK.SetSingularLinkHandler(this);
}
// Callback method that receives deep link parameters
public void OnSingularLinkResolved(SingularLinkParams linkParams)
{
Debug.Log("Singular Link Resolved");
// Extract parameters from the tracking link
string deeplink = linkParams.Deeplink;
string passthrough = linkParams.Passthrough;
bool isDeferred = linkParams.IsDeferred;
// Log the parameters
Debug.Log($"Deeplink: {deeplink ?? "null"}");
Debug.Log($"Passthrough: {passthrough ?? "null"}");
Debug.Log($"Is Deferred: {isDeferred}");
// Handle deep link routing
if (!string.IsNullOrEmpty(deeplink))
{
HandleDeepLink(deeplink, isDeferred);
}
}
private void HandleDeepLink(string url, bool isDeferred)
{
// Your deep link routing logic here
Debug.Log($"Routing to: {url} (Deferred: {isDeferred})");
// Example: Parse the URL and navigate to the appropriate screen
// if (url.Contains("product"))
// {
// NavigateToProduct(url);
// }
}
}
注:SingularLinkHandler 仅在应用程序通过 Singular Link 打开时触发。有关详细信息,请参阅Singular Links FAQ。
处理程序行为
了解 SingularLinkHandler 的执行
根据应用程序是新安装还是已安装,SingularLinkHandler 的行为会有所不同。
全新安装(延迟深度链接)
刚安装时,应用程序启动时不存在打开 URL。Singular 会完成归因,以确定跟踪链接是否包含深度链接或延迟深度链接值。
延迟深度链接流程:
- 用户点击配置了深度链接值的 Singular 跟踪链接
- 用户安装并首次打开应用程序
- Singular SDK 向 Singular 服务器发送第一个会话
- 归因完成,并从跟踪链接中识别深层链接
-
深度链接值通过
isDeferred = true返回到deeplink参数中的 SingularLinkHandler。
测试延迟深度链接:
- 从测试设备上卸载应用程序(如果当前已安装)
- iOS:重置您的 IDFA。Android:重置您的谷歌广告 ID (GAID)
- 点击设备上的 Singular 跟踪链接(确保配置了深度链接值
- 安装并打开应用程序
归因应成功完成,延迟的深度链接值将传递给 SingularLinkHandler。
专业提示在使用不同软件包名称或捆绑 ID 的开发构建测试深度链接时,请专门为开发应用的标识符配置跟踪链接。点击测试链接后,通过 Unity 或特定平台工具将开发构建直接安装到设备上,而不是从应用商店下载生产应用。
已安装(即时深度链接)
当应用程序已安装时,点击奇异链接可使用通用链接(iOS)或安卓应用程序链接技术立即打开应用程序。
即时深度链接流程:
- 用户点击奇异跟踪链接
- 操作系统提供包含整个 Singular 跟踪链接的开放 URL
- 在 SDK 初始化过程中,Singular 对 URL 进行解析
-
Singular 提取
deeplink和passthrough值 -
通过 SingularLinkHandler 返回值,
isDeferred = false
直通参数
使用直通参数从跟踪链接点击中获取其他数据。
如果跟踪链接中包含passthrough (_p) 参数,SingularLinkHandler 的passthrough 参数就会包含相应的数据。使用该参数可捕获营销活动元数据、用户细分数据或应用程序中需要的任何自定义信息。
转发所有查询参数
通过添加_forward_params=2 参数,从跟踪链接 URL 获取所有查询参数。
当_forward_params=2 添加到跟踪链接时,所有查询参数都会包含在 SingularLinkHandler 的deeplink 参数中,从而让您可以访问包含所有参数的完整 URL。
跟踪链接示例:
https://yourapp.sng.link/A1b2c/abc123?_dl=myapp://product/123&_forward_params=2&utm_source=facebook&promo=SALE2024
SingularLinkHandler 将接收:
deeplink = "myapp://product/123?utm_source=facebook&promo=SALE2024"