操作前须知
在更新到 SDK v5 之前,您需要进行以下操作:
- SDK v5 支持SDK 签名验证。如果您当前正在使用 SDK 签名库,则需要先将其卸载。
- 如果您的应用针对低于以下版本的 API,则需要先更新应用才能使用 SDK v5:
安装 beta SDK
要开始使用 SDK v5,您需要将其添加为 XCode 项目的依赖。为此请进行下列操作:
-
请移除Podfile
中所有较旧版本的 SDK。
-
添加下列行至您的 Podfile
:
-
运行pod install
来安装依赖。
更新初始化方法
在 SDK v4 中,SDK 的初始化方法是配置ADJConfig
对象并将其传递至[Adjust appDidLaunch]
方法。
let yourAppToken = "{YourAppToken}"
let environment = ADJEnvironmentSandbox as? String
let adjustConfig = ADJConfig(
environment: environment)
Adjust.appDidLaunch(adjustConfig)
NSString *yourAppToken = @"{YourAppToken}";
NSString *environment = ADJEnvironmentSandbox;
*adjustConfig = [ADJConfig configWithAppToken:yourAppToken;
environment:environment];
[Adjust appDidLaunch:adjustConfig];
在 SDK v5 中,该方法已重命名为[Adjust initSdk]
。
let yourAppToken = "{YourAppToken}"
let environment = ADJEnvironmentSandbox as? String
let adjustConfig = ADJConfig(
environment: environment)
Adjust.initSdk(adjustConfig)
NSString *yourAppToken = @"{YourAppToken}";
NSString *environment = ADJEnvironmentSandbox;
ADJConfig *adjustConfig = [[ADJConfig alloc] initWithAppToken:yourAppToken
environment:environment];
[Adjust initSdk:adjustConfig];
配置 SDK 签名库
SDK v5 包含 SDK 签名库。您可以按照签名库集成指南中的测试步骤对此进行测试。
签名保护功能默认处于禁用状态。要启用签名,您需要执行签名验证。
变更 API
SDK v5 中变更了下列 API。
禁用或启用 SDK
在 SDK v4 中,您可以通过调用带BOOL
值的[Adjust setEnabled]
来启用和禁用 SDK。
- 调用
[Adjust setEnabled:NO]
来禁用 SDK。
- 调用
[Adjust setEnabled:YES]
来启用 SDK。
Adjust.setEnabled(false) //disable SDK
Adjust.setEnabled(true) //enable SDK
[Adjust setEnabled:NO]; // disable SDK
[Adjust setEnabled:YES]; // enable SDK
在 SDK v5 中,为清晰起见,此功能被分成单独的命令。
- 调用
[Adjust disable]
来禁用 SDK。
- 调用
[Adjust enable]
来启用 SDK。
Adjust.disable() //disable SDK
Adjust.enable() //enable SDK
[Adjust disable]; // disable SDK
[Adjust enable]; // enable SDK
在后台发送信息
在 SDK v4 中,您可以使用true
参数调用[ADJConfig setSendInBackground]
方法,让 SDK 在应用在后台运行时向 Adjust 发送信息。
adjustConfig.setSendInBackground(true)
[adjustConfig setSendInBackground:YES];
在 SDK v5 中,您需要调用不带参数的[ADJConfig enableSendingInBackground]
方法,让 SDK 在应用在后台运行时向 Adjust 发送信息。
adjustConfig.enableSendingInBackground()
[adjustConfig enableSendingInBackground];
禁用 AdServices 信息读取
在 SDK v4 中,您可以使用false
参数调用[ADJConfig setAllowAdServicesInfoReading]
方法来阻止 Adjust SDK 读取 AdServices 信息。
adjustConfig.setAllowAdServicesInfoReading(false)
[adjustConfig setAllowAdServicesInfoReading:NO];
在 SDK v5 中,您需要调用不带参数的disableAdServices
方法以防止 Adjust SDK 读取 AdServices 信息。
adjustConfig.disableAdServices()
[adjustConfig disableAdServices];
禁用 IDFA 读取
在 SDK v4 中,您可以使用false
参数调用[ADJConfig setAllowIdfaReading]
方法来阻止 Adjust SDK 读取设备的 IDFA。
adjustConfig.setAllowIdfaReading(false)
[adjustConfig setAllowIdfaReading:NO];
在 SDK v5 中,您需要调用不带参数的disableIdfaReading
方法来阻止 Adjust SDK 读取设备的 IDFA。
adjustConfig.disableIdfaReading()
[adjustConfig disableIdfaReading];
在归因中启用成本数据
在 SDK v4 中,您可以通过调用带true
参数的[ADJConfig setNeedsCost]
方法在设备归因信息中启用成本数据。
adjustConfig.setNeedsCost(true)
[adjustConfig setNeedsCost:YES];
在 SDK v5 中,您需要在不带参数的情况下调用[ADJConfig enableCostDataInAttribution]
方法。
adjustConfig.enableCostDataInAttribution()
[adjustConfig enableCostDataInAttribution];
启用 LinkMe
在 SDK v4 中,您可以通过调用带有true
参数的[ADJConfig setLinkMeEnabled]
方法来启用Adjust LinkMe 。
adjustConfig.setLinkMeEnabled(true)
[adjustConfig setLinkMeEnabled:YES];
在 SDK v5 中,您需要在不带参数的情况下调用[ADJConfig enableLinkMe]
方法。
adjustConfig.enableLinkMe()
[adjustConfig enableLinkMe];
只读取设备 ID 一次
在 SDK v4 中,您可以通过调用带有true
参数的[ADJConfig setReadDeviceInfoOnceEnabled]
方法来指示 SDK 在启动时仅读取一次设备标识符。
adjustConfig.setReadDeviceInfoOnceEnabled(true)
[adjustConfig setReadDeviceInfoOnceEnabled:YES];
在 SDK v5 中,您需要在不带参数的情况下调用[ADJConfig enableDeviceIdsReadingOnce]
方法。
adjustConfig.enableDeviceIdsReadingOnce()
[adjustConfig enableDeviceIdsReadingOnce];
离线模式
在 SDK v4 中,您可以通过调用带BOOL
参数的[Adjust setOfflineMode]
来启用和禁用 SDK 离线模式。
Adjust.setOfflineMode(true) // put the SDK in offline mode
Adjust.setOfflineMode(false) // put the SDK back in online mode
[Adjust setOfflineMode:YES]; // put the SDK in offline mode
[Adjust setOfflineMode:NO]; // put the SDK back in online mode
在 SDK v5 中,为清晰起见,此功能被分成单独的命令。
- 调用
[Adjust switchToOfflineMode]
将 SDK 设为离线模式。
- 调用
[Adjust switchBackToOnlineMode]
将 SDK 重新设为在线模式。
Adjust.switchToOfflineMode() // put the SDK in offline mode
Adjust.switchBackToOnlineMode() // put the SDK back in online mode
[Adjust switchToOfflineMode]; // put the SDK in offline mode
[Adjust switchBackToOnlineMode]; // put the SDK back in online mode
推送标签
在SDK v4 中,您可以使用 [Adjust setDeviceToken]
方法设置推送标签 (Push token)。
func application(_ app: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
Adjust.setDeviceToken(deviceToken)
- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
[Adjust setDeviceToken:deviceToken];
在 SDK v5 中,该方法已重命名为[Adjust setPushToken]
。
func application(_ app: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken pushToken: Data) {
Adjust.setPushToken(pushToken)
- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)pushToken {
[Adjust setPushToken:pushToken];
会话回传参数
在 SDK v4 中,您可以通过传递键值对至[Adjust addSessionCallbackParameter]
方法来添加会话参数,也可以使用[Adjust removeSessionCallbackParameter]
方法移除单个参数。
Adjust.addSessionCallbackParameter("foo", value: "bar")
Adjust.removeSessionCallbackParameter("foo")
Adjust.resetSessionCallbackParameters()
[Adjust addSessionCallbackParameter:@"foo" value:@"bar"];
[Adjust removeSessionCallbackParameter:@"foo"];
[Adjust resetSessionCallbackParameters];
在 SDK v5 中,会话参数被重命名为统一参数。SDK v5 不再以位置参数的形式指定键和值,而是使用forKey
实例方法将值指定给键。
Adjust.addGlobalCallbackParameter("bar", forKey: "foo")
Adjust.removeGlobalCallbackParameter(forKey: "foo")
Adjust.removeGlobalCallbackParameters()
[Adjust addGlobalCallbackParameter:@"bar" forKey:@"foo"];
[Adjust removeGlobalCallbackParameterForKey:@"foo"];
[Adjust removeGlobalCallbackParameters];
会话合作伙伴参数
在 SDK v4 中,您可以通过传递键值对至[Adjust addSessionPartnerParameter]
方法来添加会话合作伙伴参数,也可以使用[Adjust removeSessionPartnerParameter]
方法移除单个参数。
Adjust.addSessionPartnerParameter("foo", value: "bar")
Adjust.removeSessionPartnerParameter("foo")
Adjust.resetSessionPartnerParameters()
[Adjust addSessionPartnerParameter:@"foo" value:@"bar"];
[Adjust removeSessionPartnerParameter:@"foo"];
[Adjust resetSessionPartnerParameters];
在 SDK v5 中,会话合作伙伴参数被重命名为统一合作伙伴参数。SDK v5 不再以位置参数的形式指定键和值,而是使用forKey
实例方法将值指定给键。
Adjust.addGlobalPartnerParameter("bar", forKey: "foo")
Adjust.removeGlobalPartnerParameter(forKey: "foo")
Adjust.removeGlobalPartnerParameters()
[Adjust addGlobalPartnerParameter:@"bar" forKey:@"foo"];
[Adjust removeGlobalPartnerParameterForKey:@"foo"];
[Adjust removeGlobalPartnerParameters];
发送订阅信息
在 SDK v4 中,您可以使用ADJSubscription
类创建订阅信息负载发送至 Adjust。
let subscription = ADJSubscription(
transactionId: transactionId,
ADJSubscription *subscription = [[ADJSubscription alloc] initWithPrice:price
transactionId:transactionId];
为清晰起见,此类在 SDK v5 中已重命名为ADJAppStoreSubscription
。
let subscription = ADJAppStoreSubscription(
transactionId: transactionId)
ADJAppStoreSubscription *subscription = [[ADJAppStoreSubscription alloc]
transactionId:transactionId];
事件去重
在 SDK v4 中,事件去重与事件transaction ID
同时进行且唯一 ID 的数量上限为 10 个。
let event = ADJEvent(eventToken: "eventToken")
event.setTransactionId("deduplication_id")
ADJEvent *event = [ADJEvent eventWithEventToken:@"event_token"];
[event setTransactionId:@"deduplication_id"];
[Adjust trackEvent:event];
在 SDK v5 中,该功能与transaction ID
分离。事件去重添加了名为deduplicationId
的新 ID 字段。用户可以自定义deduplicationId
的数量限制,添加到用于识别重复事件的列表中。默认情况下,数量上限为 10 。
let yourAppToken = "{YourAppToken}"
let environment = ADJEnvironmentSandbox as? String
let adjustConfig = ADJConfig(
environment: environment)
adjustConfig.setEventDeduplicationIdsMaxSize(20)
Adjust.initSdk(adjustConfig)
guard let event = ADJEvent(eventToken: "eventToken") else { return }
event.setDeduplicationId("deduplication_id")
NSString *yourAppToken = @"{YourAppToken}";
NSString *environment = ADJEnvironmentSandbox;
ADJConfig *adjustConfig = [[ADJConfig alloc] initWithAppToken:yourAppToken
environment:environment];
[adjustConfig setEventDeduplicationIdsMaxSize:20];
[Adjust initSdk:adjustConfig];
ADJEvent *event = [[ADJEvent alloc] initWithEventToken:kEventToken3];
[event setDeduplicationId:@"deduplication_id"];
[Adjust trackEvent:event];
AdjustAttribution 类
在 SDK v4 中,AdjustAttribution
调用包含一个名为adid
的属性。在 SDK v5 中,adid
属性已从AdjustAttribution
类中移除。您可以使用[Adjust adidWithCompletionHandler]
getter 方法获取设备的 ADID。
通过深度链接进行再归因
在 SDK v4 中,您可以将深度链接信息传递至[Adjust appWillOpenUrl]
方法。
options: [UIApplication.OpenURLOptionsKey: Any] = [:]
// add your code below to handle deep link
// (for example, open deep link content)
// incomingURL object contains the deep link
// call the below method to send deep link to Adjust's servers
Adjust.appWillOpen(incomingURL)
- (BOOL)application:(UIApplication *)app
openURL:(NSURL *)incomingURL
options:(NSDictionary *)options {
// add your code below to handle deep link
// (for example, open deep link content)
// incomingURL object contains the deep link
// call the below method to send deep link to Adjust's servers
[Adjust appWillOpenUrl:incomingURL];
为清晰起见,在 SDK v5 中,该方法已重命名为[Adjust processDeeplink]
。
options: [UIApplication.OpenURLOptionsKey: Any] = [:]
// add your code below to handle deep link
// (for example, open deep link content)
// incomingURL object contains the deep link
// call the below method to send deep link to Adjust's servers
if let deeplink = ADJDeeplink(deeplink: incomingURL) {
Adjust.processDeeplink(deeplink)
- (BOOL)application:(UIApplication *)app
openURL:(NSURL *)incomingURL
options:(NSDictionary *)options {
// add your code below to handle deep link
// (for example, open deep link content)
// incomingURL object contains the deep link
// call the below method to send deep link to Adjust's servers
[Adjust processDeeplink:[[ADJDeeplink alloc] initWithDeeplink:incomingURL]];
延迟深度链接回传
在 SDK v4 中,您可以调用adjustDeepLinkResponse
方法处理延迟深度链接回传。
func adjustDeeplinkResponse(_ deeplink: URL?) -> Bool {
print("Deferred deep link callback called!")
print(String(format: "Deferred deep link URL: %@", deeplink.absoluteString))
// Allow Adjust SDK to open received deferred deep link.
// If you don't want it to open it, return false instead.
- (BOOL)adjustDeeplinkResponse:(NSURL *)deeplink {
NSLog(@"Deferred deep link callback called!");
NSLog(@"Deferred deep link URL: %@", [deeplink absoluteString]);
// Allow Adjust SDK to open received deferred deep link.
// If you don't want it to open it, return NO; instead.
在 SDK v5 中,为清晰起见,该方法已被重命名为adjustDeferredDeeplinkReceived
。所有参数都是相同的。
func adjustDeferredDeeplinkReceived(_ deeplink: URL?) -> Bool {
print("Deferred deep link callback called!")
print(String(format: "Deferred deep link URL: %@", deeplink.absoluteString))
// Allow Adjust SDK to open received deferred deep link.
// If you don't want it to open it, return false instead.
- (BOOL)adjustDeferredDeeplinkReceived:(NSURL *)deeplink {
NSLog(@"Deferred deep link callback called!");
NSLog(@"Deferred deep link URL: %@", [deeplink absoluteString]);
// Allow Adjust SDK to open received deferred deep link.
// If you don't want it to open it, return NO; instead.
COPPA 合规
在 SDK v4 中,您可以使用布尔值在ADJConfig
实例上调用setCoppaCompliantEnabled
方法,将应用标记为 COPPA 合规。
adjustConfig.setCoppaCompliantEnabled(true)
[adjustConfig setCoppaCompliantEnabled:YES];
在 SDK v5 中,为清晰起见,该方法已被重命名为enableCoppaCompliance
。该方法不带参数。
adjustConfig?.enableCoppaCompliance()
[adjustConfig enableCoppaCompliance];
发送特定来源的广告收入
在 SDK v4 中,广告收入来源被定义为ADJConfig
类中的常量。在 SDK v5 中,广告收入来源需要以字符串形式传递。
let adRevenue = ADJAdRevenue(source: ADJAdRevenueSourceAppLovinMAX); //v4
let adRevenue = ADJAdRevenue(source: "applovin_max_sdk") //v5
ADJAdRevenue *revenue = [[ADJAdRevenue alloc]
initWithSource:ADJAdRevenueSourceAppLovinMAX]; // v4
ADJAdRevenue *adRevenue = [[ADJAdRevenue alloc]
initWithSource:@"applovin_max_sdk"]; // v5
v4 | v5 |
---|
ADJAdRevenueSourceAppLovinMAX | "applovin_max_sdk" |
ADJAdRevenueSourceAdMob | "admob_sdk" |
ADJAdRevenueSourceIronSource | "ironsource_sdk" |
ADJAdRevenueSourceAdMost | "admost_sdk" |
ADJAdRevenueSourceUnity | "unity_sdk" |
ADJAdRevenueSourceHeliumChartboost | "helium_chartboost_sdk" |
ADJAdRevenueSourceADX | "adx_sdk" |
ADJAdRevenueSourcePublisher | "publisher_sdk" |
ADJAdRevenueSourceTradplus | "tradplus_sdk" |
ADJAdRevenueSourceTopOn | "topon_sdk" |
ADJAdRevenueSourceMopub | "mopub" |
设置数据驻留和 URL 策略
在 SDK v4 中,URL 策略和数据驻留域名在ADJConfig
类中被定义为常量。
[adjustConfig setUrlStrategy:ADJDataResidencyEU];
在 SDK v5 中,您需要将选定的一个或多个域名以数组的形式发送。您还可以进行下列设置:
useSubdomains
(BOOL
): 域名是否应被视为 Adjust 域名。若为 true
,则 SDK 会为域名添加 Adjust 子域名前缀。若为 false
,SDK 会使用收到的域名,不添加任何前缀。
isDataResidency
( BOOL
):域名是否用于数据驻留。
[adjustConfig setUrlStrategy:domain useSubdomains:YES
请查看下方表格,了解如何在 SDK v5 中配置 URL 策略。
v4 | v5 - 主要和后备域名 | v5 - 使用子域名 | v5 - 数据驻留 |
---|
ADJDataResidencyEU | "eu.adjust.com" | true | true |
ADJDataResidencyTR | "tr.adjust.com" | true | true |
ADJDataResidencyUS | "us.adjust.com" | true | true |
ADJUrlStrategyChina | "adjust.world" : "adjust.com" | true | false |
ADJUrlStrategyCn | "adjust.cn" : "adjust.com" | true | false |
ADJUrlStrategyCnOnly | "adjust.cn" | true | false |
ADJUrlStrategyIndia | "adjust.net.in" : "adjust.com" | true | false |
示例
let domain = ["adjust.net.in", "adjust.com"]
adjustConfig.setUrlStrategy(domain, useSubdomains: true, isDataResidency: false)
let domain = ["adjust.world", "adjust.com"]
adjustConfig.setUrlStrategy(domain, useSubdomains: true, isDataResidency: false)
let domain = ["adjust.cn"]
adjustConfig.setUrlStrategy(domain, useSubdomains: true, isDataResidency: false)
let domain = ["eu.adjust.com"]
adjustConfig.setUrlStrategy(domain, useSubdomains: true, isDataResidency: true)
let domain = ["tr.adjust.com"]
adjustConfig.setUrlStrategy(domain, useSubdomains: true, isDataResidency: true)
let domain = ["us.adjust.com"]
adjustConfig.setUrlStrategy(domain, useSubdomains: true, isDataResidency: true)
NSArray *domain = [[NSArray alloc]
initWithObjects:@"adjust.net.in", @"adjust.com", nil];
[adjustConfig setUrlStrategy:domain useSubdomains:YES isDataResidency:NO];
NSArray *domain = [[NSArray alloc]
initWithObjects:@"adjust.world", @"adjust.com", nil];
[adjustConfig setUrlStrategy:domain useSubdomains:YES isDataResidency:NO];
NSArray *domain = [[NSArray alloc]
initWithObjects:@"adjust.cn", nil];
[adjustConfig setUrlStrategy:domain useSubdomains:YES isDataResidency:NO];
NSArray *domain = [[NSArray alloc]
initWithObjects:@"eu.adjust.com", nil];
[adjustConfig setUrlStrategy:domain useSubdomains:YES isDataResidency:YES];
NSArray *domain = [[NSArray alloc]
initWithObjects:@"tr.adjust.com", nil];
[adjustConfig setUrlStrategy:domain useSubdomains:YES isDataResidency:YES];
NSArray *domain = [[NSArray alloc]
initWithObjects:@"us.adjust.com", nil];
[adjustConfig setUrlStrategy:domain useSubdomains:YES isDataResidency:YES];
关闭 SKAdNetwork 通讯
在 SDK v4 中,您可以通过调用[ADJConfig deactivateSKAdNetworkHandling]
方法来阻止 SDK 与 SKAdNetwork 通讯。
let yourAppToken = "{YourAppToken}"
let environment = ADJEnvironmentSandbox as? String
let adjustConfig = ADJConfig(
environment: environment)
adjustConfig.deactivateSKAdNetworkHandling()
ADJConfig *adjustConfig = [[ADJConfig alloc]
initWithAppToken:@"{YourAppToken}"
environment:ADJEnvironmentSandbox];
[adjustConfig deactivateSKAdNetworkHandling];
在 SDK v5 中,为清晰起见,该方法已被重命名为[ADJConfig disableSkanAttribution]
。
let yourAppToken = "{YourAppToken}"
let environment = ADJEnvironmentSandbox as? String
let adjustConfig = ADJConfig(
environment: environment)
adjustConfig?.disableSkanAttribution()
ADJConfig *adjustConfig = [[ADJConfig alloc]
initWithAppToken:@"{YourAppToken}"
environment:ADJEnvironmentSandbox];
[adjustConfig disableSkanAttribution];
更新转化值
在 SDK v4 中,您可以使用updateConversionValue
方法向 Adjust 发送更新后的转化值。此方法包装 Apple 已弃用的updateConversionValue
方法,且在 SDK v5 中删除。
如需更新 SDK v5 中的转化值,请使用带下列参数的[Adjust updateSkanConversionValue]
方法:
conversionValue
( NSInteger
):更新后的转化值
coarseValue
( NSString
):更新后的粗粒度转化值
lockWindow
(BOOL
):是否在转化窗口结束前发送回调
Adjust.updateSkanConversionValue(
coarseValue: SKAdNetwork.CoarseConversionValue.low.rawValue,
lockWindow: false) { error in
print(String(format:"An error occurred during completion: %@", error))
[Adjust updateSkanConversionValue:1
coarseValue:SKAdNetworkCoarseConversionValueLow
withCompletionHandler:^(NSError *_Nullable error) {
NSLog(@"An error occurred during completion: %@", error);
App Tracking Transparency 授权包装器
在 SDK v4 中,您可以使用[Adjust requestTrackingAuthorizationWithCompletionHandler]
方法处理用户 ATT 授权状态变更。
Adjust.requestTrackingAuthorization { status in
// ATTrackingManagerAuthorizationStatusNotDetermined case
// ATTrackingManagerAuthorizationStatusRestricted case
// ATTrackingManagerAuthorizationStatusDenied case
// ATTrackingManagerAuthorizationStatusAuthorized case
[Adjust requestTrackingAuthorizationWithCompletionHandler:^(NSUInteger status) {
// ATTrackingManagerAuthorizationStatusNotDetermined case
// ATTrackingManagerAuthorizationStatusRestricted case
// ATTrackingManagerAuthorizationStatusDenied case
// ATTrackingManagerAuthorizationStatusAuthorized case
为清晰起见,该参数在 SDK v5 中被重命名为[Adjust requestAppTrackingAuthorizationWithCompletionHandler]
。
Adjust.requestAppTrackingAuthorization { status in
// ATTrackingManagerAuthorizationStatusNotDetermined case
// ATTrackingManagerAuthorizationStatusRestricted case
// ATTrackingManagerAuthorizationStatusDenied case
// ATTrackingManagerAuthorizationStatusAuthorized case
[Adjust requestAppTrackingAuthorizationWithCompletionHandler:^(NSUInteger status) {
// ATTrackingManagerAuthorizationStatusNotDetermined case
// ATTrackingManagerAuthorizationStatusRestricted case
// ATTrackingManagerAuthorizationStatusDenied case
// ATTrackingManagerAuthorizationStatusAuthorized case
获取设备信息
在 SDK v4 中,所有设备信息 getter 方法都会同步运行。在 SDK v5 中,这些方法已改为异步运行。您可以添加回传函数,在异步流程完成时处理信息。
// add your completion handler
// add your completion handler
// add your completion handler
Adjust.sdkVersion { sdkVersion in
// add your completion handler
Adjust.isEnabled { isEnabled in
// add your completion handler
Adjust.attribution { attribution in
// add your completion handler
[Adjust adidWithCompletionHandler:^(NSString * _Nullable adid) {
// add your completion handler
[Adjust idfaWithCompletionHandler:^(NSString * _Nullable idfa) {
// add your completion handler
[Adjust idfvWithCompletionHandler:^(NSString * _Nullable idfv) {
// add your completion handler
[Adjust sdkVersionWithCompletionHandler:^(NSString * _Nullable sdkVersion) {
// add your completion handler
[Adjust isEnabledWithCompletionHandler:^(BOOL isEnabled) {
// add your completion handler
[Adjust attributionWithCompletionHandler:^(ADJAttribution * _Nullable attribution) {
// add your completion handler
移除 API
SDK v5 中移除了下列 API。
事件缓冲
SDK v4 支持事件缓冲。该功能可将请求事件、广告收入、推送标签 (Push token) 和其他信息存储在本地缓冲区中以便在之后发送。
Adjust.setEventBufferingEnabled(true)
[adjustConfig setEventBufferingEnabled:YES];
SDK v5 中已删除该设置。
自定义用户代理字符串
SDK v4 支持使用用户代理字符串调用 [AdjustConfig setUserAgent]
来设置自定义用户代理。
adjustConfig.setUserAgent("user_agent_value")
[adjustConfig setUserAgent:@"user_agent_value"];
SDK v5 中已删除该设置。
设置设备是否已知
在 SDK v4 中,您可以调用[AdjustConfig setIsDeviceKnown];
方法,手动告知 SDK 设备是否为已知设备。
adjustConfig.setIsDeviceKnown(true)
[adjustConfig setIsDeviceKnown:YES];
SDK v5 中已删除该设置。
延迟 SDK 启动
SDK v4 支持通过调用[AdjustConfig setDelayStart];
来延迟 SDK 的启动,最多延迟 10 秒 。
adjustConfig.setDelayStart(10)
[adjustConfig setDelayStart:10];
SDK v5 中已删除该设置。
全局禁用第三方分享
在 SDK v4 中,您可以调用Adjust.disableThirdPartySharing()
方法来全面禁用第三方信息分享。
Adjust.disableThirdPartySharing()
[Adjust disableThirdPartySharing];
SDK v5 中已删除该功能。在 SDK v5 中,使用[Adjust trackThirdPartySharing]
方法来启用或禁用第三方共享。
guard let adjustThirdPartySharing = ADJThirdPartySharing(isEnabled: 0) else { return }
Adjust.trackThirdPartySharing(adjustThirdPartySharing)
ADJThirdPartySharing *adjustThirdPartySharing = [[ADJThirdPartySharing alloc] initWithIsEnabled:@NO];
[Adjust trackThirdPartySharing:adjustThirdPartySharing];
查看授权状态变化
在 SDK v4 中,您可以使用[Adjust checkForNewAttStatus]
方法提示 SDK 读取用户的 ATT 状态并将信息转发至 Adjust 服务器。
Adjust.checkForNewAttStatus()
[Adjust checkForNewAttStatus];
该方法在 SDK v5 中已被移除。
监听转化值更新
在 SDK v4 中,您可以使用adjustConversionValueUpdated
方法来监听 SKAdNetwork 更新。
func adjustConversionValueUpdated(_ conversionValue: NSNumber) {
print("Conversion value updated callback called!")
print(String(format: "Conversion value: %@", conversionValue))
func adjustConversionValueUpdated(_ fineValue: NSNumber, coarseValue: String, lockWindow: NSNumber) {
print("Conversion value updated callback called!")
print(String(format: "Conversion value: %@", fineValue))
print(String(format: "Coarse value: %@", coarseValue))
print(String(format: "Lock window: %@", lockWindow))
- (void)adjustConversionValueUpdated:(NSNumber *)conversionValue {
NSLog(@"Conversion value updated callback called!");
NSLog(@"Conversion value: %@", conversionValue);
- (void)adjustConversionValueUpdated:(NSNumber *)fineValue
coarseValue:(NSString *)coarseValue
lockWindow:(NSNumber *)lockWindow {
NSLog(@"Conversion value updated callback called!");
NSLog(@"Conversion value: %@", conversionValue);
NSLog(@"Coarse value: %@", coarseValue);
NSLog(@"Lock window: %@", lockWindow);
在 SDK v5 中,这两种方法已被单个adjustSkanUpdatedWithConversionData
方法所取代,该方法会返回无类型字典。当前支持下列键:
conversion_value
: 更新后的转化值
coarse_value
: 更新后的粗粒度转化值
lock_window
: 是否在转化窗口结束前发送回调
error
: 更新返回的错误信息。
func adjustSkanUpdated(withConversionData data: [String: String]) {
print("Conversion value updated callback called!")
print(String(format: "Conversion value dictionary: \n%@", data.description))
- (void)adjustSkanUpdatedWithConversionData:(NSDictionary<NSString *, NSString *> *)data {
NSLog(@"Conversion value updated callback called!");
NSLog(@"Conversion value dictionary: \n%@", data.description);
设置应用密钥
SDK v4 支持通过在ADJConfig
实例上调用setAppSecret
方法来设置应用密钥,以此对 SDK 流量进行签名。
adjustConfig.setAppSecret(secretId, info1: info1, info2: info2, info3: info3, info4: info4)
[adjustConfig setAppSecret:secretId info1:info1 info2:info2 info3:info3 info4:info4];
SDK v5 中已删除该设置。
移除插件
SDK v5 中移除了下列插件:
- Criteo
- Trademob
- Sociomantic