- 版本:0.2.0
- GitHub: https://github.com/dermanostic/nativescript-plugins/tree/master
- NPM: https://npmjs.net.cn/package/%40dermanostic%2Fnativescript-adjust
- 下载
- 昨日:0
- 上周:0
- 上个月:0
摘要
这是Adjust™的Nativescript SDK。您可以在adjust.com了解更多关于Adjust™的信息。
目录
示例应用
在apps/demo
目录中有一个示例应用。
基本集成
我们将描述将Adjust SDK集成到您的Nativescript项目中的步骤。您可以使用任何文本编辑器或IDE进行Nativescript开发。没有关于开发环境的假设。
获取SDK
首先,从npm
下载库
$ npm install @dermanostic/nativescript-adjust --save
将SDK集成到您的应用中
您应该在您的.js
文件顶部使用以下导入语句
import { Adjust, AdjustEvent, AdjustConfig } from '@dermanostic/nativescript-adjust';
在您的App.js
文件中,添加以下代码以初始化Adjust SDK
constructor(props) {
super(props);
const adjustConfig = new AdjustConfig("{YourAppToken}", AdjustConfig.EnvironmentSandbox);
Adjust.create(adjustConfig);
}
将{YourAppToken}
替换为您的应用程序令牌。您可以在Adjust仪表板上找到它。
根据您是构建用于测试还是用于生产的应用程序,您必须使用以下值之一设置环境
AdjustConfig.EnvironmentSandbox
AdjustConfig.EnvironmentProduction
重要:如果并且仅当您或其他人正在测试您的应用程序时,此值应设置为AdjustConfig.EnvironmentSandbox
。确保在发布应用程序之前将环境设置为AdjustConfig.EnvironmentProduction
。在您再次开始开发和测试时,将其设置回AdjustConfig.EnvironmentSandbox
。
我们使用此环境来区分真实流量和测试设备的测试流量。始终保持此值有意义非常重要!
Adjust日志记录
您可以通过在您的 AdjustConfig
实例上调用 setLogLevel
方法,并使用以下参数之一来增加或减少测试中显示的日志量。
adjustConfig.setLogLevel(AdjustConfig.LogLevelVerbose); // enable all logging
adjustConfig.setLogLevel(AdjustConfig.LogLevelDebug); // enable more logging
adjustConfig.setLogLevel(AdjustConfig.LogLevelInfo); // the default
adjustConfig.setLogLevel(AdjustConfig.LogLevelWarn); // disable info logging
adjustConfig.setLogLevel(AdjustConfig.LogLevelError); // disable warnings as well
adjustConfig.setLogLevel(AdjustConfig.LogLevelAssert); // disable errors as well
adjustConfig.setLogLevel(AdjustConfig.LogLevelSuppress); // disable all logging
调整项目设置
一旦 Adjust SDK 添加到您的应用程序中,就会执行一些调整,以确保 Adjust SDK 正常工作。以下列出了 Adjust SDK 在添加到您的应用程序后执行的所有附加操作,以及为了使 Adjust SDK 正常工作您需要执行的操作。
Android 权限
默认情况下,Adjust SDK 会将两个权限添加到您的应用程序的 AndroidManifest.xml
文件中。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
INTERNET
权限可能在任何时间点需要我们的 SDK。如果您的应用程序不是针对 Google Play 商店且不使用 Google Play 服务,Adjust SDK 需要使用 ACCESS_WIFI_STATE
权限。如果您针对 Google Play 商店且使用 Google Play 服务,Adjust SDK 不需要此权限。如果您在应用程序的其他地方也不需要它,您可以将其删除。
Google Play 服务
从 2014 年 8 月 1 日起,Google Play 商店中的应用程序必须使用 Google 广告 ID 来唯一标识设备。为了允许 Adjust SDK 使用 Google 广告 ID,您必须集成 Google Play 服务。
为此,打开您的应用程序的 build.gradle
文件,找到 dependencies
块。添加以下行:
compile 'com.google.android.gms:play-services-analytics:10.0.1'
注意:您使用的 Google Play 服务库的版本对 Adjust SDK 不重要,只要您的应用程序中有库的统计分析部分即可。在上面的示例中,我们只是使用了写作时的最新版本库。
为了检查 Google Play 服务库的统计分析部分是否已成功添加到您的应用程序,以便 Adjust SDK 可以正确读取它,您应该通过配置 SDK 以在 sandbox
模式下运行并设置日志级别为 verbose
来启动您的应用程序。之后,在您的应用程序中跟踪一个会话或一些事件,并观察会话或事件被跟踪后读取的详细日志中的参数列表。如果您看到名为 gps_adid
的参数,则您已成功将 Google Play 服务库的统计分析部分添加到您的应用程序中,并且我们的 SDK 正在从其中读取必要的信息。
如果您在尝试读取 Google 广告标识符时遇到任何问题,请随时在我们的 Github 仓库中打开一个问题,或发送电子邮件至 [email protected]。
Proguard 设置
如果您使用 Proguard,请将这些行添加到您的 Proguard 文件中:
-keep public class com.adjust.sdk.** { *; }
-keep class com.google.android.gms.common.ConnectionResult {
int SUCCESS;
}
-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient {
com.google.android.gms.ads.identifier.AdvertisingIdClient$Info getAdvertisingIdInfo(android.content.Context);
}
-keep class com.google.android.gms.ads.identifier.AdvertisingIdClient$Info {
java.lang.String getId();
boolean isLimitAdTrackingEnabled();
}
-keep public class com.android.installreferrer.** { *; }
安装引用者
为了正确地将您的 Android 应用程序的安装归因于其来源,Adjust 需要有关 安装引用者 的信息。这可以通过使用 Google Play 引用者 API 或通过使用广播接收器捕获 Google Play 商店意图 来获取。
重要:Google Play 引用者 API 是 Google 新推出的,旨在提供一种更可靠、更安全的方式来获取安装引用者信息,并帮助归因提供者在打击点击注入的斗争中提供帮助。强烈建议您在您的应用程序中支持此功能。Google Play 商店意图是获取安装引用者信息的一种不太安全的方式。它将暂时与新的 Google Play 引用者 API 并行存在,但预计将来将被弃用。
Google Play 引用者 API
为了支持此功能,请将以下行添加到您的应用程序的 build.gradle
文件中:
compile 'com.android.installreferrer:installreferrer:1.0'
installreferrer
库是 Google Maven 仓库的一部分,因此为了能够构建您的应用程序,如果您尚未添加,则需要将 Google Maven 仓库添加到应用程序的 build.gradle
文件中。
allprojects {
repositories {
jcenter()
maven {
url "https://maven.google.com"
}
}
}
另外,请确保您已注意到 Proguard 设置 章节并已添加其中提到的所有规则,特别是本功能所需的规则。
-keep public class com.android.installreferrer.** { *; }
如果您使用的是 Adjust SDK v4.12.0 或更高版本,则此功能受支持。
Google Play 商店意图
Google Play 商店 INSTALL_REFERRER
意图应通过广播接收器进行捕获。Adjust 安装引用广播接收器默认添加到您的应用程序中。有关更多信息,您可以查看我们的本地 Android SDK README。您可以在我们 Nativescript 插件的一部分 AndroidManifest.xml
文件中看到这一点。
<receiver android:name="com.adjust.sdk.AdjustReferrerReceiver"
android:exported="true" >
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
请注意,如果您使用自己的广播接收器来处理 INSTALL_REFERRER
意图,则不需要将 Adjust 广播接收器添加到您的清单文件中。您可以将其删除,但在您自己的接收器内部添加 Adjust 广播接收器的调用,如我们在 Android 指南 中所述。
华为引用 API
从 v4.22.0 版本开始,Adjust SDK 支持在华为 App Gallery 版本 10.4 及更高版本的华为设备上跟踪安装。无需额外的集成步骤即可开始使用华为引用 API。
iOS 框架
在项目导航器中选择您的项目。在主视图的左侧,选择您的目标。在 Build Phases
选项卡中,展开 Link Binary with Libraries
组。在该部分底部点击 +
按钮。选择 AdSupport.framework
并点击 Add
按钮。除非您正在使用 tvOS
,否则重复相同的步骤以添加 iAd.framework
、CoreTelephony.framework
、AppTrackingTransparency.framework
和 StoreKit.framework
。将这两个框架的状态更改为 Optional
。Adjust SDK 使用这些框架进行以下用途:
iAd.framework
- 如果您正在运行 iAd 营销活动AdSupport.framework
- 用于读取 iOS 广告标识符 (IDFA)CoreTelephony.framework
- 用于读取 MCC 和 MNC 信息StoreKit.framework
- 用于与 SKAdNetwork 框架通信AppTrackingTransparency.framework
- 用于请求用户同意跟踪并获取该同意的状态
如果您没有运行任何 iAd 营销活动,您可以随意删除 iAd.framework
依赖项。如果您不使用 SKAdNetwork 框架,也可以随意删除 StoreKit.framework
依赖项(除非您需要它用于其他目的)。
其他功能
一旦将 Adjust SDK 集成到您的项目中,您就可以利用以下功能。
AppTrackingTransparency 框架
注意:此功能仅存在于 iOS 平台。
对于每个发送的包,Adjust 后端将接收以下四个(4)个状态之一,用于访问与应用程序相关的数据,可用于跟踪用户或设备:
- 授权
- 拒绝
- 未确定
- 限制
在设备接收到用于用户或设备跟踪的应用相关数据访问授权请求以进行批准后,返回的状态将是授权或拒绝。
在设备接收到用于跟踪用户或设备的应用相关数据访问授权请求之前,返回的状态将是未确定。
如果使用应用跟踪数据的授权受到限制,则返回的状态将是限制。
SDK内置了一种机制,在用户响应弹出对话框后接收更新后的状态,以防您不想自定义显示的对话框。为了方便高效地将新的同意状态通知到后端,Adjust SDK提供了一个包装器,用于封装下章所述的应用跟踪授权方法,即“应用跟踪授权包装器”。
应用跟踪授权包装器
注意:此功能仅存在于 iOS 平台。
Adjust SDK提供了使用它来请求用户授权访问其应用相关数据的功能。Adjust SDK在requestTrackingAuthorizationWithCompletionHandler:方法之上构建了一个包装器,您也可以定义回调方法以获取有关用户选择的详细信息。此外,使用此包装器,一旦用户响应弹出对话框,就会通过您的回调方法将其通知回去。SDK还将向后端通知用户的选择。整数值将通过您的回调方法以以下含义传递
- 0:
ATTrackingManagerAuthorizationStatusNotDetermined
- 1:
ATTrackingManagerAuthorizationStatusRestricted
- 2:
ATTrackingManagerAuthorizationStatusDenied
- 3:
ATTrackingManagerAuthorizationStatusAuthorized
要使用此包装器,您可以按如下方式调用它
Adjust.requestTrackingAuthorizationWithCompletionHandler(function(status) {
switch (status) {
case 0:
// ATTrackingManagerAuthorizationStatusNotDetermined case
break;
case 1:
// ATTrackingManagerAuthorizationStatusRestricted case
break;
case 2:
// ATTrackingManagerAuthorizationStatusDenied case
break;
case 3:
// ATTrackingManagerAuthorizationStatusAuthorized case
break;
}
});
在调用方法之前,请确保您的iOS应用的Info.plist
中包含NSUserTrackingUsageDescription
键的条目。如果没有该键并且使用此方法,应用将崩溃。
SKAdNetwork框架
注意:此功能仅存在于 iOS 平台。
如果您已经实现了Adjust iOS SDK v4.23.0或更高版本,并且您的应用正在iOS 14上运行,与SKAdNetwork的通信将默认开启,尽管您可以选择将其关闭。开启后,Adjust会在SDK初始化时自动注册SKAdNetwork归因。如果Adjust仪表板中设置了接收转换值的事件,Adjust后端将发送转换值数据到SDK。SDK然后将设置转换值。当Adjust收到SKAdNetwork回调数据后,它将在仪表板中显示。
如果您不希望Adjust SDK自动与SKAdNetwork通信,您可以通过在配置对象上调用以下方法来禁用该功能
adjustConfig.deactivateSKAdNetworkHandling();
事件跟踪
您可以使用Adjust跟踪各种事件。例如,您想跟踪按钮上的每个点击。只需在您的仪表板中创建一个新的事件令牌。假设该事件令牌是abc123
。您可以在按钮的点击处理方法中添加以下行来跟踪点击
var adjustEvent = new AdjustEvent("abc123");
Adjust.trackEvent(adjustEvent);
收入跟踪
如果您的用户可以通过点击广告或进行内购来生成收入,那么您可以使用事件来跟踪这些收入。例如,一个点击值€0.01。您可以像这样跟踪收入事件
var adjustEvent = new AdjustEvent("abc123");
adjustEvent.setRevenue(0.01, "EUR");
Adjust.trackEvent(adjustEvent);
当您设置货币令牌时,Adjust将自动将传入的收入转换为您选择的报告收入。有关货币转换的更多信息。
收入去重
您还可以添加一个可选的交易ID,以避免跟踪重复的收入。最后十个交易ID将被记住,具有重复交易ID的收入事件将被跳过。这对于内购跟踪特别有用。以下是一个示例。
如果您想跟踪内购,请确保只有在交易完成并且购买了项目时才调用trackEvent
。这样,您可以避免跟踪实际上没有生成的收入。
var adjustEvent = new AdjustEvent("abc123");
adjustEvent.setRevenue(0.01, "EUR");
adjustEvent.setTransactionId("{YourTransactionId}");
Adjust.trackEvent(adjustEvent);
注意:交易ID是iOS术语,成功完成Android内购的唯一标识符称为订单ID。
内购验证
应用内购买验证可以通过目前正在开发中的Nativescript Purchase SDK进行,并将很快公开。如需更多信息,请联系[email protected]。
回调参数
您还可以在您的仪表板中注册该事件的回调URL,每当事件被跟踪时,我们将向该URL发送GET请求。在这种情况下,您也可以在对象中放入一些键值对,并将其传递给trackEvent
方法。然后我们将将这些命名参数附加到您的回调URL上。
例如,假设您已为具有事件令牌abc123
的事件注册了URL http://www.adjust.com/callback
,并执行以下代码
var adjustEvent = new AdjustEvent("abc123");
adjustEvent.addCallbackParameter("key", "value");
adjustEvent.addCallbackParameter("foo", "bar");
Adjust.trackEvent(adjustEvent);
在这种情况下,我们会跟踪事件并发送请求到
http://www.adjust.com/callback?key=value&foo=bar
需要注意的是,我们支持多种占位符,如iOS的{idfa}
或Android的{gps_adid}
,这些占位符可以用作参数值。在最终的回调中,{idfa}
占位符将被替换为iOS设备当前设备的广告商ID,而{gps_adid}
将被替换为Android设备当前设备的谷歌广告ID。请注意,我们不存储任何自定义参数,但仅将它们附加到您的回调中。如果您未为事件注册回调,则这些参数甚至不会被读取。
您可以在我们的回调指南中了解有关使用URL回调的更多信息,包括完整的可用值列表。
注意:此方法中的两个参数都必须是字符串。如果传递的参数中任何一个不是字符串,则键值对将不会添加到参数列表中。
合作伙伴参数
类似于上述提到的回调参数,您还可以添加Adjust将发送到您选择的网络合作伙伴的参数。您可以在Adjust仪表板中激活这些网络。
这与上述提到的回调参数的工作方式类似,但可以通过在您的AdjustEvent
实例上调用addPartnerParameter
方法来添加。
var adjustEvent = new AdjustEvent("abc123");
adjustEvent.addPartnerParameter("key", "value");
adjustEvent.addPartnerParameter("foo", "bar");
Adjust.trackEvent(adjustEvent);
您可以在我们的特殊合作伙伴指南中了解有关特殊合作伙伴和网络的信息。
注意:此方法中的两个参数都必须是字符串。如果传递的参数中任何一个不是字符串,则键值对将不会添加到参数列表中。
回调标识符
您还可以为要跟踪的每个事件添加自定义字符串标识符。该标识符将在事件成功和/或事件失败回调中报告,以便您跟踪哪个事件成功跟踪或未成功跟踪。您可以通过在您的AdjustEvent
实例上调用setCallbackId
方法来设置此标识符。
var adjustEvent = new AdjustEvent("abc123");
adjustEvent.setCallbackId("Your-Custom-Id");
Adjust.trackEvent(adjustEvent);
订阅跟踪
注意:此功能仅在SDK v4.22.0及以上版本中可用。
您可以使用Adjust SDK跟踪App Store和Play Store订阅,并验证它们的有效性。在订阅成功购买后,对Adjust SDK执行以下调用
对于App Store订阅
var subscription = new AdjustAppStoreSubscription(price, currency, transactionId, receipt);
subscription.setTransactionDate(transactionDate);
subscription.setSalesRegion(salesRegion);
Adjust.trackAppStoreSubscription(subscription);
对于Play Store订阅
var subscription = new AdjustPlayStoreSubscription(price, currency, sku, orderId, signature, purchaseToken);
subscription.setPurchaseTime(purchaseTime);
Adjust.trackPlayStoreSubscription(subscription);
App Store订阅的订阅跟踪参数
- 价格
- 货币(您需要传递currencyCode和priceLocale对象的currencyCode)
- 交易ID
- 收据
- 交易日期
- 销售区域(您需要传递countryCode和priceLocale对象的countryCode)
Play Store订阅的订阅跟踪参数
注意:Adjust SDK提供的订阅跟踪API期望所有参数都以字符串
的形式传递。上面描述的参数是API期望你在跟踪订阅之前传递给订阅对象的参数。在Nativescript中,有许多处理应用内购买的库,每个库都应该在成功完成订阅购买后以某种形式返回上述信息。你应该找到这些参数在你使用的应用内购买库的响应中的位置,提取这些值并将它们作为字符串值传递给Adjust API。
与事件跟踪一样,你也可以将回调和合作伙伴参数附加到订阅对象上。
对于App Store订阅
var subscription = new AdjustAppStoreSubscription(price, currency, transactionId, receipt);
subscription.setTransactionDate(transactionDate);
subscription.setSalesRegion(salesRegion);
// add callback parameters
subscription.addCallbackParameter("key", "value");
subscription.addCallbackParameter("foo", "bar");
// add partner parameters
subscription.addPartnerParameter("key", "value");
subscription.addPartnerParameter("foo", "bar");
Adjust.trackAppStoreSubscription(subscription);
对于Play Store订阅
var subscription = new AdjustPlayStoreSubscription(price, currency, sku, orderId, signature, purchaseToken);
subscription.setPurchaseTime(purchaseTime);
// add callback parameters
subscription.addCallbackParameter("key", "value");
subscription.addCallbackParameter("foo", "bar");
// add partner parameters
subscription.addPartnerParameter("key", "value");
subscription.addPartnerParameter("foo", "bar");
Adjust.trackPlayStoreSubscription(subscription);
会话参数
某些参数被保存下来,以便在Adjust SDK的每个事件和会话中发送。一旦你添加了这些参数中的任何一个,你就不需要每次都添加它们,因为它们将被本地保存。如果你添加了相同的参数两次,将不会有任何效果。
可以在启动Adjust SDK之前调用这些会话参数,以确保它们在安装时也能发送。如果你需要与安装一起发送它们,但只能在启动后获得所需的值,则可以通过延迟Adjust SDK的第一次启动来允许这种行为。
会话回调参数
为事件注册的相同回调参数也可以保存下来,以便在Adjust SDK的每个事件或会话中发送。
会话回调参数的接口与事件回调参数类似。不是将键及其值添加到事件中,而是通过调用Adjust
实例的addSessionCallbackParameter
方法来添加。
Adjust.addSessionCallbackParameter("foo", "bar");
会话回调参数将与回调参数合并,并添加到事件中。添加到事件中的回调参数具有比会话回调参数更高的优先级。这意味着,当将具有相同键的回调参数添加到事件中时,优先的是添加到事件中的回调参数。
注意:此方法中的两个参数都必须是字符串。如果传递的参数中任何一个不是字符串,则键值对将不会添加到参数列表中。
可以通过将所需的键传递给Adjust
实例的removeSessionCallbackParameter
方法来删除特定的会话回调参数。
Adjust.removeSessionCallbackParameter("foo");
如果您希望从会话回调参数中删除所有键和值,可以使用Adjust
实例的resetSessionCallbackParameters
方法重置它。
Adjust.resetSessionCallbackParameters();
会话合作伙伴参数
与会话回调参数一样,为Adjust SDK的每个事件或会话发送,还有会话合作伙伴参数。
这些将被传输给网络合作伙伴,用于您在Adjust 仪表板中激活的集成。
会话合作伙伴参数的接口与事件合作伙伴参数类似。不是将键及其值添加到事件中,而是通过调用Adjust
实例的addSessionPartnerParameter
方法来添加。
Adjust.addSessionPartnerParameter("foo", "bar");
会话合作伙伴参数将与合作伙伴参数合并,并添加到事件中。添加到事件中的合作伙伴参数具有比会话合作伙伴参数更高的优先级。这意味着,当将具有相同键的合作伙伴参数添加到事件中时,优先的是添加到事件中的合作伙伴参数。
注意:此方法中的两个参数都必须是字符串。如果传递的参数中任何一个不是字符串,则键值对将不会添加到参数列表中。
可以通过将所需的键传递给Adjust
实例的removeSessionPartnerParameter
方法来删除特定的会话合作伙伴参数。
Adjust.removeSessionPartnerParameter("foo");
如果您希望从会话合作伙伴参数中删除所有键和值,可以使用Adjust
实例的resetSessionPartnerParameters
方法重置它。
Adjust.resetSessionPartnerParameters();
延迟启动
延迟Adjust SDK的启动可以让您的应用有足够的时间获取会话参数,例如唯一的标识符,以便在安装时发送。
使用AdjustConfig
实例的setDelayStart
字段设置初始延迟时间(秒)。
adjustConfig.setDelayStart(5.5);
在这种情况下,Adjust SDK将不会在5.5秒内发送初始安装会话和创建的任何事件。在这段时间过后或如果你在此期间调用了Adjust
实例的sendFirstPackages()
方法,每个会话参数将被添加到延迟安装会话和事件中,Adjust SDK将恢复正常。
Adjust SDK的最大延迟启动时间是10秒。.
归因回调
您可以注册一个监听器来接收跟踪器归因变化的通知。由于归因考虑了不同的来源,这些信息无法同步提供。最简单的方法是创建一个匿名监听器,每次用户归因值发生变化时都会被调用。
使用AdjustConfig
实例,在启动SDK之前,添加匿名监听器。
var adjustConfig = new AdjustConfig(appToken, environment);
adjustConfig.setAttributionCallbackListener(function(attribution) {
// Printing all attribution properties.
console.log("Attribution changed!");
console.log(attribution.trackerToken);
console.log(attribution.trackerName);
console.log(attribution.network);
console.log(attribution.campaign);
console.log(attribution.adgroup);
console.log(attribution.creative);
console.log(attribution.clickLabel);
console.log(attribution.adid);
});
Adjust.create(adjustConfig);
在监听器函数中,您可以访问attribution
参数。以下是其属性的快速总结:
trackerToken
当前归因的跟踪器令牌。trackerName
当前归因的跟踪器名称。network
当前归因的网络分组级别。campaign
当前归因的活动分组级别。adgroup
当前归因的广告组分组级别。creative
当前归因的创意分组级别。clickLabel
当前归因的点击标签。adid
Adjust设备标识符。
请确保考虑我们的适用归因数据政策。
会话和事件回调
您可以为成功和失败跟踪的事件和/或会话注册回调。
按照与归因回调相同的步骤实现以下成功跟踪事件的回调函数
var adjustConfig = new AdjustConfig(appToken, environment);
adjustConfig.setEventTrackingSucceededCallbackListener(function(eventSuccess) {
// Printing all event success properties.
console.log("Event tracking succeeded!");
console.log(eventSuccess.message);
console.log(eventSuccess.timestamp);
console.log(eventSuccess.eventToken);
console.log(eventSuccess.callbackId);
console.log(eventSuccess.adid);
console.log(eventSuccess.jsonResponse);
});
Adjust.create(adjustConfig);
以下失败跟踪事件的回调函数
var adjustConfig = new AdjustConfig(appToken, environment);
adjustConfig.setEventTrackingFailedCallbackListener(function(eventFailure) {
// Printing all event failure properties.
console.log("Event tracking failed!");
console.log(eventFailure.message);
console.log(eventFailure.timestamp);
console.log(eventFailure.eventToken);
console.log(eventFailure.callbackId);
console.log(eventFailure.adid);
console.log(eventFailure.willRetry);
console.log(eventFailure.jsonResponse);
});
Adjust.create(adjustConfig);
对于成功跟踪的会话
var adjustConfig = new AdjustConfig(appToken, environment);
adjustConfig.setSessionTrackingSucceededCallbackListener(function(sessionSuccess) {
// Printing all session success properties.
console.log("Session tracking succeeded!");
console.log(sessionSuccess.message);
console.log(sessionSuccess.timestamp);
console.log(sessionSuccess.adid);
console.log(sessionSuccess.jsonResponse);
});
Adjust.create(adjustConfig);
以及对于失败跟踪的会话
var adjustConfig = new AdjustConfig(appToken, environment);
adjustConfig.setSessionTrackingFailedCallbackListener(function(sessionFailure) {
// Printing all session failure properties.
console.log("Session tracking failed!");
console.log(sessionFailure.message);
console.log(sessionFailure.timestamp);
console.log(sessionFailure.adid);
console.log(sessionFailure.willRetry);
console.log(sessionFailure.jsonResponse);
});
Adjust.create(adjustConfig);
回调函数将在SDK尝试向服务器发送数据包之后调用。在回调中,您可以访问专门为回调提供的响应数据对象。以下是会话响应数据属性的快速总结:
var message
服务器消息或SDK记录的错误。var timestamp
服务器的时间戳。var adid
Adjust提供的唯一设备标识符。var jsonResponse
服务器响应的JSON对象。
两个事件响应数据对象都包含
var eventToken
事件令牌,如果跟踪的包是事件。var callbackId
在事件对象上设置的自定义定义的回调ID。
并且事件和会话失败对象也包含
var willRetry
表示将在稍后时间尝试重新发送包。
禁用跟踪
您可以通过调用Adjust
实例的setEnabled
方法并将启用参数设置为false
来禁用Adjust SDK的跟踪。此设置在会话之间被记住,但只能在第一次会话之后激活。
Adjust.setEnabled(false);
您可以使用Adjust
实例的isEnabled
方法验证Adjust SDK当前是否处于活动状态。始终可以通过调用setEnabled
并将参数设置为true
来激活Adjust SDK。
离线模式
您可以将Adjust SDK置于离线模式,以暂停向我们的服务器传输数据,同时保留待发送的追踪数据。在离线模式下,所有信息都会保存到文件中,因此请注意不要在离线模式下触发过多事件。
您可以通过调用Adjust
实例的setOfflineMode
方法,并传入参数true
来激活离线模式。
Adjust.setOfflineMode(true);
相反,您可以通过调用setOfflineMode
并传入false
来停用离线模式。当Adjust SDK恢复到在线模式时,所有保存的信息都将带有正确的时间信息发送到我们的服务器。
与禁用跟踪不同,此设置不会在会话之间保留。这意味着每次启动SDK时,它都处于在线模式,即使应用程序是在离线模式下终止的。
事件缓冲
如果您的应用程序大量使用事件跟踪,您可能希望延迟一些HTTP请求,以便每分钟批量发送一次。您可以通过调用setEventBufferingEnabled
方法来启用事件缓冲,该方法属于您的AdjustConfig
实例。
var adjustConfig = new AdjustConfig(appToken, environment);
adjustConfig.setEventBufferingEnabled(true);
Adjust.create(adjustConfig);
GDPR“被遗忘权”
根据欧盟通用数据保护条例(GDPR)第17条,当用户行使了“被遗忘权”时,您可以通知Adjust。调用以下方法将指示Adjust SDK将其用户的“被遗忘”选择通知Adjust后端。
Adjust.gdprForgetMe();
收到此信息后,Adjust将删除用户的数据,Adjust SDK将停止跟踪用户。将来不会将来自此设备的请求发送到Adjust。
禁用特定用户的第三方共享
现在,当用户行使了停止与合作伙伴共享其数据用于营销目的的权利,但允许将其用于统计目的时,您可以通过Adjust通知这一点。
调用以下方法来指示Adjust SDK将其用户选择禁用数据共享的通知发送到Adjust后端。
Adjust.disableThirdPartySharing();
收到此信息后,Adjust将阻止将特定用户的数据与合作伙伴共享,Adjust SDK将继续正常运行。
SDK签名
账户经理必须激活Adjust SDK签名。如果您有兴趣使用此功能,请联系Adjust支持([email protected])。
如果您的账户已启用SDK签名,并且您有权访问Adjust仪表板中的App Secrets,请使用以下方法将SDK签名集成到您的应用程序中。
App Secret通过将所有秘密参数(secretId
,info1
,info2
,info3
,info4
)传递给AdjustConfig
实例的setAppSecret
方法来设置。
var adjustConfig = new AdjustConfig(appToken, environment);
adjustConfig.setAppSecret(secretId, info1, info2, info3, info4);
Adjust.create(adjustConfig);
后台跟踪
Adjust SDK的默认行为是在应用程序处于后台时暂停发送HTTP请求。您可以通过调用setSendInBackground
方法来更改这一点,该方法属于您的AdjustConfig
实例。
var adjustConfig = new AdjustConfig(appToken, environment);
adjustConfig.setSendInBackground(true);
Adjust.create(adjustConfig);
如果没有设置任何内容,则默认禁用后台发送。
设备ID
某些服务(如Google Analytics)要求您协调设备和客户端ID,以防止重复报告。
iOS广告标识符
您可以通过调用Adjust
实例的getIdfa
方法并传递一个回调来访问iOS设备的IDFA值,该回调将在本地iOS SDK获取IDFA值时被触发。
Adjust.getIdfa((idfa) => {
console.log("IDFA = " + idfa);
});
Google Play服务广告标识符
Adjust SDK 允许您读取运行您应用程序的 Android 设备上的 Google 广告标识符。为此,请调用 Adjust
实例的 getGoogleAdId
方法,并将您的回调作为参数传递。一旦通过本地 Android SDK 获取,您将在回调方法中接收到 Google 广告标识符值。
Adjust.getGoogleAdId((googleAdId) => {
console.log("Google Ad Id = " + googleAdId);
});
亚马逊广告标识符
如果您需要获取亚马逊广告 ID,可以调用 Adjust
实例的 getAmazonAdId
方法,并将您的回调作为参数传递,一旦获取亚马逊广告 ID 值,它将被发送到该回调。
Adjust.getAmazonAdId((amazonAdId) => {
console.log("Amazon Ad Id = " + amazonAdId);
});
Adjust 设备标识符
对于安装了您的应用程序的每个设备,Adjust 后端都会生成一个唯一的 Adjust 设备标识符(adid)。要获取此标识符,请调用 Adjust
实例的 getAdid
方法,并将您的回调作为参数传递,一旦获取,adid 值将被发送到该回调。
Adjust.getAdid((adid) => {
console.log("Adid = " + adid);
});
注意:关于 adid 的信息仅在 Adjust 后端跟踪了应用程序安装之后才可用。从那时起,Adjust SDK 将具有设备 adid 的信息,您可以通过此方法访问它。因此,在 SDK 初始化并成功跟踪您的应用程序安装之前,无法 访问 adid 值。
用户归属
此回调如 归属回调部分 中所述触发,为您提供有关每次变更时的新归属信息。如果您想在任何其他时间访问有关用户当前归属状态的信息,可以调用 Adjust
实例的 getAttribution
方法,并将您的回调作为参数传递,一旦获取归属值,它将被发送到该回调。
Adjust.getAttribution((attribution) => {
console.log("Tracker token = " + attribution.trackerToken);
console.log("Tracker name = " + attribution.trackerName);
console.log("Network = " + attribution.network);
console.log("Campaign = " + attribution.campaign);
console.log("Adgroup = " + attribution.adgroup);
console.log("Creative = " + attribution.creative);
console.log("Click label = " + attribution.clickLabel);
console.log("Adid = " + attribution.adid);
});
注意:有关用户当前归属状态的信息仅在 Adjust 后端跟踪了应用程序安装并触发了归属回调之后才可用。从那时起,Adjust SDK 将具有用户归属状态的信息,您可以通过此方法访问它。因此,在 SDK 初始化并触发归属回调之前,无法 访问用户的归属值。
推送令牌
为了将推送通知令牌发送给我们,请 在应用程序中获得令牌或更新令牌时 添加以下调用到 Adjust。
Adjust.setPushToken("YourPushNotificationToken");
推送令牌用于受众构建和客户端回调,并且对于即将推出的卸载跟踪功能是必需的。
跟踪附加设备标识符
如果您在 Google Play 商店之外 分发您的 Android 应用程序并希望跟踪附加设备标识符(IMEI 和 MEID),则需要明确指示 Adjust SDK 执行此操作。您可以通过调用 AdjustConfig
实例的 setReadMobileEquipmentIdentity
方法来完成此操作。Adjust SDK 默认不收集这些标识符。
var adjustConfig = new AdjustConfig(appToken, environment);
adjustConfig.setReadMobileEquipmentIdentity(true);
Adjust.create(adjustConfig);
您还需要将 READ_PHONE_STATE
权限添加到您的 AndroidManifest.xml
文件中。
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
为了使用此功能,需要在您的 Adjust 控制台中执行额外的步骤。有关更多信息,请联系您的专属账户经理或发送电子邮件至 [email protected]。
预安装跟踪器
如果您想使用 Adjust SDK 来识别那些在设备上预装了您的应用程序的用户,请按照以下步骤操作。
-
在您的 仪表板 中创建一个新的跟踪器。
-
打开您的应用程序代理并设置
AdjustConfig
实例的默认跟踪器。var adjustConfig = new AdjustConfig(appToken, environment);
adjustConfig.setDefaultTracker("{TrackerToken}");
Adjust.create(adjustConfig);
将步骤2中创建的追踪令牌 {TrackerToken}
替换。请注意,仪表板显示的追踪URL(包括 http://app.adjust.com/
)。在您的源代码中,您应该仅指定六位字符的令牌,而不是整个URL。
-
构建并运行您的应用。您应该在应用的日志输出中看到以下类似行
Default tracker: 'abc123'
深度链接
如果您正在使用Adjust追踪URL,并且可以从URL深度链接到您的应用,那么您可以获取关于深度链接URL及其内容的详细信息。点击URL发生在用户已经安装了您的应用(标准深度链接场景)或者他们设备上没有应用(延迟深度链接场景)的情况下。
标准深度链接场景
为了支持Android中的深度链接,需要修改应用的 AndroidManifest.xml
文件。请参阅我们Android SDK的此页以获取对 AndroidManifest.xml
的必要修改。
为了支持iOS 8或更早版本的深度链接,需要修改应用的 Info.plist
文件。请参阅我们iOS SDK的此页以获取对 Info.plist
的必要修改。
为了支持iOS 9或更高版本的深度链接,您的应用需要处理通用链接。请参阅我们iOS SDK的此页以获取必要修改。
延迟深度链接场景
虽然Android和iOS默认不支持延迟深度链接,但我们的Adjust SDK使其成为可能。
为了在延迟深度链接场景中获取URL内容的详细信息,您应该在 AdjustConfig
对象上设置一个回调方法,该方法将接收一个参数,其中包含URL的内容。您应该通过调用方法 setDeferredDeeplinkCallbackListener
在配置对象上设置此方法。
var adjustConfig = new AdjustConfig(appToken, environment);
adjustConfig.setDeferredDeeplinkCallbackListener(function(deeplink) {
console.log("Deferred deep link URL content: " + deeplink);
});
Adjust.create(adjustConfig);
在延迟深度链接场景中,还可以在 AdjustConfig
对象上设置一个附加设置。一旦Adjust SDK获取了延迟深度链接信息,我们将为您提供选择是否由我们的SDK打开此URL的机会。您可以通过在配置对象上调用 setShouldLaunchDeeplink
方法来选择此选项。
var adjustConfig = new AdjustConfig(appToken, environment);
adjustConfig.setShouldLaunchDeeplink(true);
// or adjustConfig.setShouldLaunchDeeplink(false);
adjustConfig.setDeferredDeeplinkCallbackListener(function(deeplink) {
console.log("Deferred deep link URL content: " + deeplink);
});
Adjust.create(adjustConfig);
如果没有设置任何内容,Adjust SDK将默认尝试打开URL。
通过深度链接重新分配
Adjust允许您使用深度链接运行重新参与活动。有关此信息,请参阅我们的官方文档。
如果您使用此功能,为了确保用户得到正确的重新分配,您需要在您的应用中调用Adjust SDK的一次附加调用。一旦您在应用中收到深度链接内容信息,请向 Adjust
实例的 appWillOpenUrl
方法添加一个调用。通过此调用,Adjust SDK将尝试查找深度链接中是否有任何新的分配信息,如果有,它将被发送到Adjust后端。如果您的用户由于点击包含深度链接内容的Adjust追踪URL而应该被重新分配,您将在应用中看到分配回调被触发,并带有此用户的新的分配信息。
调用 appWillOpenUrl
方法的示例如下
Linking.addEventListener('url', this.handleDeepLink);
Linking.getInitialURL().then((url) => {
if (url) {
this.handleDeepLink({ url });
}
})
handleDeepLink(event) {
Adjust.appWillOpenUrl(event.url);
}
许可
Adjust SDK遵循MIT许可证。