iOS SDKのダウンロード&インテグレーションガイド - AppsFlyer SDK Integration - iOS 4.5.3

現在のバージョン: 4.5.3

AppsFlyerのSDKはアプリのインストールとイベント計測機能を提供しています。非常に堅牢(現在まで80億以上のSDKのインテグレーションが行わています)で、セキュリティ度が高く、軽量でとても埋め込みが簡単です。

インストール、アップデートそしてセッション(以下の必須のステップをたどる必要があります)を測定することができます。またインストールに留まらないアプリ実装後のアプリ内イベント(アプリ内購入、ゲームレベル等)を計測し、ROIとユーザーエンゲージメントレベルを評価することができます。

計測に最低限必要なステップは以下に説明されています。任意のオプション機能についてもそれ以降のセクションで説明しています。

iOS SDKはiOSのバージョンが6およびそれ以上(9を含む)の全てのiOSデバイス(iPhone、iPod、iPad)に対応しています。

注意点:  

  • AppsFlyerのSDKはAppleのIPv6 DNS64/NAT64ネットワークに対応しています。より詳しい情報はこちらをご覧ください
  • AppsFlyerのSDKはNSUserDefaults classを利用しています。NSUserDefaultsの値をクリアするとアトリビューションに問題が発生する可能性があります。

以下のセクションがインテグレーションガイドでカバーされています。

  • iOS SDKダウンロード
  • 本バージョンでの更新点
  • SDKのアプリへの埋め込み(必須)
  • SDKの初期化およびインストールイベント(計測に最低限必要な手順)
  • アプリ内イベントの計測API(任意)
  • 上級インテグレーション
  • SDK導入テストの実施

 iOS SDKダウンロード

  • iOS SDKをstatic libraryとしてダウンロードするためには、こちらをクリックしてください。
  • iOS SDKをframeworkとしてダウンロードするにはこちらをクリックしてください。

1.  このバージョンでの変更点

    • Apple Development Environment に対してアンインストールテストをするためのディベロップメントフラグを追加しました。

2.  アプリへのSDKの埋め込み(必須)

AppsFlyer SDKはframeworkとstatic libraryで利用可能です。

2.1  AppsFlyer SDK Framework

Frameworkを実装するもっとも簡単な方法はcocoapodsを利用する方法です。:

  • podファイルに次の行を追加します:

pod ‘AppsFlyerFramework’

もしcocoapodsを利用しない場合は以下の手順を行ってください:

  • XcodeでBuild Phases >> Link Binary with Libraries を開き >> “+” サインをクリックし新しいlibraryを追加します。

  • “Add Other” をクリックし、“AppsFlyerLib.framework” を追加します

  • 以下のヘッダーを追加します。
#import <AppsFlyer/AppsFlyer.h>

2.2  AppsFlyer SDK Static Library

実装するもっとも簡単な方法はcocoapodsを利用する方法です。

  • Add the following line to your pod file:
pod 'AppsFlyer-SDK'

cocoapodsを利用しない場合は、以下の手順を行ってください

  • ヘッダーファイルとライブラリファイルをプロジェクトに追加します。
  • AppsFlyerヘッダーインポートを追加します。
  • #import "AppsFlyerLib/AppsFlyerTracker.h"
  • Add the AdSupport.framework to your project and set it as Optional. You can find the submission instructions here. frameworkをプロジェクトに追加し、”Optional”として設定します。アプリ申請に関する説明はこちら

2.3  IDFA

注:  AppsFlyerでは、AdSupport.frameworkが含まれている場合に限り、IDFAを収集します。

  • frameworkをプロジェクトに追加します。この手順は任意です。

3.  SDKの初期化およびインストールイベント(計測に最低限必要な手順)

これはアプリインストールを計測し始めるために最低限必要な手順ですのでご注意ください。

アプリケーションを初めて起動するときに、SDKを初期化する必要があります。次のトラッキング イベントを送信する前に、必ずSDKを初期化してください。

3.1  SDKの初期化

SDKを初期化するには、次のコードを“didFinishLaunchingWithOptions”ファンクションに追加します:

[AppsFlyerTracker sharedTracker].appsFlyerDevKey = @"REPLACE THIS WITH YOUR Dev_Key";
[AppsFlyerTracker sharedTracker].appleAppID = @"REPLACE THIS WITH YOUR App_ID";

注:数字のみを入力し、”ID”は含めないようにしてください。例:App IDがid123456789であれば、以下のように表示されます。

[AppsFlyerTracker sharedTracker].appleAppID = @"123456789";

[Dev_Key] を独自の Dev_Key に置き換えます(独自の Dev_Key はアカウントへログインし、AppsFlyer 管理画面から“Settings” > “Integrate the SDK into...“ から取得できます)。例:a4kGpVyxm8iGgzvzT8NPaV

3.2  コードの追加

“applicationDidBecomeActive” ファンクションの AppDelegate.m ソースファイルに、次のコードを追加します:

#import "AppsFlyerTracker.h"

-(void)applicationDidBecomeActive:(UIApplication *)application

{

     // Track Installs, updates & sessions(app opens) (You must include this API to enable tracking)

     [[AppsFlyerTracker sharedTracker] trackAppLaunch];
}

重要:  

  • アプリがディープリンクをサポートしている場合、セクション7で説明されている手順を実装してください。そうすることでディープリンクに続くセッションと他のアプリ内アクティビティを計測できるようになります。

4.  アプリ内イベントの計測 API (任意)

この API は AppsFlyer がインストール後のアプリ内イベントの計測を可能にします。これらのイベントは広告主によって定義され、イベント名に加えて任意のイベント値が含まれます。

これらのイベントによって、ロイヤル ユーザーがどのようにアプリを発見し、特定のキャンペーンやメディアから成果に至ったかをトラッキングできます。ROI (投資収益率) や LTV (ライフタイム バリュー) を計測するために、計測したいアプリ内イベントを慎重に定義するのをおすすめします。.

シンタックス:

- (void) trackEvent:(NSString *)eventName withValues:(NSDictionary*)values

eventName は、イベントの名前を定義する任意の文字列です。

Values はリッチイベントを構成するイベントパラメータです。

収益(revenue)をアプリ内リッチイベントの一部として計測:‘af_revenue” (constant)

AFEventParamRevenue

イベントパラメータは収益をアプリ内リッチイベントの一部として計測します。正または負の任意の数値を設定できます。

注:“af_price”   

AFEventParamPrice

はイベントの説明的なパラメータであり、収益として計測するためのものでなく、収益額や LTV 計測に反映されませんので注意ください。

例1:「レベル達成」アプリイベント

[[AppsFlyerTracker sharedTracker] trackEvent: AFEventLevelAchieved withValues:@{        
    AFEventParamLevel: @9,
    AFEventParamScore : @100 }];

これはイベントタイプ “af_level_achieved” を以下のイベントバリューと一緒に生成します:

{af_level: 9 , af_score: 100}

例2:購入イベント

 

[[AppsFlyerTracker sharedTracker] trackEvent:AFEventPurchase withValues: @{

    AFEventParamContentId:@"1234567",

    AFEventParamContentType : @"category_a",

    AFEventParamRevenue: @200,

    AFEventParamCurrency:@"USD"}];

これはイベントタイプ “af_purchase” を以下のイベントバリューと共に生成します:

{af_content_id: “1234567” , af_content_type: “category_a”, af_revenue: 200, af_currency: “USD”}

 上記の購入イベントは$200 の収益を含み、これは収益として管理画面に反映されます。

注:アプリ内イベントの名前は45文字以下である必要があります。45文字以上のイベントネームは管理画面に表示されず、ローデータレポート、PullおよびPush APIにのみ表示されます。

iOSアプリ内リッチイベント詳細についてはこちらをご参照ください。

5.  上級インテグレーション

以下の API は任意であり、AppsFlyer SDK の上級インテグレーションの一部です。

5.1  通貨コードの設定(任意)

AppsFlyer 側に送信される各リッチアプリ内イベントに使用される各通貨コードに加えて、以下の API を用いてグローバル通貨コードを設定できます。グローバル通貨コードは、“af_currency”(AFEventParamCurrency) がアプリ内イベントデータとして送信されない場合に適用されます。

USD (米国ドル) が既定値です。使用できる ISO 通貨コードはこちらです。

通貨コードを設定するには、以下の API を用いてください:

 

[[AppsFlyerTracker sharedTracker].currencyCode = @"GBP"];

5.2  Get AppsFlyer Unique ID (Optional)

アプリの新規インストールに対して、それぞれ AppsFlyer 独自の ID が生成されます。AppsFlyer の独自ID は AppsFlyer がレポートや API で用いる主な ID です。

AppsFlyer の独自 ID を取得するには以下の API を用いてください:

(NSString *) [AppsFlyerTracker sharedTracker] getAppsFlyerUID

5.3  顧客 ID の設定(任意)

独自の顧客 ID を設定すると、独自の固有 ID を、AppsFlyer ID や他のデバイスの ID と相互参照できる ようになります。この ID は、ポストバック API とともに AppsFlyer の CSV レポート上で確認でき、広告主 側の内部的な ID と相互参照することができます。

顧客 ID を設定する方法:

[[AppsFlyerTracker sharedTracker].customerUserID = @"YOUR_CUSTOM_DEVICE_ID"];

重要:

  • この設定を実装したあとに発生したイベントのみに顧客IDが付与されるため、顧客 ID の設定は、できる限り最初の段階で設定することをおすすめします。
  • MixpanelやSwrveなどのアナリティクスツールとのAppsFlyer連携を利用する場合には、顧客IDはこのAPIを用いて設定する必要があります。
  • この設定を実装あとに発生したイベントのみに顧客 ID が付与されるため、顧客 ID の設定は、できる限り最初の段階で設定することをおすすめします。
  • MixpanelやSwrveなどのアナリティクスツールとのAppsFlyer連携を利用する場合には、顧客 ID はこの API を用いて設定する必要があります。

顧客IDについてのより詳しい情報はこちらをご覧ください。

5.4  コンバージョンデータの取得(Get Conversion Data)(任意)

AppsFlyer を使うことで、リアルタイムで直接 SDK レベルでユーザーのアトリビューションデータにアクセスできます。このデータをもとに、ユーザーがインストール後にアプリ初期起動で表示するランディングページをカスタマイズすることが可能です。

この機能の詳細はこちらを参照ください。

5.5   App Extension Supportの有効化 (任意)

App Extensionはインターネットに接続する許可を必要とします。

  1. App Extensionの”info.plist”ファイルにアクセスします。
  1. NSExtension / NSExtensionAttributesでRequestsOpenAccess flagをYESに設定します。App Extension ViewController ViewDidLoadでAppsFlyerLibを初期化します。
On the App Extension ViewController ViewDidLoad initialize AppsFlyerLib:

[AppsFlyerTracker sharedTracker].appsFlyerDevKey = @"YOUR_DEV_KEY_HERE";
[AppsFlyerTracker sharedTracker].appleAppID = @"APP_ID_HERE"; 
[AppsFlyerTracker sharedTracker].delegate = self;
[[AppsFlyerTracker sharedTracker] trackAppLaunch];

コンバージョンデータを受け取るには、

  1. App Extension ViewController.hにアクセスします。
  2. Appsflyerヘッダーファイルをインポートします。
#import "AppsFlyerTracker.h"
  1. <AppsFlyerTrackerDelegate>をinterface declarationに追加する。

Extension ViewController.mに以下のメソッドを追加する。

-(void)onConversionDataReceived:(NSDictionary*) installData {
    id status = [installData objectForKey:@"af_status"];
   if([status isEqualToString:@"Non-organic"]) {     
      id sourceID = [installData objectForKey:@"media_source"];      
      id campaign = [installData objectForKey:@"campaign"];      
      NSLog(@"This is a none organic install. Media source: %@  Campaign: %@",sourceID,campaign);      
  } else if([status isEqualToString:@"Organic"]) {      
      NSLog(@"This is an organic install.");      
  }
 }
-(void)onConversionDataRequestFailure:(NSError *) error {  
  NSLog(@"%@",error);
}
- (void) onAppOpenAttribution:(NSDictionary*) attributionData {  
  NSLog(@"attribution data: %@", attributionData);
}
- (void) onAppOpenAttributionFailure:(NSError *)error {
  NSLog(@"%@",error);
 }

5.6   ユーザーメールアドレスの設定 (任意)

AppsFlyer は、デバイスに紐付く複数のメールアドレスをレポートすることができます。デベロッパーはユーザーからメールアドレスを取得し、AppsFlyer にそれを好きな暗号化メソッドで報告できます。以下の暗号化メソッドが利用可能です: Sha1、MD5、plain

例:

[[AppsFlyerTracker sharedTracker] setUserEmails:@[@"email1@domain.com", @"email2@domain.com"] withCryptType:EmailCryptTypeSHA1];

注: メールアドレスのような個人識別可能情報(PII)はAppsFlyerでは保管しておりません。またこれらの情報はいかなるレポートにも表示されることはありません。この情報の収集の目的は純粋にメディアソースへのポストバックのためのみとなります。

5.7  リターゲティング・アトリビューションのディープリンクを記録(任意)

AppsFlyer ではディープリンクとユニバーサルリンクを経由した起動を記録し、リターゲティング・アトリビューション広告の成果を分析できます。

このような起動を記録するには、次のコードを app delegate から追加します:

// Reports app open from a Universal Link for iOS 9

- (BOOL) application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray *_Nullable))restorationHandler

{    

[[AppsFlyerTracker sharedTracker] continueUserActivity:userActivity restorationHandler:restorationHandler];

return YES;

}

// Reports app open from deeplink for iOS 8 or below

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
      sourceApplication:(NSString*)sourceApplication annotation:(id)annotation

{

[[AppsFlyerTracker sharedTracker] handleOpenURL:url sourceApplication:sourceApplication withAnnotation:annotation];
return YES;
}

より詳細な情報はOneLink設定ガイドをご参照ください。

5.8  アプリ内購入イベントのレシート検証(任意)

注:この機能は iOS7 以上にて対応しています

AppsFlyerのSDKはアプリ内購入のサーバー検証を提供しています。レシート検証の計測を設定するには、SKStoreKitのcompleteTransaction: callback内にあるvalidateAndTrackInAppPurchaseメソッドを呼び出す必要があります。この呼び出しは自動的にアプリ内イベント「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 つのコールバックブロックが含まれています。「success 」の場合は、dictionary は Apple のサーバーから提供されるレシート検証データとともに返却されます。

【重要】テストを実行するためには、useReceiptValidationSandboxフラグを YESに設定することを推奨します。こうすることで、リクエストをApple sandboxサーバーにリダイレクトします。

[AppsFlyerTracker sharedTracker].useReceiptValidationSandbox = YES;

例:

[[AppsFlyerTracker sharedTracker] validateAndTrackInAppPurchase:product.productIdentifier price: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);
}];

5.9 エンドユーザーのオプトアウト(任意)

AppsFlyer には、AppsFlyer アナリティクスから特定のユーザーをオプトアウトするための方法があります。この方法は、最新のプライバシー要件に適合しており、Facebook のデータポリシーとプライバシーポリシーにも適合しています。既定値は NO で、計測が有効になっています。

セクション 4 の SDK 初期化の段階で、以下の API を用いてオプトアウトしてください。

[AppsFlyerTracker sharedTracker].deviceTrackingDisabled = YES;

5.10  ID for Advertisers – IDFA/IFA からの明示的なオプトアウト(任意)

AppsFlyerのSDKは、AdSupport.frameworkライブラリがプロジェクト内に含まれている場合に限り、IDFAを収集します。明示的にオプトインやオプトアウトを行う必要はありません。ただし、IDFAを明示的にオプトアウトしたい場合は、セクション4のSDKの初期化で、次のAPIを使用してください:

[AppsFlyerTracker sharedTracker].disableAppleAdSupportTracking = YES;

IDFAは、disableAppleAdSupportトラッキングがYESに設定された場合、AppsFlyerのサーバーで収集されることはありません。

5.11 アンインストール・トラッキング(任意)

AppsFlyerではアンインストールのトラッキングが可能です。このファンクションを使って、アンインストール機能に登録してみましょう。

このファンクションを呼ぶ必要があります:

- (void)application:(UIApplication ​*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *​)deviceToken {

この機能を有効にするために、このコードを呼び出す必要があります。

// Register for Push Notitications
   UIUserNotificationType userNotificationTypes = (UIUserNotificationTypeAlert |
                                                   UIUserNotificationTypeBadge |
                                                   UIUserNotificationTypeSound);
   UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:userNotificationTypes
                                                                            categories:nil];
   [application registerUserNotificationSettings:settings];
   [application registerForRemoteNotifications];
   
   [application setMinimumBackgroundFetchInterval:UIApplicationBackgroundFetchIntervalMinimum];
   application.applicationIconBadgeNumber = 0;


- (void)application:(UIApplication ​*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *​)deviceToken {
   [[AppsFlyerTracker sharedTracker] registerUninstall:deviceToken];
}

Appleのディベロップメント環境に対してアンインストールテストをする際は、以下のフラグをオンにする必要があります:

[AppsFlyerTracker sharedTracker].useUninstallSandbox = YES;

 

使用例:

[[AppsFlyerTracker sharedTracker] registerUninstall:deviceToken];

このプロセスを完全かつ正確に完了させるために、こちらを必ずご一読ください。

5.12 OneLinkを使ったディープリンクの実装(任意)

OneLinkはaf_dpパラメータ配下のスキームもしくはiOS9におけるユニバーサルリンクに言及することで、ディープリンクされた場所を開かせることができます。

AppsFlyer SDKにより呼び出されたonAppOpenAttributionコールバックを実行することができます。それによりアプリを開くOneLinkパラメータを戻します。それからバリューを分析し、そのロジックを適用して関連するアプリのページを開かせることができます。 

(void) onAppOpenAttribution:(NSDictionary*) attributionData; ///iOS

より詳しい情報はこちらをご覧ください。

5.13プッシュ通知測定(任意)

AppsFlyerではプッシュ通知を広告キャンペーンの一部として測定することが可能です。

--(void) application:(UIApplication ​*)application didReceiveRemoteNotification:(NSDictionary *​)userInfo {
   [[AppsFlyerTracker sharedTracker] handlePushNotification:userInfo];
}
  1.  SDK 導入テストの実施

App Store にアプリを提出する前/後に SDK 導入をテストする方法は、こちらをご覧ください。

 

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