AppsFlyer SDKの連携 - iOS

ios.pngSDKバージョン:4.8.5(リリースノート

1. 概要

このガイドでは、AppsFlyerのSDKをiOSアプリと連携する方法について詳しく説明します。インストール、アップデート、セッション、追加のアプリ内イベントのほか、アプリインストール(アプリ内購入、ゲームレベル等を含む)を計測し、ROIとユーザーエンゲージメントレベルを評価することができます。iOS SDKは、iOSバージョン6以降のすべてのiOSデバイス(iPhone、iPod、iPad)と互換性があります。

 

AppsFlyerのSDKは、AppleのIPv6 DNS64/NAT64ネットワークと完全な互換性があります。詳細については、こちらをクリックしてください。

 重要!

AppsFlyerのSDKでは、NSUserDefaultsクラスが使用されます。NSUserDefaultsのすべての値を消去すると、アトリビューションの問題が発生する可能性があります。

2. クイックスタート

2.1 AppsFlyerのSDKをダウンロードして、Xcodeに追加する

CocoaPods CarthageStatic Framework Static Lib
  • 最新バージョンのCocoaPodsがダウンロードされ、インストールされていることを確認してください。
  • Podfileに次の行を追加します:
    pod 'AppsFlyerFramework'
  • pod installを実行します
  • 以降、Xcodeでプロジェクトを開く際には、.xcodeprojファイルではなく、.xcworkspaceファイルを使用するようにしてください。

AppsFlyerのSDKでは、次のネイティブのフレームワークが使用されます。

AdSupport.framework
このフレームワークは、デバイスからIDFAを収集するために必要です。
IDFAは、Facebook広告、Twitter、Google Ads、および他のネットワークを計測するために不可欠です。
iAd.framework
このフレームワークは、アプリでApple Search Adsを計測するために必要です

2.2 AppDelegateで連携を設定する

次の方法でアプリのAppDelegate.mファイルを開き、AppsFlyerのSDKをインポートします。

Swift Objective-C
import AppsFlyerLib

3. SDKの初期化 

iTunes Connectから取得したアプリIDとAppsFlyer Dev Keyを使用して、didFinishLaunchingWithOptionsメソッドで次のようにSDKを初期化します。 

Swift Objective-C
AppsFlyerTracker.shared().appsFlyerDevKey= "aSikdJAsaAJS123ad23"
AppsFlyerTracker.shared().appleAppID= "123456789"
AppsFlyerTracker.shared().delegate= self
#ifdef DEBUG
AppsFlyerTracker.shared().isDebug= true
#endif

 

isDebug=trueが設定されている場合、AppsFlyer SDKのログがxCode Consoleに表示されます

 

  • applicationDidBecomeActive関数に次のコードを追加します。
Swift Objective-C
func applicationDidBecomeActive(application: UIApplication) { 
                    // Track Installs, updates & sessions(app opens) (You must include this API to enable tracking) 
                   AppsFlyerTracker.shared().trackAppLaunch() 
                   // your other code here.... }

4. アプリ内イベントの計測

アプリ内イベントにより、アプリ内の動作に関するインサイトを得ることができます。ROI(投資収益率)やLTV(顧客生涯価値)を計測するために、時間を取って計測するイベントを定義することをお勧めします。

アプリ内イベントの計測は、イベント名と値パラメーターを使用してtrackEventを呼び出すことで実行されます。詳細については、「アプリ内イベント」を参照してください。

アプリ内イベント名は45文字以下である必要があります。イベント名が45文字を超える場合は管理画面に表示されず、ローデータ、Pull API、Push APIにのみ表示されます。

例:レベル達成アプリ内イベント

Swift Objective-C
AppsFlyerTracker.shared().trackEvent(AFEventLevelAchieved,withValues: [ 
AFEventParamLevel: 9,
AFEventParamScore : 100
]);

これにより、AFEventLevelAchieved定数を使用してaf_level_achievedイベントタイプが生成され、次のイベント値がこのイベントに紐づきます:{af_level: 9 , af_score: 100} 

 

AppsFlyerでは、アプリ内イベント、またはiOS SDKバージョン4.8.1を始めとする他のSDK APIで、英語以外の文字をサポートします。

5. ディープリンクの計測

 ヒント

アプリにディープリンクを連携することを強くお勧めします。ディープリンクの計測はリターゲティングキャンペーンに必要な実装です。リターゲティングキャンペーンを実施する場合は、ディープリンクの使用を強くお勧めします。

iOS 9以降では、アプリでUniversal Linksをサポートする必要があります。詳細については、こちらをクリックしてください。


このような起動をレポートするには、アプリケーションデリゲートに次のコードを追加します。

Swift Objective-C
// iOS 9以降の場合にUniversal Linkからアプリ起動をレポートする
    func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
        AppsFlyerTracker.shared().continue(userActivity, restorationHandler: restorationHandler)
        return true
    }

    // Universal Linksをサポートしないアプリ(Twitter)およびiOS 8以前の場合に、ディープリンクからアプリ起動をレポートする
    func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
        AppsFlyerTracker.shared().handleOpen(url, sourceApplication: sourceApplication, withAnnotation: annotation)
        return true
    }

    // iOS 10以降の場合にディープリンクからアプリ起動をレポートする
    func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
        AppsFlyerTracker.shared().handleOpen(url, options: options)
        return true
    }

6. 収益の計測

AFEventParamRevenueイベントパラメーターを使用し、収益をアプリ内イベントの一部としてカウントします。正負を問わず、あらゆる数値を入力できます。

 

AFEventParamRevenueaf_revenueの使用と同等)は、AppsFlyerのローデータと管理画面で収益としてカウントされる唯一のイベントパラメーターです。詳細については、こちらをクリックしてください。


例:収益アプリ内イベント

Swift Objective-C
AppsFlyerTracker.shared().trackEvent(AFEventLevelAchieved,withValues: [
        AFEventParamContentId:"1234567",
        AFEventParamContentType : "category_a",
        AFEventParamRevenue: 1.99,
        AFEventParamCurrency:"USD"
    ]);

7. コンバージョンデータの取得

AppsFlyerを使用すると、SDKから直接、各新規インストールのユーザーアトリビューションデータにリアルタイムでアクセスできます。これにより、パーソナライズされたコンテンツを提供したり、アプリ内の特定アクティビティにユーザーを誘導したりして、ユーザーのアプリへのエンゲージメントを大きく高めることができます。 

この高度な機能の詳細については、こちらをクリックしてくだい。

8. ユーザー識別子

ユーザー識別子を取得するには、次のような多数のオプションを利用できます。

AppsFlyerデバイスIDの取得

AppsFlyerの一意のデバイスIDは、アプリが新しくインストールされるたびに作成されます。これは、次のコードを使用して取得できます。

Swift Objective-C
let appsflyerId = AppsFlyerTracker.shared().getAppsFlyerUID()

顧客ユーザーIDの設定

独自の顧客IDを設定すると、独自の一意のIDを、AppsFlyerの一意のIDや他のデバイスのIDと相互参照できるようになります。このIDは、ポストバックAPIと共にAppsFlyerのCSVレポートで確認でき、貴社の内部IDと相互参照することができます。

顧客ユーザーIDを設定するには:

Swift Objective-C
AppsFlyerTracker.shared().customerUserID= "my user id"

 重要な注意点

customerUserIDは、trackAppLaunchの前に設定する必要があります。この設定を実装後に発生したイベントのみに顧客ユーザーIDが関連付けられるため、顧客ユーザーIDはできる限り早い段階で設定することをお勧めします。顧客ユーザーIDは、MixpanelSwrveなどのアナリティクスプラットフォームとの連携を完了させるためにも利用できます。

顧客ユーザーIDの詳細については、こちらをクリックしてくだい。

ユーザーメールの設定

アプリでユーザーのメールアドレスを収集する場合、AppsFlyerを使用すると、1つ以上のメールアドレスをレポートできます。メールの値を暗号化するには、Sha1、MD5、プレーンの暗号化方法を使用できます。

例:ユーザーのメールアドレスを収集する

Swift Objective-C
AppsFlyerTracker.shared().setUserEmails(["email1@domain.com", "email2@domain.com"], with: EmailCryptTypeSHA1)

 

メールアドレスなどの個人識別情報(PII)は、AppsFlyerによって保持されず、いずれのレポートにも表示されません。PIIの収集は、メディアソースへのポストバックを目的としてのみ行われます。

IDFAとIDFV

アプリにAdSupport.frameworkが含まれる場合、AppsFlyerではIDFA(広告主用のID)とIDFV(ベンダー用のID)を自動的に収集します。

9. オプション機能

アンインストールの計測

アンインストールを計測する場合、アプリでリモートプッシュ通知を有効にしてください。詳細については、「リモート通知プログラミングガイド」を参照してください。

アンインストール機能のセットアップを完了するには、「iOS SDK連携の手順」に沿って操作してください。 

プッシュ通知の計測

プッシュ通知からのアプリ起動のトラッキングを有効にするには、アプリケーションデリゲートに次のコードを追加します。

Swift Objective-C
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any]) {
AppsFlyerTracker.shared().handlePushNotification(userInfo)
}

プッシュメッセージには、AppsFlyerトラッキングパラメーターと共にafパラメーターを設定する必要があります。

メッセージの例:

{
"aps": {
"alert": "Push text",
"sound": "default",
"category": "REMINDER_CATEGORY"
},
"_p": 123456,
"payloadKey": "payloadValue"
"af": {
"pid": "swrve_int",
"is_retargeting": true,
"c": "test_campaign"
}
}

クロスプロモーションの計測

AppsFlyerを使用すると、ユーザーが使用する既存アプリ内に表示された、いずれかのアプリのクロスプロモーションから生じるインストールの計測とアトリビュート分析を行うことができます。アプリのクロスプロモーションは、アプリの追加インストールを促進する重要な増加要因となる場合があります。

詳細については、こちらの「クロスプロモーションのトラッキング」に関する記事を参照してください。 

ユーザー招待の計測

AppsFlyerを使用すると、アプリ内のユーザー招待から生じるインストールの計測とアトリビュート分析を行うことができます。既存ユーザーが友人や連絡先を新規ユーザーとしてアプリに招待できるようにすると、アプリの重要な増加要因となる場合があります。 
 
詳細については、こちらの「ユーザー招待の計測」に関する記事を参照してください。 

通貨コードの設定 

AppsFlyerに送信される各アプリ内イベントでは、特定の通貨コードが使用できるだけでなく、以下のAPIを使用してグローバル通貨コードを設定することもできます。グローバル通貨コードは、1 AFEventParamCurrency nbsp 1がアプリ内イベントで送信されない場合に使用されます。 nbsp 1がアプリ内イベントで送信されない場合に使用されます。 nbsp AFEventParamCurrencyがアプリ内イベントの一部として送信されない場合に使用されます。

USD(米国ドル)がデフォルト値です。使用可能なISO通貨コードは、こちらで確認することができます。

通貨コードを設定するには、以下のAPIを使用します。

public void currencyCode(String currencyCode);

使用例:

Swift Objective-C
AppsFlyerTracker.shared().currencyCode= "USD"

アプリ内購入検証

 

この関数はiOS 7以降でサポートされます。

AppsFlyerのSDKにより、アプリ内購入のサーバー検証を実行できます。レシート検証のトラッキングを設定するには、validateAndTrackInAppPurchaseメソッドをSKStoreKitのcompleteTransaction:コールバックの内部で呼び出す必要があります。この呼び出しにより、af_purchaseアプリ内イベントが自動的に生成されます。

- (void) validateAndTrackInAppPurchase:(NSString *) productIdentifier
price:(NSString *) price
currency:(NSString *) currency
transactionId:(NSString *) tranactionId
additionalParameters:(NSDictionary *) params
success:(void (^)(NSDictionary *response)) successBlock
failure:(void (^)(NSError *error, id reponse)) failedBlock;

 

価格パラメーターには、検証される購入イベントに関連付けられた総収益を含める必要があります。


この呼び出しには、「Success」と「Failure」(検証の失敗など、あらゆる理由によるもの)の2つのコールバックブロックがあります。成功すると、Appleのサーバーから提供されるレシート検証データと共にディクショナリが返されます。

 重要

テストの目的のため、useReceiptValidationSandboxフラグをYESに設定することが推奨されます。これにより、リクエストがAppleサンドボックスサーバーにリダイレクトされます。

#ifdef DEBUG
    [AppsFlyerTracker sharedTracker].useReceiptValidationSandbox= YES;
#endif

 

 例

[[AppsFlyerTracker sharedTracker] validateAndTrackInAppPurchase:product.productIdentifierprice:product.price.stringValue
currency:@"USD"
transactionId:trans.transactionIdentifier
additionalParameters:@{@"test": @"val" , @"test1" : @"val 1"}
success:^(NSDictionary *result){
               NSLog(@"Purcahse succeeded And verified!!! response: %@", result[@"receipt"]);
} failure:^(NSError *error, id response) {
               NSLog(@"response = %@", response);
}];

 

レシート検証で返される可能性のある値のリストについては、こちらからAppleのマニュアルを参照してください。

匿名化

AppsFlyerでは、AppsFlyerアナリティクスで特定のユーザーを匿名化するためのメソッドが用意されています。このメソッドは、最新のプライバシー要件とFacebookのデータおよびプライバシーに関するポリシーに準拠しています。デフォルトではNOに設定されているため、匿名化は無効になっています。

ユーザーのインストール、イベント、セッションのトラッキングを明示的に匿名化するには、SDKの初期化中にこのAPIを使用します。

Swift Objective-C
AppsFlyerTracker.shared().deviceTrackingDisabled= true

トラッキングを再開するには、deviceTrackingDisabled(falseに設定されている)を再度呼び出します。

 警告

ユーザーを匿名化することにより、アトリビューション情報に大きな悪影響があります。
ユーザーの情報を収集することが法的に禁じられている地域でのみ、このオプションを使用してください。

カスタムのセッション間隔

AppsFlyerで2つの個別のセッションをカウントするには、各セッション間のデフォルトの間隔が5秒以上である必要があります。 ユーザーがアプリを開くと、セッションが開始されます。   各セッションの間隔を別の長さに設定するには、次のAPIを使用します。

Swift Objective-C
AppsFlyerTracker.shared().minTimeBetweenSessions= <your_custom_time_in_seconds>

ユーティリティ系アプリ向けバックグラウンドセッション

iOSでは利用できません。 
 

iOSアプリ拡張とWatchKit

アプリ拡張には、インターネットを使用するパーミッションが必要であり、次の方法で指定します。

  1. アプリ拡張のinfo.plistファイルにアクセスします
  2. NSExtension / NSExtensionAttributesで、RequestsOpenAccessフラグを「YES」に設定します。

次のコードをアプリ拡張のUIViewController viewDidLoadに追加します。

Swift Objective-C
override func viewDidLoad() {    
        super.viewDidLoad()
        AppsFlyerTracker.shared().appsFlyerDevKey = "MY_APPSFLYER_KEY"

        // MY_APP_ID below stands for you app ID on iTunes Connect. Should be 9 or 10 digits.
        AppsFlyerTracker.shared().appleAppID = "MY_APP_ID"
                
        AppsFlyerTracker.sharedTracker().trackAppLaunch()
    }

App Extensionでアトリビューションデータを受け取るには、こちらの手順に従い、AppDelegateではなく、アプリのUIViewControllerに実装します。

オプトアウト

いくつかの極端なケースでは、法律とプライバシーの遵守のため、すべてのSDKトラッキングを停止する必要が出てくることがあります。この場合は、isStopTracking APIを使用できます。このAPIが呼び出されると、SDKはサーバーとの通信と動作を停止します。

Swift Objective-C
AppsFlyerTracker.shared().isStopTracking = true

デバイス名の収集

AppsFlyer SDKでは、内部分析のためにデバイス名を収集することができます。デフォルトでは、この機能はオフになっています。オンにするには、以下のAPIを使用します。

Swift Objective-C
AppsFlyerTracker.shared().shouldCollectDeviceName = false`

 重要

デバイス名は、特定の地域では個人データとみなされます。法的に許可されていることを理解し、ユーザーの明示的な同意を得ている場合にのみ、この情報を収集します。

10. SDK実装テスト

連携のテスト方法に関する詳細については、こちらをクリックしてください。

11. アプリをストアに提出

アプリのアプリストアへの送信方法については、こちらをご覧ください。

表示
この記事は役に立ちましたか?
12人中8人がこの記事が役に立ったと言っています

コメント

0件のコメント

ログインしてコメントを残してください。