Audience Networkの実装をテストする

モバイルウェブサイトやアプリにFacebook Audience Networkを統合するときは、本番環境に展開する前に、実際のデバイスで実際の広告を使用して実装をテストする必要があります。統合する際は、最新のバグ修正と改善点が含まれた最新のAudience Network SDKを使用するようにしてください。次のセクションでは、アプリやウェブサイトのテスト方法を説明します。

iOSシミュレーターやAndroidシミュレーターで実行するときは、テストモードを有効にしてデバイスハッシュ化IDを指定すれば、テスト広告を表示できます。手始めにこの方法を使用して実装のテストを行ってください。また、次の手順を使用して、実際のデバイスで実際の広告を使用したテストを実行することもおすすめします。

1.実際の広告を使用してテストする

2.実際の広告リクエストのエラーコード

3.テスト広告を使用してテストする

Audience Networkリクエストデバッガーを使用したテストリクエスト

アプリの配置を実装したら、Audience Network Requests Debuggerツールを使用して、アプリからのリクエストがFacebookに届いていることを確認できます。

開発者ダッシュボードの[Audience Network]セクション https://developers.facebook.com/apps/<your_app_id>/audience-network/で、

左側のパネルの[Audience Network]の下にある[アプリ]に移動し、[Audience Network Requests Debugger]が表示されるまで下にスクロールします。[Start]ボタンをクリックすると、ツールがアプリからのリクエストのモニタリングを開始します。

iOSやAndroidの実際のテストデバイスで、アプリを開いてAudience Network広告配置をトリガーすると、広告リクエストがツールに表示されます。リクエストが正しい配置ID、バンドルパッケージ名などで送信されていることを確認します。

このリクエストを行うには物理的デバイスが必要であり、iOSシミュレーターやAndroidエミュレーターでは動作しません。

ツールによるモニタリングを受けるには、そのテストデバイスでFacebookアプリにログインしている必要があります。

ツールに広告リクエストが表示されない場合は、Facebookが期待どおりにリクエストを受け取っていないことを意味します。デバッグするには、以下の項目を確認してください。

  1. シミュレーター/エミュレーターではなく、物理的デバイスを使用している
  2. テストデバイスにFacebookアプリがインストールされている
  3. テストデバイスで、Facebook Audience Networkアプリの管理者、開発者、テスターであるユーザーとしてFacebookにログインしている
  4. メディエーションを使用する場合は、メディエーション層がリクエストをFacebook Audience Networkに送信していることを確認してください

実際の広告を使用してテストする

実際の広告を使用したテストは2段階の手順で行います。最初にテスターをアプリ設定に追加し、アプリの承認前でも実際の広告が表示されるように設定します。次に、それらのテスターがFacebookにログインして、アプリやモバイルウェブサイトを操作します。以下にこれらの操作を詳細に説明します。

アプリにテスターを追加する

テストを実施する人を何らかの役割でFacebookに追加すれば、アプリやモバイルウェブサイトを実際のデバイスで実際の広告を使用してテストできます。アプリにテスターを追加する場合は、次の方法をおすすめします。

  1. アプリのダッシュボードに移動し、左側にある[役割]タブをクリックします。
  2. [テスター]セクションの[テスターを追加]ボタンをクリックします。管理者または開発者の役割を持つ人をテスターに設定できますが、テスターの役割を設定するユーザーは、アプリやウェブサイトのテストを行う必要があるが、Facebookでアプリやウェブサイトの設定を表示できないユーザーとすることをおすすめします。
  3. テスターとして追加する名前、Facebook ID、ユーザーネームを入力し、[送信]をクリックします。ここには複数の人を入力できます。
  4. 追加した人がテスターとして表示されます。

メディエーション層を使用する場合は、メディエーション層からAudience Networkにリクエストが送信されることを確認してください。メディエーション層でのテストを有効にしている場合は、Facebookのサーバーにはリクエストが送信されません。

モバイルアプリをテストする

  1. 希望の配信方法を使用して、テスターのデバイスにアプリを配信します。
  2. 追加した各テスターは自分のデバイスにFacebookアプリをインストールし、テスターの役割に追加したFacebookユーザーIDを使用してアプリにログインする必要があります。アプリがレビューステータスの場合でも広告を返すことができるように、Facebookがユーザーをテスターとして認識できるよう、この設定が必要です。
  3. これで、テスターがアプリを起動し、テストする配置に切り替えるために必要な手順を実行できるようになりました。実際の広告が表示されます。

広告の配置のテストの際には、Facebookがリクエストの20%に対して意図的に広告を表示しません。それにより、アプリやモバイルサイトが広告が掲載されないケースをどのように処理するのかをテストできます。

実際の広告リクエストのエラーコード

Facebook Audience Networkの実装のテスト時には、リクエストを行ったときにいずれかのエラーコードが表示されることがあります。エラーコードには次のようなものがあります。

1000 - Network Error

サーバーレスポンス SDKドキュメント

Code=1000 “Network Error"

  • Error 1000 - Network Error。Audience Network SDKがfacebook.com (http://facebook.com/)に接続できませんでした
  • ネットワークが接続できるまで、アプリケーションから別のリクエストを行ってください。接続が再確立される、またはタイムアウトとして認識されるまで、インクリメンタルリクエストを実行することをおすすめします。

1001 - No Fill

テスト時によく見られるエラーであり、"No Fill"レスポンスに関連するものです。ユーザーがモバイルアプリのテスト時にFacebookアプリにログインしていない、またはモバイルウェブサイトのテスト時にFacebookモバイルウェブサイトにログインしていないことが、最もよくある原因です。

サーバーレスポンス SDKドキュメント

Code=1001 “No Fill”

  • Error 1001 - No Fill。次のいずれかの原因が考えられます。
  • ユーザーがモバイルデバイスでネイティブFacebookアプリにログインしていない
  • [追跡型広告を制限]がオンになっている(iOS)
  • [インタレストベース広告を表示しない]がオンになっている(Android)
  • 現在のユーザーに広告インベントリが設定されていない
  • テストを行うデバイスにはネイティブFacebookアプリケーションをインストールする必要があります。
  • 30秒後に、アプリケーションから別のリクエストを行ってください。

1002 - Ad Load Too Frequently

サーバーレスポンス SDKドキュメント

Code=1002 “Load Too Frequently”

  • 広告リクエストは次を組み合わせたものに基づいて行われます。
  • デバイスID
  • 配置ID
  • 表示フォーマット(バナー、インタースティシャル、ネイティブ)
  • 30分後に、アプリケーションから別のリクエストを行ってください。[再読込頻度]や[リクエスト頻度]も調整してみてください。

1203 - Not An App Admin, Developer or Tester

サーバーレスポンス SDKドキュメント

Code=1203 “Not An App Admin, Developer or Tester”

  • バンドルからの初回のリクエストは、アプリの管理者、開発者、テスターから行う必要があります。

2000 - Server Error

サーバーレスポンス SDKドキュメント

Code=2000 “Server Error"

  • Error 2000 - Server Error。考えられる原因:
  • 配置IDが無効。配置とタイプは一意のIDを持ちます
  • サポートされていないSDKまたは古いバージョンのSDKを使用している。最新バージョンをダウンロードするか、Cocoa Podsを使用している場合はPodをアップデートしてください
  • loadAdメソッドの呼び出し/使用方法が不適切。loadAdおよび関連するメソッド/コールバックにはブレークポイントを設定することをおすすめします。
  • 30秒後に、アプリケーションから別のリクエストを行ってください。

2001 - Internal Error

サーバーレスポンス SDKドキュメント

Code=2001 “Internal Error”

  • Error 2001 - Internal Error。 Audience Network SDKがfacebook.comからのレスポンスを処理できませんでした。
  • 30秒後に、アプリケーションから別のリクエストを行ってください。
  • この問題が続けて発生する場合は、バグレポートをFacebookにお送りください。

テスト広告を使用してテストする

アプリをテストするユーザーがFacebookのアプリダッシュボードの役割に追加されていることを確認してください。実際のデバイスで実際の広告を表示できることから、テストにはこの方法を使用することをおすすめします。おすすめのテスト方法に関する詳細については、「実際の広告を使用してテストする」をご覧ください。

ただし、前のセクションで述べたように、アプリのUIビューで実際の広告のデザインをテストできない場合もあります。さらに、アプリから受信する広告が画像広告、動画広告、カルーセル広告のどれになるかは保証できません。実際の広告をリクエストしても、広告のコンテンツとフォーマットが必ず返されるかどうかは保証されません。縦向き動画のコンテンツを含む広告を使用して、アプリのUIビューで正しく表示されることをテストする場合はどうすればよいでしょうか。

テスト広告をリクエストするには、任意のFacebook広告オブジェクトを初期化する際に、次のテスト広告タイプの文字列を使用して配置IDを「#」と結び付けます。テスト広告のリクエストで使用する配置IDテンプレートはTEST_AD_TYPE#YOUR_PLACEMENT_IDです。

テスト広告タイプのテーブル

テスト広告タイプ 説明 サポートされている広告のフォーマット

IMG_16_9_APP_INSTALL

16x9の画像広告。アプリインストールのCTAオプション付き。

バナー、インタースティシャル、ネイティブ

IMG_16_9_LINK

16x9の画像広告。リンクのCTAオプション付き。

バナー、インタースティシャル、ネイティブ

VID_HD_16_9_46S_APP_INSTALL

16x9のHD動画を使用した46秒の広告。アプリインストールのCTAオプション付き。

インタースティシャル、ネイティブ

VID_HD_16_9_46S_LINK

16x9のHD動画を使用した46秒の広告。リンクのCTAオプション付き。

インタースティシャル、ネイティブ

VID_HD_16_9_15S_APP_INSTALL

16x9のHD動画を使用した15秒の広告。アプリインストールのCTAオプション付き。

インタースティシャル、ネイティブ

VID_HD_16_9_15S_LINK

16x9のHD動画を使用した15秒の広告。リンクのCTAオプション付き。

インタースティシャル、ネイティブ

VID_HD_9_16_39S_APP_INSTALL

9x16のHD動画を使用した39秒の広告。アプリインストールのCTAオプション付き。

インタースティシャル、ネイティブ

VID_HD_9_16_39S_LINK

9x16のHD動画を使用した39秒の広告。リンクのCTAオプション付き。

インタースティシャル、ネイティブ

CAROUSEL_IMG_SQUARE_APP_INSTALL

正方形の画像を使ったカルーセル広告。アプリインストールのCTAオプション付き。

インタースティシャル、ネイティブ

CAROUSEL_IMG_SQUARE_LINK

正方形の画像を使ったカルーセル広告。リンクのCTAオプション付き。

インタースティシャル、ネイティブ

iOSデバイスのテスト広告をコードでリクエストする例

Testflightを使用してアプリを配信、テストする場合、テストビルドには実際の広告は表示されません。その場合は、テストを以下のように設定して、Audience Networkから広告を取得する必要があります。 Testflightで配信されるアプリが広告主ID (IDFA)をリクエストすると、取得するIDFAは毎回変わります。 通常、IDFAは利用者が手動でリセットしない限り機器ごとに固定されますが、 TestflightビルドがオペレーティングシステムからのIDFAをリクエストする際に取得するのは実際のIDFAではなく、アプリからリクエストがある度に変化するダミーのIDFAになります。

この問題を解決するには、テストモードをオンにして、テスト広告を表示するようにします。

たとえば、アスペクト比9:16の動画のテスト広告と、iOSアプリへのCTAボタンのアプリインストールをリクエストするには、次のコード行を追加してFBNativeAdオブジェクトを初期化する必要があります。

[FBNativeAd *nativeAd = [[FBNativeAd alloc] initWithPlacementID:@"VID_HD_9_16_39S_APP_INSTALL#YOUR_PLACEMENT_ID"];

上述のコードを実行して、Audience Network SDKのサンプルフォルダからNativeAdSampleプロジェクト内のテスト広告をリクエストできます。

ランダムなコンテンツフォーマットでテスト広告をリクエストする必要がある場合は、広告リクエストを読み込む前に次のコード行を追加できます。

#ifdef DEBUG
[FBAdSettings setLogLevel:FBAdLogLevelLog];
[FBAdSettings addTestDevice:@"HASHED_ID"];
#endif

次のログメッセージが表示されます。

[FBAudienceNetworkLog/FBAdSettings:94] 
When testing your app with Facebook ad units,  
you must specify the device hashed ID to ensure the delivery of test ads, 
add the following code before loading an ad: `[FBAdSettings addTestDevice:@"HASHED_ID"]`
Test mode device hash: bd675f960298a92003630d76fa612b1706b745ab

HASHED_IDを上述のログに出力されたテストモードデバイスハッシュに置き換えます。

このテストコードを使うとテスト広告しか表示されないため、アプリをこの状態で公開しないようにしてください。代わりに、DEBUGまたはTESTINGといったプリプロセッサマクロのあとに#ifdefを使用して、テストビルドとリリースビルドを区別するようにしてください。

テストを終えたら、次のコード行を使用してテストデバイスの設定をクリアします。

[FBAdSettings clearTestDevice:[FBAdSettings testDeviceHash]]; 

Androidデバイスのテスト広告をコードでリクエストする例

アスペクト比9:16の動画のテスト広告と、AndroidアプリへのCTAボタンのアプリインストールをリクエストするには、次のコード行を追加してNativeAdオブジェクトを初期化する必要があります。

nativeAd = new NativeAd(this, "VID_HD_9_16_39S_APP_INSTALL#YOUR_PLACEMENT_ID");

ランダムなコンテンツフォーマットでテスト広告をリクエストする必要がある場合、実際のAndroidデバイスをテストするときに、Logcatに次のようなメッセージが出力されます。

ログ: テストモードデバイスハッシュ: HASHED_ID Log:デバイスのハッシュ化IDを指定する必要があるFacebookの広告ユニットを使用してアプリをテストするときは、 広告を読み込む前に次のコードを追加します。 AdSettings.addTestDevice("HASHED ID");

広告を読み込む前に次のコード行を追加することで、デバイスにテスト広告を掲載できます。

AdSettings.addTestDevice("HASHED ID");

複数のテストデバイスを追加する場合は、広告の読み込みの前に追加する文字列のリストを作成します。

List<String> testDevices = new ArrayList<>();
testDevices.add("HASHED_ID_1");
testDevices.add("HASHED_ID_2");
AdSettings.addTestDevices(testDevices);

テストを終えたら、次のコード行を使用してテストデバイスの設定をクリアします。

AdSettings.clearTestDevices();

メディエーションダッシュボードでテスト広告をリクエストする例

コードからテスト広告をリクエストする以外に、アプリでメディエーションを使用する場合は、メディエーションダッシュボードのテスト広告タイプで配置ID値を設定できます。 たとえば、アプリでMoPubを使用する場合、Facebookネットワークを編集して、ネイティブ広告の配置ID値をVID_HD_9_16_39S_APP_INSTALL#YOUR_PLACEMENT_IDに設定できます。 アプリは9:16アスペクト比の動画のテスト広告とCTAボタンのアプリインストールを受け取ります。