adjust-icon

深度链接

您可以创建深度链接来将用户转到应用中的特定页面。针对用户是否已在设备上安装您的应用,Adjust SDK 会使用不同的逻辑:

  • 直接深度链接:用于用户已经安装应用的情况。用户会被转向链接中指定的页面。
  • 如果用户尚未安装应用,那么就会发生延迟深度链接。链接首先会将用户转向应用商店页面来安装应用。用户安装后,就会被带到链接中指定的页面。

用户通过链接打开应用后,SDK 就可以读取深度链接数据了。

设置深度链接

如果用户已经安装了您的应用,那么在与包含深度链接信息的链接互动时,应用就会打开。Adjust SDK 中包含的工具能够解析深度链接信息,在应用中使用。要为您的应用配置深度链接,请选择一个唯一的 Scheme 名称,并将其指定给特定处理程序方法。为此,请进行下列操作:

  1. 打开 Solution Explorer
  2. 双击 Package.appxmanifest,打开 manifest designer (清单设计工具)。
  3. 选择 Declarations (声明) 标签页。
  4. 选择 Available Declarations (可用声明) —> Protocol (协议) ,并选择 Add (添加)。
  5. 为您的 URI Scheme 指定一个名称。必须使用 小写 字母。
  6. 按下 Ctrl+S 键保存变更。

Package.appxmanifest 配置的屏幕截图。

下一步,请设置您的 OnActivated 事件处理程序,以处理被激活的深度链接事件。为此,请将下列行添加至您的 App.xaml.cs 文件:

App.xaml.cs
// ...
protected override void OnActivated(IActivatedEventArgs args) {
if (args.Kind == ActivationKind.Protocol) {
var eventArgs = args as ProtocolActivatedEventArgs;
if (eventArgs != null) {
// to get deep link URI:
Uri deeplink = eventArgs.Uri;
// ...
}
}
base.OnActivated(args);
}
// ...

如果用户与链接互动,而该链接 deep_link 参数中包含您的 唯一 Scheme 名称 ,那么您的应用就会打开。该值必须在 URL 中进行 URL 编码。Adjust SDK 将以未编码的文本形式传送结果。

延迟深度链接

属性声明
public Func<Uri, bool> DeeplinkResponse { get; set; }

您可以配置 Adjust SDK,使其在接收到延迟深度链接时调用一个委托函数。委托函数会以 string 参数的形式接收深度链接。SDK 从 Adjust 服务器接收到深度链接内容后,就会通过该委托函数传送,并预计收到 bool 返回值。该值代表 SDK 是否应启动 OnActivated 事件处理程序。

var adjustConfig = new AdjustConfig(appToken, environment,
msg => System.Diagnostics.Debug.WriteLine(msg), LogLevel.Verbose);
adjustConfig.DeeplinkResponse = deepLinkUri =>
{
if (ShouldAdjustSdkLaunchTheDeeplink(deepLinkUri))
{
return true;
}
else
{
return false;
}
};
Adjust.ApplicationLaunching(adjustConfig);
// ...
方法签名
public static void AppWillOpenUrl(Uri uri);

要对用户进行再归因,您需要在应用中对 Adjust SDK 做一个额外调用。应用接收到深度链接内容时,向 appWillOpenUrl(Uri, Context) 方法添加一个调用。此时,Adjust SDK 就会在深度链接中寻找新的归因信息。如果 SDK 找到新信息,就会将其转发至 Adjust 服务器进行再归因。

如果用户点击了 Adjust 深度链接,需要被再归因,那么归因回传就会被触发。

请务必在应用的 OnActivated 方法中调用 Adjust.AppWillOpenUrl

using AdjustSdk;
public partial class App : Application
{
protected override void OnActivated(IActivatedEventArgs args) {
if (args.Kind == ActivationKind.Protocol) {
var eventArgs = args as ProtocolActivatedEventArgs;
if (eventArgs != null) {
Adjust.AppWillOpenUrl(eventArgs.Uri);
}
}
//...
}
}