実装テスト

始める前に

このドキュメントのテストを正常に完了するためには、以下が必要です。

iOS SDK実装テスト

テストは、以下で構成されています。

  1. ユーザーの広告クリックとアプリインストールのシミュレーション:
  2. インストールのコンバージョンデータを検証してください。

Apps that implement ATT

アプリに App Tracking Transparency (ATT) を実装する場合は、これらの手順に従ってください。
以下の条件を満たす場合、IDマッチングによって計測が発生します。

  • 計測リンクに idfa パラメーターが含まれている
  • ATTが実装されており:
    1. requestTrackingAuthorization は、start の前に呼び出されます(waitForATTUserAuthorization を使用)。
    2. ユーザーの同意を得ている。

ステップ1:広告クリックのシミュレーション
計測リンク経由で広告クリックをシミュレートしてください。以下のように計測リンクを構成してください。

https://app.appsflyer.com/<app_id>?pid=<media_source>
&idfa=<registered_device_idfa>

場所:

  • app_id は、あなたのAppsFlyerアプリIDです(id サフィックスを含む)
  • pid は、インストールが紐づくメディアソースです
  • idfa は、登録されたデバイスのIDFAです


アプリIDが id123456789 の場合、計測リンクは次のようになります:

https://app.appsflyer.com/id123456789?pid=conversionTest1&idfa=1A2B3C4D-9128-4597-1234- 
04E23D654321

ステップ2:アプリのインストール
デバッグモードを有効にして、登録したテストデバイスにアプリをインストールしてください。

ステップ3:テストの実行
コンバージョンデータの検証に進んでください。

Apps that don't implement ATT

ステップ1:広告クリックのシミュレーション
計測リンク経由で広告クリックをシミュレートしてください。以下のように計測リンクを構成してください。

https://app.appsflyer.com/<app_id>?pid=<media_source>

場所:

  • app_id は、あなたのAppsFlyerアプリIDです(id プレフィックスを含む)
  • pid は、インストールが紐づくメディアソースです


アプリIDが id123456789 の場合、計測リンクは次のようになります:

https://app.appsflyer.com/id123456789?pid=conversionTest1

ステップ2:アプリのインストール
デバッグモードを有効にして、任意のデバイスにアプリをインストールしてください。デバイスを登録するIDFAが利用できないため、デバイスを登録する必要はありません。

ステップ3:テストの実行
コンバージョンデータの検証に進んでください。

👍

ヒント

計測リンクを使用したテストは複数回行われることがよくあります。そのため、アトリビューションパラメータの1つを使用して、テストのバージョンを区別することをお勧めします。どのリンクがどのコンバージョンに紐づいているのかを簡単に把握することができます。

上記の例では、pid の値は conversionTest1 です。連続したテストでは、pid の値を conversionTest2conversionTest3のように増やしていきます。

Inspect conversion data

広告のクリックをシミュレートし、アプリをインストールした後、以下の手順でインストールのコンバージョンデータを検証してください。

ステップ1:インストールUIDの取得
アプリがインストールされたら、Xcodeターミナルで、conversions.appsflyer を検索してください。uid パラメーターを探し、その値をコピーしてください。

ステップ2:テストの実行とレスポンスの確認
コンバージョンデータの取得へ進み、必要な項目を入力してください:

  1. app-id:アプリID
  2. devkey:AppsFlyer Devキー
  3. device_id:ステップ1から uid の値を貼り付けてください

その後、Try it! をクリックしてテストを実行してください。

期待される結果
ATTが実装されユーザーの同意が得られている場合、結果は以下のような200レスポンスです(読みやすく省略済):

{
    ...
    "af_status" = "Non-organic";
    ...
    "match_type" = id_matching;
    "media_source" = conversionTest1;
    ...
}

そうでない場合は、計測は確率論的に実行され、その結果、次のような200レスポンスとなります(読みやすさのために切り捨てられています):

{
    ...
    "af_status" = "Non-organic";
    ...
    "match_type" = probabilistic;
    "media_source" = conversionTest1;
    ...
}

インストールが計測されていない場合、結果は次のペイロードを含む200レスポンスです:

{
    "af_message" = "organic install";
    "af_status" = Organic;
    "install_time" = "2021-08-23 06:59:51.194";
    "is_first_launch" = 1;
}

📘

注意

インストールが管理画面に表示されるまで最大30分かかる場合があります。

iOS SDK実装のトラブルシューティング

インストールとアプリ内イベントが計測されない

インストールとアプリ内イベントが計測されない理由はいくつかあります:

  • 間違ったアプリIDの形式:アプリIDを間違った形式で指定すると、インストールとイベントは記録されません。delegateファイルにアプリIDを設定するときは、アプリIDが数字のみで構成されていることをご確認ください。アプリIDのフォーマットが間違っている場合、ログに次のエラーが表示されます:

    \[ERROR\] AppsFlyer: -\[AppsFlyerTracker validateAppID\] 
        AppsFlyer Error: appleAppID should be a number!
    
  • 誤ったアプリID:アカウントに存在しないアプリIDを指定すると、インストールとイベントは記録されません。ログには次のエラーが表示されます:

    AppsFlyer: -[AppsFlyerHTTPClient sendRequestEventToServer:isRequestFromCache:appID:isDebug:
            completionHandler:]_block_invoke sent information to server, status = 404
    

404エラーは、SDKがアカウント内でアプリを見つけつることができなかったことを示します。

  • 間違ったDevキー:正しくないDev キーを指定すると、インストールとイベントは記録されません。ログには次のエラーが表示されます:

    AppsFlyer: -[AppsFlyerHTTPClient 
    sendRequestEventToServer:isRequestFromCache:appID:isDebug:completionHandler:]
            _block_invoke sent information to server, status = 400
    

    400エラーは、インストールやイベントを計測するためのリクエストをSDKで認証できないことを示します。正しいdev keyを設定しているかご確認ください。dev keyは英数字のみで構成されています。

    正しいフォーマット:

    [AppsFlyerLib shared].appleAppID = @"340954503";
    

    間違ったフォーマット:

    [AppsFlyerLib shared].appleAppID = @"id340954503";
    

    間違ったフォーマット:

    [AppsFlyerLib shared].appleAppID = @"com.appslyer.sampleapp";
    

アプリIDとDevKeyは正しいが、インストールが計測されない

シナリオ
正しいアプリIDとDevKeyがアプリに設定されていますが、インストールが計測できません。

よくあるエラー要因
SDKの初期化が正しく行われていません。applicationDidBecomeActive で、start メソッドを呼び出していることを確認してください:

- (void)applicationDidBecomeActive:(UIApplication *)application { 
        [[AppsFlyerLib shared] start]; 
        }
func applicationDidBecomeActive(application: UIApplication) { 
        AppsFlyerLib.shared().start() 
    }

ログに"AppsFlyer dev key missing or empty. aborting”と表示される

シナリオ
ログ内でインストールとアプリ内イベントのテストを試みましたが、ログに"AppsFlyer dev key missing or empty. Aborting”と表示されます。

よくあるエラー要因

Devキーが設定されていません。 in the didFinishLaunchingWithOptions メソッドの appDelegate でDevキーが設定されていることを確認してください。

[AppsFlyerLib shared].appsFlyerDevKey = @"<AF_DEV_KEY>";
AppsFlyerLib.shared().appsFlyerDevKey = "<AF_DEV_KEY>"

インストールが常にオーガニックとして計測される

シナリオ
計測リンクを使用したテストをしています。SDKコンバージョンリスナーを実装しましたが、ログではインストールが全てオーガニックであると表示されます。管理画面上でも非オーガニックインストールが記録されていません。

よくあるエラー要因

  1. 利用している計測リンクが間違っています。計測リンクガイドを参照してください。
  2. テストに使用している端末がテスト端末に登録されていることをご確認ください。

収益が正しく計測できていない

シナリオ
収益値を含むアプリ内イベントのテストをしています。イベントは管理画面に表示されますが、収益値は計測されません。

よくあるエラー要因
収益パラメータの形式が正しくありません。revenueの値にはどのようなフォーマットも適用しないでください。カンマ区切り、通貨記号、テキストなどを含めないでください。たとえば、収益の値は「1234.56」のように設定してください。

インストールまたはイベント計測で404エラーが表示される

シナリオ
インストールやアプリ内イベントが正しいメディアソースにアトリビュートされるかテストしようとしています。しかし、インストールもアプリ内イベントも404エラーが表示されます。インストールもアプリ内イベントも管理画面に表示されません。

よくあるエラー要因
404エラーは、アプリIDが正しくないことを示しています。インストールとイベントが計測されないを参照してください。

インストールまたはアプリ内イベントのテストをすると400エラーになる

シナリオ
ログ内のアプリ内イベントをテストしようとしています。イベントをトリガーすると、ログに400エラーが表示されます。

よくあるエラー要因
dev keyに問題がある可能性があります。正しいdev keyを設定しているかご確認ください。dev keyは英数字のみで構成されています。インストールとイベントが計測されないを参照してください。

インストール / アプリ内イベントのテストをすると、403のエラーレスポンスを受け取ってしまう

シナリオ
log内でインストールやアプリ内イベントのテストを行おうとしている場合、log内でそれらのイベントを発火させると403のエラーレスポンス(forbidden/禁止)が表示されます。

よくあるエラー要因
This might be because you have the Zero package, which does not include attribution data; only data on clicks and impressions. To start receiving attribution data, learn more about the different AppsFlyer packages, and update as needed. You can also contact our customer engagement team at [email protected] if you have questions about our packages.

iOSデバッグアプリの作成

オプション
Xcodeのコンパイル構成機能を利用して、使いやすい デバッグアプリを構成することができます。これにより、Xcodeのアクティブなコンパイル状態を利用して、デバッグ用アプリとプロダクション用アプリを切り替えることができるようになります。

📘

注意

本番用データとテスト用トラフィックが混在しても構わない場合は、実装テストに進んでください。すべてのテストは、本番アプリとデバッグアプリの両方で行うことができます。

これは、プロジェクトのBuild SettingsでUser-Defined Settingを設定し、それをinfo.plistプロパティで公開することで実現できます。

ステップ1:AppsFlyerにデバッグアプリを追加する
新規申請中のiOSアプリをAppsFlyerに追加するか、管理画面にアクセスできるチームメンバーに追加を依頼してください。利用できる任意のアプリIDを選択してください。これはステップ3で必要です。

ステップ2:ユーザー定義の設定を追加

  1. Xcodeのファイルナビゲータービューで、プロジェクトルートを選択し、Build Settingsへ進みます。
  2. ツールバーの + をクリックし、Add User-Defined Setting を選択してください。この場合、AF_APP_ID と名付けています。
  3. 新たに作成した User-Defined Setting を展開してください。
    • Debug Conditional Setting をテストアプリのアプリIDに設定してください(ステップ1で記述)。
    • Release Conditional Setting を本番アプリのアプリIDに設定してください。

ステップ3: info.plist でアプリIDを公開
プロジェクトの info.plist に進み、新しいプロパティ(この場合 AFAppID と呼ばれる)を追加してください。その値を $(AF_APP_ID) に設定してください(ステップ2のユーザー定義の設定の名前に基づく)。

ステップ4:アプリIDを取得し設定
SDKの初期化時にアプリIDにアクセスに使用するには、次のコードを AppDelegatedidFinishLaunchingWithOptions に追加してください:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // ...
    guard let appID : String = Bundle.main.object(forInfoDictionaryKey: "AFAppID") as? String else {
        fatalError("Cannot find app ID")
    }
    AppsFlyerLib.shared().appleAppID = appID
    // ...
    return true
}

ステップ5:Debugビルドの設定によるアプリの実行
アクティブビルドの設置を変更する方法:

  1. go to Product > Scheme > Edit Scheme....
  2. Run を選択して、必要に応じて Build configurationDebug または Release に変更してください。

これで、Debug設定を使用してアプリを構築した際に、ステップ2で設定したXcodeはデバッグアプリIDを使用します。


このページは役に立ちましたか?