adjust-icon

iOS SDK連携ガイド

Adjust iOS SDKを実装することで、アトリビューションやイベントなどのさまざまなデータをWebアプリで記録できます。このガイドでは、Adjust SDKをアプリに実装する方法を紹介します。

1. プロジェクトにSDKを追加する

iOSアプリでAdjust SDKを使うには、Xcodeプロジェクトに追加する必要があります。

Swift Package Managerを使ってSDKを追加するには、以下の手順に従ってください。

  1. File —> Swift Packages —> Add Package Dependency を選択します。
  2. 表示されたボックスに、SDKのGitHubのアドレスを入力します。 https://github.com/adjust/ios_sdk
  3. 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'

2. Adjust SDKを実装する

Adjust SDKをXcodeプロジェクトに追加したら、それをアプリで実装する必要があります。

プロジェクトファイルに関連するimport statement(インポートステートメント)を追加します。

Adjust SDKをインポートするには、以下をbridging headerファイルに追加します。

#import <Adjust/Adjust.h>

Adjust Web Bridgeを使用している場合は、以下をbridging headerファイルに追加します。

#import "AdjustBridge.h"

3. iOS frameworksを追加する

Adjust SDKは、特定のデバイス情報にアクセスするためにフレームワークに依存しています。この情報を読み取れるようにするには、フレームワークを追加してそれらを オプション として表示します。

Framework説明注意
AdSupport.frameworkデバイスのIDFAにアクセスできるようにします。また、iOS 14以前のデバイスでLAT情報にアクセスできるようになります。アプリが「子供向け」カテゴリーをターゲットにしている場合、このフレームワークは追加しないでください。
AdServices.frameworkASAアトリビューションを処理します。
StoreKit.frameworkSKAdNetworkフレームワークにアクセスできるようにします。iOS14以降のデバイスでAdjust SDKがSKAdNetworkとの通信を処理するために必要です。
AppTrackingTransparency.frameworkAdjust 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を初期化:

  1. アプリデリゲートのdidFinishLaunchingまたはdidFinishLaunchingWithOptionsメソッド内のconfigオブジェクトを宣言します。
  2. ConfigオブジェクトのlogLevelプロパティをADJLogLevelVerbose(verbose)に設定します。デバイス情報を取得するには、verboseロギングを有効化する必要があります。
  3. Configオブジェクトを引数としてappDidLaunchメソッドにパスします。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
let yourAppToken = "{YourAppToken}"
let environment = ADJEnvironmentSandbox as? String
let myAdjustConfig = ADJConfig(
appToken: yourAppToken,
environment: environment)
myAdjustConfig?.logLevel = ADJLogLevel.verbose
// Your code here
Adjust.appDidLaunch(myAdjustConfig)
// Your code here
return true
}

iMessageアプリを設定する

アプリがiMessageをターゲティングしている場合、いくつか追加の設定を行う必要があります。

  • ソースからAdjust SDKを追加した場合、ADJUST_IM=1プリプロセッサマクロをiMessageプロジェクトの設定に追加してください。
  • Adjust SDKをフレームワークとして追加した場合、 ビルドフェーズ プロジェクト設定で 新規コピーファイルフェーズ(New Copy Files Phases) を追加します。AdjustSdkIm.frameworkをフレームワークフォルダーにコピーするように設定してください。

セッションを記録する

Adjust SDKはiMessageアプリのiOSシステム通知を受け取りません。アプリがフォアグラウンドに入った、またはフォアグラウンドから離れたことをAdjust SDKに通知するには、trackSubsessionStarttrackSubsessionEndメソッドを呼び出す必要があります。

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()
}

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()
}

Adjust Web Bridgeを設定する

アプリがWeb viewを使用している場合、Adjust Web Bridgeを設定してWeb view内のアクティビティを記録する必要があります。

AdjustBridgeをアプリに実装する

プロジェクトナビゲータにて:

  1. View Controllerのソースファイルを開きます。
  2. ファイルの最上部にimportステートメントを追加します。
  3. 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?);
}

これに含まれる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);
setTimeout(function () {
document.documentElement.removeChild(WVJBIframe);
}, 0);
}
setupWebViewJavascriptBridge(function (bridge) {
// Your code here
var yourAppToken = yourAppToken;
var environment = AdjustConfig.EnvironmentSandbox;
var adjustConfig = new AdjustConfig(yourAppToken, environment);
Adjust.appDidLaunch(adjustConfig);
// Your code here
});

5. Adjust SDKを設定する

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(
appToken: yourAppToken,
environment: environment,
allowSuppressLogLevel: true)
myAdjustConfig?.logLevel = ADJLogLevelSuppress
//...
Adjust.appDidLaunch(myAdjustConfig)
//...
return true
}

Xcodeのビルドフラグを使用して、debug buildと本番ビルドのどちらを作成するかに応じて、動的に設定を更新することができます。

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
let yourAppToken = "{YourAppToken}"
#if DEBUG
let environment = ADJEnvironmentSandbox as? String
let myAdjustConfig = ADJConfig(
appToken: yourAppToken,
environment: environment)
myAdjustConfig?.logLevel = ADJLogLevel.verbose
#else
let environment = ADJEnvironmentProduction as? String
let myAdjustConfig = ADJConfig(
appToken: yourAppToken,
environment: environment,
allowSuppressLogLevel: true)
myAdjustConfig?.logLevel = ADJLogLevel.suppress
#endif
//...
Adjust.appDidLaunch(myAdjustConfig)
//...
return true
}