Adjust Extension for Adobe Experience SDK
这是 Adjust™ 的 iOS Adobe 移动扩展。您可以在 [adjust.com] 上了解更多关于 Adjust™ 的信息。
目录
快速入门
事件追踪
其他功能
快速开始
示例应用程序
在 示例 目录中有一个示例应用程序。请在此文件夹中运行 pod install
以构建示例应用程序的依赖项,然后打开 AdjustAdobeExtension.xcworkspace
以测试示例应用程序。
将 Adjust 扩展添加到您的项目中
Cocoapods集成
如果你在使用Cocoapods,请在你的Podfile
中添加以下行,并从此步骤开始。
pod 'AdjustAdobeExtension'
Swift包管理器集成
如果你使用Swift包管理器,请使用以下GitHub仓库链接添加Adjust Extension for Adobe Experience SDK。
https://github.com/adjust/ios_adobe_extension.git
目前,Adjust Extension使用的是最新的Adobe Experience Platform SDKs(ACP SDKs)。由于Adobe ACP SDKs不支持SPM,所有必需的Adobe框架都是Adjust Extension发行版的一部分。
在你的App目标的General
标签的《框架、库和嵌入式内容》部分,添加以下所需用于Adobe框架的框架和库: UIKit
、SystemConfiguration
、WebKit
、UserNotifications
、libsqlite3.0
、libc++
、libz
。
添加iOS框架
如果你链接额外的iOS框架到你的应用程序,Adjust SDK可以获取更多信息。若要根据框架在你的应用程序中的存在来启用Adjust SDK功能,请添加以下框架并标记为可选。
AdSupport.framework
- 此框架需要SDK访问IDFA值和(在iOS 14之前)LAT信息。iAd.framework
- 此框架需要SDK自动处理你可能正在运行的ASA活动的归因。AdServices.framework
- 对于运行iOS 14.3或更高版本的设备,此框架允许SDK自动处理ASA活动的归因。当利用Apple Ads Attribution API时,这是必需的。StoreKit.framework
- 此框架需要访问SKAdNetwork
框架,并且Adjust SDK可以在iOS 14或更高版本中自动与之通信。AppTrackingTransparency.framework
- 在iOS 14及更高版本中,此框架是必需的,以便SDK能够封装用户的跟踪同意对话框和访问用户同意跟踪或不跟踪的值。
将Adjust扩展集成到您的应用程序中
添加以下导入语句
// Objective-C
#import <AdjustAdobeExtension/AdjustAdobeExtension.h>
// Swift
import AdjustAdobeExtension
基本设置
您不需要手动启动Adjust扩展。首先,在Launch仪表板中设置配置并初始化ACPCore
,然后注册Adjust扩展
// Objective-C
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[ACPCore setLogLevel:ACPMobileLogLevelVerbose];
[ACPCore configureWithAppId:@"{your_adobe_app_id}"];
AdjustAdobeExtensionConfig *config = [AdjustAdobeExtensionConfig configWithEnvironment:ADJEnvironmentSandbox];
[AdjustAdobeExtension registerExtensionWithConfig:config];
[ACPCore start:^{
[ACPCore lifecycleStart:nil];
}];
return YES;
}
// Swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
ACPCore.setLogLevel(ACPMobileLogLevel.verbose)
ACPCore.configure(withAppId: "{your_adobe_app_id}")
if let config = AdjustAdobeExtensionConfig.init(environment: ADJEnvironmentSandbox) {
AdjustAdobeExtension.register(with: config)
}
ACPCore.start {
ACPCore.lifecycleStart(nil)
}
return true
}
将{your_adobe_app_id}
替换为从Adobe Launch获取的应用程序ID。
接下来,您必须将环境
设置为沙盒或生产模式
ADJEnvironmentSandbox
ADJEnvironmentProduction
重要:如果您或其他人正在测试应用程序,请将值设置为ADJEnvironmentSandbox
(仅在测试时)。在发布应用程序之前,确保将环境设置为ADJEnvironmentProduction
。如果您再次开始开发测试,请将其重新设置为ADJEnvironmentSandbox
。
我们使用此环境来区分真实流量和测试设备上的测试流量。根据您的当前状态保持环境更新非常重要!
归因
在Launch仪表板中的扩展配置下默认启用与Adobe共享归因数据的选项。Adjust跟踪以下Adjust提供的归因信息的行为名称Adjust Campaign Data Received
Adjust网络
Adjust活动
Adjust广告组
Adjust创意
事件追踪
跟踪事件
您可以使用 Adobe ['ACPCore trackAction:]
API 进行 事件追踪
。假设您要追踪按钮上的每一次点击。为此,您需要在您的 仪表板 中创建一个新的事件令牌。假设事件令牌是 abc123
。在按钮的按键处理方法中,添加以下代码以跟踪点击:
// Objective-C
NSMutableDictionary * dataDict = [NSMutableDictionary dictionary];
[dataDict setValue:@"abc123" forKey:ADJAdobeAdjustEventToken];
[ACPCore trackAction:ADJAdobeAdjustActionTrackEvent data:dataDict];
// Swift
var dataDict: Dictionary = [String : String]()
dataDict[ADJAdobeAdjustEventToken] = "abc123"
ACPCore.trackAction(ADJAdobeAdjustActionTrackEvent, data: dataDict)
跟踪收入
如果您的用户可以通过点击广告或进行应用内购买来生成收入,您也可以通过事件来追踪这些收入。假设点击的价值为1欧分。您可以这样跟踪收入事件:
// Objective-C
NSMutableDictionary * dataDict = [NSMutableDictionary dictionary];
[dataDict setValue:@"abc123" forKey:ADJAdobeAdjustEventToken];
[dataDict setValue:@"0.01" forKey:ADJAdobeAdjustEventRevenue];
[dataDict setValue:@"EUR" forKey:ADJAdobeAdjustEventCurrency];
[ACPCore trackAction:ADJAdobeAdjustActionTrackEvent data:dataDict];
// Swift
var dataDict: Dictionary = [String : String]()
dataDict[ADJAdobeAdjustEventToken] = "abc123"
dataDict[ADJAdobeAdjustEventRevenue] = "0.01"
dataDict[ADJAdobeAdjustEventCurrency] = "EUR"
ACPCore.trackAction(ADJAdobeAdjustActionTrackEvent, data: dataDict)
回调参数
您可以在您的仪表板中为事件注册回调URL。每当事件被跟踪时,我们会向该URL发送GET请求。您可以通过在跟踪之前将参数添加到上下文数据映射中作为键值对,来为此事件添加回调参数。然后我们会将这些参数附加到您的回调URL上。
例如,假设您已注册了以下URL:https://www.mydomain.com/callback
然后跟踪以下事件
// Objective-C
NSMutableDictionary * dataDict = [NSMutableDictionary dictionary];
[dataDict setValue:@"abc123" forKey:ADJAdobeAdjustEventToken];
[dataDict setValue:@"value1" forKey:[ADJAdobeAdjustEventCallbackParamPrefix stringByAppendingString:@"key1"]];
[dataDict setValue:@"value2" forKey:[ADJAdobeAdjustEventCallbackParamPrefix stringByAppendingString:@"key2"]];
[ACPCore trackAction:ADJAdobeAdjustActionTrackEvent data:dataDict];
// Swift
var dataDict: Dictionary = [String : String]()
dataDict[ADJAdobeAdjustEventToken] = "abc123"
dataDict[ADJAdobeAdjustEventCallbackParamPrefix.appending("key1")] = "value1"
dataDict[ADJAdobeAdjustEventCallbackParamPrefix.appending("key2")] = "value2"
ACPCore.trackAction(ADJAdobeAdjustActionTrackEvent, data: dataDict)
在这种情况下,我们将跟踪事件并向以下URL发送请求
http://www.mydomain.com/callback?key=value&foo=bar
需要指出的是,我们支持多种占位符,如{idfa}
,可用于作为参数值。在生成的回调中,此占位符将替换为当前设备的广告商ID。请注意,我们不会存储任何自定义参数,只会将它们附加到回调中,因此如果没有回调,它们将不会被保存或发送给您。
您可以在我们的回调指南中了解更多关于使用URL回调的信息,包括可用值的完整列表。
合作伙伴参数
您还可以添加要传输给已在您的Adjust仪表板中激活的网络合作伙伴的参数。
您可以在跟踪之前将合作伙伴参数作为键值对添加到上下文数据映射中,来为此事件添加合作伙伴参数。
// Objective-C
NSMutableDictionary * dataDict = [NSMutableDictionary dictionary];
[dataDict setValue:@"abc123" forKey:ADJAdobeAdjustEventToken];
[dataDict setValue:@"value1" forKey:[ADJAdobeAdjustEventPartnerParamPrefix stringByAppendingString:@"key1"]];
[dataDict setValue:@"value2" forKey:[ADJAdobeAdjustEventPartnerParamPrefix stringByAppendingString:@"key2"]];
[ACPCore trackAction:ADJAdobeAdjustActionTrackEvent data:dataDict];
// Swift
var dataDict: Dictionary = [String : String]()
dataDict[ADJAdobeAdjustEventToken] = "abc123"
dataDict[ADJAdobeAdjustEventPartnerParamPrefix.appending("key1")] = "value1"
dataDict[ADJAdobeAdjustEventPartnerParamPrefix.appending("key2")] = "value2"
ACPCore.trackAction(ADJAdobeAdjustActionTrackEvent, data: dataDict)
您可以在特殊合作伙伴指南中了解更多关于特殊合作伙伴和这些集成的信息。
附加功能
一旦您将Adjust Extension for Adobe Experience SDK集成到项目中,就可以利用以下功能
归因回调
您可以为侦测器归因变化注册回调代码块。由于我们用于归因的不同来源,我们无法提供同步信息。
有关更多信息,请参阅我们的归因数据策略。
使用扩展配置实例,在启动SDK之前添加属性回调。
// Objective-C
AdjustAdobeExtensionConfig *config = [AdjustAdobeExtensionConfig configWithEnvironment:ADJEnvironmentSandbox];
[config callbackAttributionChanged:^(ADJAttribution * _Nullable attribution) {
// Attribution response received
}];
[AdjustAdobeExtension registerExtensionWithConfig:config];
// Swift
if let config = AdjustAdobeExtensionConfig.init(environment: ADJEnvironmentSandbox) {
config.callbackAttributionChanged { (attribution : ADJAttribution?) in
// Attribution response received
}
AdjustAdobeExtension.register(with: config)
}
代码块在SDK接收到最终的属性数据后被调用。在块体内部,你可以访问到attribution
参数。
延迟深度链接回调
Adjust SDK默认启用延迟深度链接。不需要额外配置。但如果你希望控制Adjust SDK是否打开延迟深度链接,可以在配置对象中使用回调代码块实现。
使用扩展配置实例,在启动SDK之前添加延迟深度链接回调块。
// Objective-C
AdjustAdobeExtensionConfig *config = [AdjustAdobeExtensionConfig configWithEnvironment:ADJEnvironmentSandbox];
[config callbackDeeplinkResponse:^BOOL(NSURL * _Nullable deeplink) {
// Deep link response received
// Apply your logic to determine whether the Adjust SDK should try to open the deep link
return YES;
// or
// return NO;
}];
[AdjustAdobeExtension registerExtensionWithConfig:config];
// Swift
if let config = AdjustAdobeExtensionConfig.init(environment: ADJEnvironmentSandbox) {
config.callbackDeeplinkResponse { (deeplink : URL?) in
// Deep link response received
// Apply your logic to determine whether the Adjust SDK should try to open the deep link
return true;
// or
// return false;
}
AdjustAdobeExtension.register(with: config)
}
Adjust SDK从前端接收到深度链接信息后,将通过回调块向您提供其内容,并期望从您那里获取布尔值返回结果。这个返回值代表您对Adjust SDK是否应该打开深度链接的决定。
推送令牌(卸载跟踪)
推送令牌用于 Audience Builder 和客户端回调;对于卸载和重装跟踪也是必需的。
要向我们发送APNs推送通知令牌,一旦您获得令牌(或其值发生变化时),请调用以下代码。
// Objective-C
NSMutableDictionary * dataDict = [NSMutableDictionary dictionary];
[dataDict setValue:@"your_app_push_token" forKey:ADJAdobeAdjustPushToken];
[ACPCore trackAction:ADJAdobeAdjustActionSetPushToken data:dataDict];
// Swift
var dataDict: Dictionary = [String : String]()
dataDict[ADJAdobeAdjustPushToken] = "your_app_push_token"
ACPCore.trackAction(ADJAdobeAdjustActionSetPushToken, data: dataDict)