Adjust iOS SDKを実装することで、アトリビューションやイベントなどのさまざまなデータをWebアプリで記録できます。このガイドでは、Adjust SDKをアプリに実装する方法を紹介します。
1. プロジェクトにSDKを追加する
iOSアプリでAdjust SDKを使うには、Xcodeプロジェクトに追加する必要があります。
Swift Package Managerを使ってSDKを追加するには、以下の手順に従ってください。
- File —> Swift Packages —> Add Package Dependency を選択します。
- 表示されたボックスに、SDKのGitHubのアドレスを入力します。
https://github.com/adjust/ios_sdk
- Version ドロップダウンで、使用したいAdjust SDKのバージョンを選択します。最新のパージョンはリリースページからご確認ください。
その他のインストール方法
Cocoapodsを使ってSDKを追加するには、 Podfile
で使用したいバージョンを指定します。
// Get pod from repository
pod 'Adjust', '~> 4.38.4'
// Get source directly from GitHub
pod 'Adjust', :git => 'https://github.com/adjust/ios_sdk.git', :tag => 'v4.38.4'
アプリでWeb viewを使用している場合は、以下のようにAdjust Web Bridgeを追加します。
pod 'Adjust/WebBridge', '~> 4.38.4'
Carthageを使ってSDKを追加するには、以下をCartfile
に追加します。
Adjust SDKはフレームワークとしてプロジェクトに追加することで実装できます。リリースページには、以下がアーカイブされています。
AdjustSdkStatic.framework.zip
: iOS 7以前のデバイス向け
AdjustSdkDynamic.framework.zip
: iOS 8以降のデバイス向け
AdjustSdkTvDynamic.framework.zip
: tvOSアプリ向けのDynamic framework
AdjustSdkTvStatic.framework.zip
: tvOSアプリ向けのStatic framework
AdjustSdkImDynamic.framework.zip
: iMessageアプリ向けのDynamic framework
AdjustSdkWebBridgeDynamic.framework.zip
: Web view向けのDynamic framework
必要なフレームワークを使用して、Xcode
プロジェクトに追加します。
- リリースページからアーカイブをダウンロードします。
- コンピューター上でアーカイブのzipファイルを解凍します。
.framework
フォルダーをXcode
プロジェクトにコピーします。
2. Adjust SDKを実装する
Adjust SDKをXcode
プロジェクトに追加したら、それをアプリで実装する必要があります。
プロジェクトファイルに関連するimport statement(インポートステートメント)を追加します。
Adjust SDKをインポートするには、以下をbridging headerファイルに追加します。
#import <Adjust/Adjust.h>
Adjust Web Bridgeを使用している場合は、以下をbridging headerファイルに追加します。
Adjust SDKをインポートするには、以下をAppDelegate.h
ファイルに追加します。
#import <Adjust/Adjust.h>
Adjust Web Bridgeを使用している場合は、以下をAppDelegate.h
ファイルに追加します。
プロジェクトファイルに関連するimport statement(インポートステートメント)を追加します。
Adjust SDKをインポートするには、以下をbridging headerファイルに追加します。
#import <Adjust/Adjust.h>
Adjust Web Bridgeを使用している場合は、以下をbridging headerファイルに追加します。
#import <AdjustSdkWebBridge/AdjustBridge.h>
tvOSアプリでAdjust SDKを使用している場合は、以下をbridging headerファイルに追加します。
#import <AdjustSdkTv/Adjust.h>
iMessageアプリでAdjust SDKを使用している場合は、以下をbridging headerファイルに追加します。
#import <AdjustSdkIm/Adjust.h>
Adjust SDKをインポートするには、以下を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>
プロジェクトファイルに関連するimport statement(インポートステートメント)を追加します。
Adjust SDKをインポートするには、以下をbridging headerファイルに追加します。
#import <Adjust/Adjust.h>
Adjust Web Bridgeを使用している場合は、以下をbridging headerファイルに追加します。
#import <AdjustSdkWebBridge/AdjustBridge.h>
tvOSアプリでAdjust SDKを使用している場合は、以下をbridging headerファイルに追加します。
#import <AdjustSdkTv/Adjust.h>
iMessageアプリでAdjust SDKを使用している場合は、以下をbridging headerファイルに追加します。
#import <AdjustSdkIm/Adjust.h>
Adjust SDKをインポートするには、以下を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>
3. iOS frameworksを追加する
Adjust SDKは、特定のデバイス情報にアクセスするためにフレームワークに依存しています。この情報を読み取れるようにするには、フレームワークを追加してそれらを オプション として表示します。
Framework | 説明 | 注意 |
---|
AdSupport.framework | デバイスのIDFAにアクセスできるようにします。また、iOS 14以前のデバイスでLAT情報にアクセスできるようになります。 | アプリが「子供向け」カテゴリーをターゲットにしている場合、このフレームワークは追加しないでください。 |
AdServices.framework | ASAアトリビューションを処理します。 | |
StoreKit.framework | SKAdNetworkフレームワークにアクセスできるようにします。 | iOS14以降のデバイスでAdjust SDKがSKAdNetworkとの通信を処理するために必要です。 |
AppTrackingTransparency.framework | Adjust SDKがユーザーのATT同意ダイアログをラップし、iOS 14以降のデバイスで同意レスポンスにアクセスできるようにするために必要です。 | アプリが「子供向け」カテゴリーをターゲットにしている場合、このフレームワークは追加しないでください。 |
WebKit.framework | アプリでWeb viewを使用できるようにします。 | アプリがWeb viewを使用している場合にのみ必要です。 |
4. Adjust SDKを初期化する
Adjust SDKを初期化するには、configオブジェクトを作成する必要があります。このオブジェクトには、Adjust SDKの動作をコントロールする設定オプションが含まれています。最小限の設定を行うために、以下の引数をパスします。
appToken
: アプリトークン。
environment
: SDKを実行したい環境。ADJEnvironmentSandbox
に設定します。
ConfigオブジェクトでAdjust SDKを初期化:
- アプリデリゲートの
didFinishLaunching
またはdidFinishLaunchingWithOptions
メソッド内のconfigオブジェクトを宣言します。
- Configオブジェクトの
logLevel
プロパティをADJLogLevelVerbose
(verbose)に設定します。デバイス情報を取得するには、verboseロギングを有効化する必要があります。
- Configオブジェクトを引数として
appDidLaunch
メソッドにパスします。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
let yourAppToken = "{YourAppToken}"
let environment = ADJEnvironmentSandbox as? String
let myAdjustConfig = ADJConfig(
environment: environment)
myAdjustConfig?.logLevel = ADJLogLevel.verbose
Adjust.appDidLaunch(myAdjustConfig)
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSString *yourAppToken = @"{YourAppToken}";
NSString *environment = ADJEnvironmentSandbox;
*myAdjustConfig = [ADJConfig configWithAppToken:yourAppToken
environment:environment];
[myAdjustConfig setLogLevel:ADJLogLevelVerbose];
[Adjust appDidLaunch:myAdjustConfig];
iMessageアプリを設定する
アプリがiMessageをターゲティングしている場合、いくつか追加の設定を行う必要があります。
- ソースからAdjust SDKを追加した場合、
ADJUST_IM=1
プリプロセッサマクロをiMessageプロジェクトの設定に追加してください。
- Adjust SDKをフレームワークとして追加した場合、 ビルドフェーズ プロジェクト設定で 新規コピーファイルフェーズ(New Copy Files Phases) を追加します。
AdjustSdkIm.framework
をフレームワークフォルダーにコピーするように設定してください。
セッションを記録する
Adjust SDKはiMessageアプリのiOSシステム通知を受け取りません。アプリがフォアグラウンドに入った、またはフォアグラウンドから離れたことをAdjust SDKに通知するには、trackSubsessionStart
とtrackSubsessionEnd
メソッドを呼び出す必要があります。
didBecomeActiveWithConversation:
メソッド内でtrackSubsessionStart
へのコールを追加します。
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()
-(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];
willResignActiveWithConversation:
メソッド内でtrackSubsessionEnd
へのコールを追加します。
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 dismisses 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()
-(void)willResignActiveWithConversation:(MSConversation *)conversation {
// Called when the extension is about to move from the active to inactive state.
// This will happen when the user dismisses 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を設定する
アプリがWeb viewを使用している場合、Adjust Web Bridgeを設定してWeb view内のアクティビティを記録する必要があります。
AdjustBridge
をアプリに実装する
プロジェクトナビゲータにて:
- View Controllerのソースファイルを開きます。
- ファイルの最上部に
import
ステートメントを追加します。
- Web View Delegateの
viewDidLoad
またはviewWillAppear
メソッドのAdjustBridge
に以下のコールを追加します。
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?);
// 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];
これに含まれるWebViewJavascriptBridge
も利用できます。これを使用するには、AdjustBridge
インスタンスのbridgeRegister
プロパティを設定してください。使用方法については、ライブラリのドキュメントを参照してください。
AdjustBridge
をWeb viewに実装する
Web viewでJavascriptを使用するには、bridgeを設定する必要があります。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);
document.documentElement.removeChild(WVJBIframe);
setupWebViewJavascriptBridge(function (bridge) {
var yourAppToken = yourAppToken;
var environment = AdjustConfig.EnvironmentSandbox;
var adjustConfig = new AdjustConfig(yourAppToken, environment);
Adjust.appDidLaunch(adjustConfig);
Configオブジェクトと初期化ロジックを追加したら、Adjust SDKを設定してアプリの様々な部分に関する情報を記録することができます。SDKの設定機能と記録機能のガイドを確認し、記録したいデータを正確に設定してください。
6. Adjust SDKをテストする
アプリの情報を記録するようにAdjust SDKを設定したら、次はテストを行います。Adjustは、アプリのテストに役立つテストコンソールとデバイスAPIを提供しています。
テストガイドに従って、Adjustがアプリから想定どおりの値を受け取ることを確認してください。
7. 本番用にアプリをビルドする
テストが終わったら、本番用にアプリをビルドできます。そのためには、configオブジェクトを更新する必要があります。
以下の値を更新します。
environment
: ADJEnvironmentProduction
に設定します。
logLevel
: ログレベルを選択するか、configプロジェクトにallowSuppressLogLevel
引数をパスしてログを完全に無効化します。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
let yourAppToken = "{YourAppToken}"
let environment = ADJEnvironmentProduction as? String
let myAdjustConfig = ADJConfig(
environment: environment,
allowSuppressLogLevel: true)
myAdjustConfig?.logLevel = ADJLogLevelSuppress
Adjust.appDidLaunch(myAdjustConfig)
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSString *yourAppToken = @"{YourAppToken}";
NSString *environment = ADJEnvironmentProduction;
*myAdjustConfig = [ADJConfig configWithAppToken:yourAppToken
allowSuppressLogLevel:YES];
[myAdjustConfig setLogLevel:ADJLogLevelSuppress];
[Adjust appDidLaunch:myAdjustConfig];
Xcode
のビルドフラグを使用して、debug buildと本番ビルドのどちらを作成するかに応じて、動的に設定を更新することができます。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
let yourAppToken = "{YourAppToken}"
let environment = ADJEnvironmentSandbox as? String
let myAdjustConfig = ADJConfig(
environment: environment)
myAdjustConfig?.logLevel = ADJLogLevel.verbose
let environment = ADJEnvironmentProduction as? String
let myAdjustConfig = ADJConfig(
environment: environment,
allowSuppressLogLevel: true)
myAdjustConfig?.logLevel = ADJLogLevel.suppress
Adjust.appDidLaunch(myAdjustConfig)
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSString *yourAppToken = @"{YourAppToken}";
NSString *environment = ADJEnvironmentSandbox;
*myAdjustConfig = [ADJConfig configWithAppToken:yourAppToken
environment:environment];
[myAdjustConfig setLogLevel:ADJLogLevelVerbose];
NSString *environment = ADJEnvironmentProduction;
*myAdjustConfig = [ADJConfig configWithAppToken:yourAppToken
allowSuppressLogLevel:YES];
[myAdjustConfig setLogLevel:ADJLogLevelSuppress];
[Adjust appDidLaunch:myAdjustConfig];