概要:アドネットワークの皆さまへ。 Audiencesのパートナー接続について、よくある質問と回答を紹介します。
APIキーとパートナープルキー
APIキーとテスト用APIキーは、何に使用しますか?
APIキーは、パートナーが広告主ごとに発行する一意のキーです。各API呼び出しで広告主を識別するために使用します。通常は、長い16進数の文字列です(例:d41ac239b3b918e28fa0c)。テスト時には、テスト用APIキーをご提供いただく必要があります。AppsFlyerは、このキーを使用してオーディエンス連携をテストします。
PARTNER_PULL_KEYとは何ですか?
PARTNER_PULL_KEYは、AppsFlyerが生成し、パートナーごとに発行するキーです。パートナーは、このキーをURL内のテンプレート変数{{PARTNER_PULL_KEY}}に指定して、セグメントファイルをダウンロードします。
PARTNER_PULL_KEY?は、いつ、どのように受け取れますか?
後の段階で/syncエンドポイントをテストする際に、AppsFlyerのAudiencesチームからPARTNER_PULL_KEYをお送りします。
オーディエンスファイルのサイズと制限
セグメントのサイズに制限はありますか?
データは、マルチパートアップロードでAWS S3にアップロードします。 AWSの制限については、以下をご覧ください:https://docs.aws.amazon.com/AmazonS3/latest/userguide/qfacts.html
ファイルのサイズはどの程度ですか?
大きなファイルにも対応しています。最終的には、AWS S3に保存されるCSVファイルになります。 AWSの制限については、以下をご覧ください:https://docs.aws.amazon.com/AmazonS3/latest/userguide/qfacts.html
デバイスIDの行数に上限はありますか?
行数の上限は、AWSのファイルサイズ上限である5Tによって決まります。
オーディエンスAPIで、Amazon AWSのパスやバケットを直接使用できますか?
はい。AppsFlyerがAWSバケットを用意し、ファイルの保存先となるAWS上のパスへの署名付きURLをお送りします。
ファイルは圧縮されていますか?
いいえ。圧縮されていません。
オーディエンスには、デフォルトの有効期間がありますか?
オーディエンスに有効期限はありません。作成して接続したオーディエンスは、毎日アップロードされます。ただし、オーディエンスを削除すると、それ以降はアップロードされなくなります。
ファイルは改行区切りですか、それともカンマ区切りですか?先頭行には、advertiser_idのようなヘッダーが入りますか?
改行区切りです。先頭行には、アップロードする識別子に応じて、advertiser_id_sha256などのヘッダーが入ります。
各/syncリクエストには、3つすべてのファイル(たとえば、ADID、メールアドレス、電話番号)のURLが含まれますか?
各/syncリクエストには、その連携で対応しているファイルのURLが含まれます。 ADID、メールアドレス、電話番号に対応している場合は、その3つのURLが含まれます。
手順3(/sync)の結果として、オーディエンスファイルをダウンロードするリンクを受け取ります。 APIで同期せずに、このようなURLテンプレートを生成して共有することはできますか?
現時点ではできません。 URLは、パートナー固有のPARTNER_PULL_KEYに基づいて生成されます。テスト段階でURLをお渡しするので、その際にテストできます。
URLの例:
https://audiencespull.appsflyer.com/{{PARTNER_PULL_KEY}}/12cjv4dq1zyxz3nh-HASHED.csv?X-Amz-A lgorithm=AWS1-HMAC-SHA256&X-Amz-Date=20190503T091923Z&X-Amz-SignedHeaders=host&X-Amz-Expires=3599&X-Amz-Credential=AKIB22QYTATEGB2HBFJR%2F20190603%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Signature=c8287819a21d2f7832154df609c55ab8c0afe53540d542918b2739a9234923a
container_idは、何に使用しますか?
指定されたコンテナIDに対し、API経由でオーディエンスのデバイスIDを送信します。オーディエンス連携の開発には、オーディエンスのコンテナを作成する必要があります。
APIの呼び出し、レスポンス、ステータスコード
どのタイミングでレスポンスを返す必要がありますか?
/validate:APIキーが、パートナーに提供されたキーと一致したときに返します。
/create:パートナー側でコンテナを作成したときに返します。
/sync:AppsFlyerからの呼び出しを受信し、ファイルにアクセスできることを確認したら、レスポンスを返してください。ファイルのダウンロードと処理は、レスポンスを返した後で行えます。リンクからダウンロードできる期間は2時間です。
失敗したリクエストは、どのように処理すればよいですか?
以下のステータスコードで処理します。
200:リクエストが成功した場合
401:APIキーが無効な場合(認証エラー)
その他のケースには、標準では対応していません。その他のケースでは、広告主に、一般的なエラーによるアップロード失敗として表示されます。問題が繰り返し発生する場合は、対応についてAppsFlyerにご相談ください。
AppsFlyerは、どのタイミングでパートナーのエンドポイントを呼び出しますか?
/validate:広告主がパートナーへの新しい接続を作成するたびに、1回呼び出します。
/create:コンテナごとに1回のみ呼び出します。新しいオーディエンスが初めてパートナーに接続されるたびに/createエンドポイントを呼び出し、コンテナIDを保存します。 /createを呼び出すたびに、異なるコンテナIDを返してください。 AppsFlyer側では、プラットフォームとオーディエンス名を分けて管理しています。つまり、プラットフォームごとに別のオーディエンスがあり、それぞれ/createを呼び出します。
/sync:アップロードを開始するたびに呼び出します。すべてのAppsFlyerオーディエンスを定期アップロードする日次処理のほか、広告主が管理画面またはAPI呼び出しで手動アップロードを開始したときにも呼び出します。
/syncリクエストは1回だけですか?後から再実行されることもありますか?
/syncリクエストは、アップロードを開始するたびに送信されます。すべてのAppsFlyerオーディエンスを定期アップロードする日次処理のほか、広告主が管理画面またはAPI呼び出しで手動アップロードを開始したときにも送信されます。
AppsFlyerは、どのくらいの頻度で/syncエンドポイントを呼び出しますか?
取引している広告主の数と、広告主がアップロードするオーディエンスの数によって異なります。オーディエンスを1件アップロードするたびに、/syncエンドポイントを呼び出します。すべてのAppsFlyerオーディエンスを定期アップロードする日次処理のほか、広告主が管理画面またはAPI呼び出しで手動アップロードを開始したときにも呼び出します。
トラフィックが多い場合、複数のAPIエンドポイント(複数のルートやドメインなど)を用意できますか?
現在のAPIで、比較的多くのトラフィックを処理できるようにする方法を推奨します。 APIの変更も可能ですが、連携の完了が数週間から数か月遅れる場合があります。
命名規則
/validateインターフェースのapi_keyフィールドは、文字列ですか、それとも文字列の配列ですか?
文字列です。
/createインターフェースのnameフィールド(オーディエンス名)は、英字のみに対応すればよいですか?それとも、他の文字セットにも対応する必要がありますか?名前の入力ルールは何ですか?
オーディエンス名は、AppsFlyerの管理画面に表示される名前と同じです。
- 2~100文字の一意の名前にする必要があります。
- すべての言語に対応しています。
- 特殊記号($、%、^、@など)にも対応しています。
/createインターフェースのcontainer_idは、数字のみにする必要がありますか?英字も使用できますか?
数字と英字の両方を使用できます。
SHA256とハッシュ化されたURL
AudiencesでSHA256によってハッシュ化されたGAID / IDFAを復元できないのはなぜですか?
SHA256は、元の値に復元することを前提とした仕組みではありません。パートナーとAppsFlyerがそれぞれデバイスIDをハッシュ化するための仕組みです。元のデバイスIDを保有していれば、ハッシュ化した値を照合できます。
ハッシュ化されていない識別子は提供されますか?
いいえ。ハッシュ化されていないデバイスIDを利用できるのは、広告主のみです。データのプライバシーを保護するため、セグメントファイル内の広告IDはSHA256アルゴリズムでハッシュ化します。広告IDは、リクエストペイロードのurl_adid_sha256キーで送信されます。
すべてのGAIDがハッシュ化されている場合、受信したGAIDをどのように識別できますか?
アプリから取得した元のGAIDと、AppsFlyerから取得したハッシュ化済みのGAIDがあれば、元のGAIDをSHA256でハッシュ化し、AppsFlyerから受信したハッシュ値と照合できます。