开始使用 Adjust iOS SDK
选择 Adjust iOS SDK,您就能在自己的 iOS 应用中跟踪归因、事件及更多。请按照本指南中说明的步骤操作,进行应用 Adjust SDK 设置。您还可以在GitHub上查看我们的实例应用。
第 1 步:设置环境
要开始使用 Adjust SDK,您首先要将其作为 dependency 添加至项目中。
Cocoapods
要使用 Cocoapods 添加 SDK,请在 Podfile
中指定要使用的版本:
// Get pod from repository
pod 'Adjust', '~> 4.33.3
'
// Get source directly from GitHub
pod 'Adjust', :git => 'https://github.com/adjust/ios_sdk.git', :tag => '4.33.3
'
如果您在应用中使用的是网络视图 (web view),请添加下列行以加入 Adjust Web Bridge:
pod 'Adjust/WebBridge', '~> 4.33.3
'
Carthage
要使用 Carthage 添加 SDK,请将下列内容添加至您的 Cartfile
:
github "adjust/ios_sdk"
Swift package manager
要使用 Swift package manager 添加 SDK:
- 点击 File 。
- 选择 Swift Packages 。
- 选择 Add Package Dependency 。
- 在出现的文本框中输入 SDK 的 GitHub 地址。
https://github.com/adjust/ios_sdk
- 在 Version 下拉菜单中选择要使用的 Adjust SDK 版本。请查看发布页面,找到最新稳定版本。
添加为框架
您也可以把 Adjust SDK 作为框架添加至您的项目中,来进行集成。在发布页面,您可以找到以下文档:
AdjustSdkStatic.framework.zip
AdjustSdkDynamic.framework.zip
AdjustSdkTvDynamic.framework.zip
AdjustSdkTvStatic.framework.zip
AdjustSdkImDynamic.framework.zip
AdjustSdkWebBridgeDynamic.framework.zip
自 iOS 8 发布以来,Apple 引入了动态框架(也称为嵌入式框架)。如果您的应用目标对象是 iOS 8 或以上版本,则可以使用 Adjust SDK 动态框架。请选择您希望使用的框架 — 静态或动态 — 并将其添加到项目中:
- 从发布页面下载文档。
- 将压缩文件解压至您的电脑。
- 将
.framwork
文件夹复制到您的 Xcode 项目中。
如果您要创建 tvOS 应用,可以使用我们的 tvOS 框架。您可以在 AdjustSdkTvStatic.framework.zip
和 AdjustSdkTvDynamic.framework.zip
文件中找到该框架。
如果您要创建 iMessage 应用,可以使用 IM 框架。您可以在 AdjustSdkImDynamic.framework.zip
文件中找到该框架。
如果您在应用中使用的是网络视图 (web view),可以使用 Adjust Web Bridge。您可以在 AdjustSdkWebBridgeDynamic.framework.zip
文件中找到它。
第 2 步:集成 SDK
Cocoapods
如果您从 Pod 库中添加 Adjust SDK,就需要向项目导入相关导入语句:
Objective-C
在您的 AppDelegate.h
文件中添加下列行:
#import "Adjust.h"
// or #import <Adjust/Adjust.h>
如果您使用的是 Adjust Web Bridge,请将下列行添加至 AppDelegate.h
文件:
#import "AdjustBridge.h"
Swift
将下列行添加至您的桥接标头文件:
#import <Adjust/Adjust.h>
如果您使用的是 Adjust Web Bridge,请将下列行添加至您的桥接标头文件:
#import "AdjustBridge.h"
Carthage 和框架导入
如果您是以静态或动态框架 (static/dynamic framework) 或者经 Carthage 添加 Adjust SDK,请使用以下导入语句:
Objective-C
在您的 AppDelegate.h
文件中添加下列行:
#import <AdjustSdk/Adjust.h>
如果您使用的是 Adjust Web Bridge,请将下列行添加至 AppDelegate.h
文件:
#import <AdjustSdkWebBridge/AdjustBridge.h>
如果您是在 tvOS 应用中使用 Adjust SDK,请将下列行添加至 AppDelegate.h
文件:
#import <AdjustSdkTv/Adjust.h>
如果您是在 iMessage 应用中使用 Adjust SDK,请将下列行添加至 AppDelegate.h
文件:
#import <AdjustSdkIm/Adjust.h>
Swift
将下列行添加至您的桥接标头文件:
#import <Adjust/Adjust.h>
如果您使用的是 Adjust Web Bridge,请将下列行添加至您的桥接标头文件:
#import <AdjustSdkWebBridge/AdjustBridge.h>
如果您是在 tvOS 应用中使用 Adjust SDK,请将下列行添加至桥接标头文件:
#import <AdjustSdkTv/Adjust.h>
如果您是在 iMessage 应用中使用 Adjust SDK,请将下列行添加至桥接标头文件:
#import <AdjustSdkIm/Adjust.h>
第 3 步:添加 iOS 框架
在应用中添加特定 iOS 框架后,Adjust SDK 就能获取额外信息。添加框架并将其标记为 optional (可选),即可在 Adjust SDK 中启用额外的功能。
框架 | 描述 | 注意事项 |
---|---|---|
AdSupport.framework | 如果您希望 SDK 能访问 IDFA 值和 (iOS 14 以前的) LAT 信息,请添加该框架。 | 如果您的应用属于 "儿童" (Kids) 类别,请不要安装该框架。 |
AdServices.framework | 该框架对于处理 Apple Search Ads 是必要的。 | |
StoreKit.framework | 如果您希望访问 SKAdNetwork 框架,同时让 Adjust SDK 在 iOS 14 或未来版本的 iOS 中自动处理与该框架的通讯,请添加该框架。 | |
AppTrackingTransparency.framework | 如果您希望 SDK 能在 iOS 14 或未来版本的 iOS 中包装用户的跟踪许可对话框,并访问用户的许可响应,请添加该框架。 | 如果您的应用属于 "儿童" (Kids) 类别,请不要安装该框架。 |
WebKit.framework | 该框架允许您在应用程序中使用网络视图 (web view)。 | 只有在应用使用 web view 的时候才有必要。 |
第 4 步:初始化 SDK
安装所有必需的框架后,您就可以初始化应用程序中的 Adjust SDK 了。要进行 SDK 初始化,请使用应用识别码及您希望应用程序运行的环境来初始化 ADJConfig 对象。
ADJEnvironmentSandbox
。请在向 App Store 提交应用程序前,将环境设置变为 ADJEnvironmentProduction
。
标准设置
在项目导航 (Project Navigator) 中,打开您的应用委托 (application delegate) 源文件。在文件顶端添加导入语句,然后在应用委托的 didFinishLaunching
或 didFinishLaunchingWithOptions
方法中,将以下调用添加至 Adjust:
Objective-C
#import "Adjust.h"
// or #import <Adjust/Adjust.h>
// or #import <AdjustSdk/Adjust.h>
// or #import <AdjustSdkTv/Adjust.h>
// or #import <AdjustSdkIm/Adjust.h>
// ...
NSString *yourAppToken = @"{YourAppToken}";
NSString *environment = ADJEnvironmentSandbox;
*adjustConfig = [ADJConfig configWithAppToken:yourAppToken
environment:environment];
[Adjust appDidLaunch:adjustConfig];
Swift
let yourAppToken = "{YourAppToken}"
let environment = ADJEnvironmentSandbox as? String
let adjustConfig = ADJConfig(
appToken: yourAppToken,
environment: environment)
Adjust.appDidLaunch(adjustConfig)
Javascript
setupWebViewJavascriptBridge(function(bridge) {
// ...
var yourAppToken = yourAppToken;
var environment = AdjustConfig.EnvironmentSandbox;
var adjustConfig = new AdjustConfig(yourAppToken, environment);
Adjust.appDidLaunch(adjustConfig);
// ...
});
iMessage 设置
根据您将 Adjust SDK 添加至项目的方式,您需要进行额外操作步骤:
- 如果您是从源代码添加 Adjust SDK,请确保您已在 iMessage 项目中设置了预处理宏
ADJUST_IM=1
。 - 如果您将 SDK 作为框架添加,请务必在 Build Phases 项目设置中添加 New Copy Files Phase 。将
AdjustSdkIm.framework
复制到Frameworks
文件夹。
会话跟踪
要在 iMessage 应用中设置会话跟踪,则需要执行一个额外的步骤。在标准 iOS 应用中,Adjust SDK 会自动订阅 iOS 系统通知,让 Adjust SDK 知晓应用进入或离开前台的时间。iMessage 应用的情况则有所不同。因此,您需要在应用视图控制器 (view controller) 中添加对 trackSubsessionStart
和 trackSubsessionEnd
方法的调用,以在应用进入和离开前台时通知 Adjust SDK。
在 didBecomeActiveWithConversation:
方法中添加对 trackSubsessionStart
的调用:
Objective-C
-(void)didBecomeActiveWithConversation:(MSConversation *)conversation {
// Called when the extension is about to move from the inactive to active state.
// This will happen when the extension is about to present UI.
// Use this method to configure the extension and restore previously stored state.
[Adjust trackSubsessionStart];
}
Swift
func didBecomeActive(with conversation: MSConversation) {
// Called when the extension is about to move from the inactive to active state.
// This will happen when the extension is about to present UI.
// Use this method to configure the extension and restore previously stored state.
Adjust.trackSubsessionStart()
}
在 willResignActiveWithConversation:
方法中添加对 trackSubsessionEnd
的调用:
Objective-C
-(void)willResignActiveWithConversation:(MSConversation *)conversation {
// Called when the extension is about to move from the active to inactive state.
// This will happen when the user dissmises the extension, changes to a different
// conversation or quits Messages.
// Use this method to release shared resources, save user data, invalidate timers,
// and store enough state information to restore your extension to its current state
// in case it is stopped later.
[Adjust trackSubsessionEnd];
}
Swift
func willResignActive(with conversation: MSConversation) {
// Called when the extension is about to move from the active to inactive state.
// This will happen when the user dissmises the extension, changes to a different
// conversation or quits Messages.
// Use this method to release shared resources, save user data, invalidate timers,
// and store enough state information to restore your extension to its current state
// in case it is terminated later.
Adjust.trackSubsessionEnd()
}
网桥设置
要将 Adjust Web bridge 集成入您的应用,请按照下列步骤操作。
将 AdjustBridge
集成进您的应用
在项目导航 (Project Navigator) 中,打开您的视图控制器 (View Controller) 源文件。在文件顶端添加 导入
语句。在 Web View Delegate 的 viewDidLoad
或 viewWillAppear
方法中,添加下列 AdjustBridge
调用:
Objective-C
#import "AdjustBridge.h"
// or #import <AdjustSdkWebBridge/AdjustBridge.h>
- (void)viewWillAppear:(BOOL)animated {
WKWebView *webView = [[WKWebView alloc] initWithFrame:self.view.bounds];
// add @property (nonatomic, strong) AdjustBridge *adjustBridge; on your interface
[self.adjustBridge loadWKWebViewBridge:webView];
// optionally you can add a web view delegate so that you can also capture its events
// [self.adjustBridge loadWKWebViewBridge:webView wkWebViewDelegate:(id<wknavigationdelegate>)self];
}
// ...
Swift
func viewWillAppear(_ animated: Bool) {
let webView = WKWebView(frame: view.bounds)
// add var adjustBridge: AdjustBridge?on your interface
adjustBridge.loadWKWebViewBridge(webView)
// optionally you can add a web view delegate so that you can also capture its events
// adjustBridge.loadWKWebViewBridge(webView,wkWebViewDelegate: self as? WKNavigationDelegate?);
}
您也可以使用其中包含的 WebViewJavascriptBridge
。为此,请在 AdjustBridge
实例中设置 bridgeRegister
属性。请查看关于库的文档了解使用方法。
将 AdjustBridge
集成进您的网络视图 (web view)
要在网络视图 (web view) 上使用 Javascript bridge,您就需要配置 bridge。请添加下列 Javascript 代码,初始化 Adjust iOS web bridge:
Javascript
function setupWebViewJavascriptBridge(callback) {
if (window.WebViewJavascriptBridge) {
return callback(WebViewJavascriptBridge);
}
if (window.WVJBCallbacks) {
return window.WVJBCallbacks.push(callback);
}
window.WVJBCallbacks = [callback];
var WVJBIframe = document.createElement('iframe');
WVJBIframe.style.display = 'none';
WVJBIframe.src = 'https://__bridge_loaded__';
document.documentElement.appendChild(WVJBIframe);
setTimeout(function() { document.documentElement.removeChild(WVJBIframe)}, 0)
}
setupWebViewJavascriptBridge(function(bridge) {
// ...
var yourAppToken = yourAppToken;
var environment = AdjustConfig.EnvironmentSandbox;
var adjustConfig = new AdjustConfig(yourAppToken, environment);
Adjust.appDidLaunch(adjustConfig);
// ...
});
第 5 步:设置日志
ADJConfig
实例中将 allowSuppressLogLevel
设为 true,然后用值 ADJLogLevelSuppress
调用 setLogLevel
方法。
要设置日志的输出级别,请在 ADJConfig
实例中使用 logLevel
属性。您需要在调用 appDidLaunch
之前这么做,才能设置级别。
Objective-C
[adjustConfig setLogLevel:ADJLogLevelVerbose];
Swift
adjustConfig?.logLevel = ADJLogLevelVerbose
Javascript
adjustConfig.setLogLevel(AdjustConfig.LogLevelVerbose)
第 6 步:创建应用
太好了!您现在可以创建并运行应用了。请启用日志,检查可能存在的问题。您现在已经准备就绪,可以使用 Adjust SDK 进行用户归因了。