イベントの追跡
APIには、広告のライフサイクルイベントの追跡に必要なプロトコルメソッドの仕様に従って実装するためのデリゲートとして、AmazonAdViewDelegate
とAmazonAdInterstitial
プロトコルが含まれています。これらを使用すると、広告の現在の状態に基づいてアプリがアクションを実行できます。AmazonAdViewDelegate
によりバナー広告のプロトコルメソッドが、AmazonAdInterstitial
によりインタースティシャル広告のプロトコルメソッドが定義されます。
AmazonAdViewDelegate
モーダルビューのViewController
アプリのViewControllerは、このプロトコルメソッドを実装する必要があります。AmazonAdViewは、このメソッドを利用して、モーダルビュー(ユーザーが広告をタップしたときに表示されるアプリ内ブラウザビューなど)の表示/非表示にどのビューコントローラーが使用されているかを判断します。広告が正常に読み込まれるたびに呼び出されます。
- (UIViewController *)viewControllerForPresentingModalView
広告が読み込まれた
広告が正常に読み込まれるたびに、このコールバックが呼び出されます。このコールバックを利用して広告の表示回数に関する指標を記録し、初期統合に役立てることができます。
コールバック:
- (void)adViewDidLoad:(AmazonAdView *)view
広告が展開表示される
ユーザーがリッチメディア広告をクリックした後、実際に展開表示される前に、このコールバックが呼び出されます。このコールバックを使用すると、広告が展開表示される前に、アプリやオーディオの一時停止などの処理を実行できます。
コールバック:
- (void)adViewWillExpand:(AmazonAdView *)view
広告が折りたたまれた
展開表示されたリッチメディア広告の閉じるボタンをユーザーがクリックし、その広告が折りたたまれた直後に、このコールバックが呼び出されます。このコールバックを使用すると、アプリやオーディオの再生の再開などの処理を実行できます。
コールバック:
- (void)adViewDidCollapse:(AmazonAdView *)view
広告の読み込みが失敗した
広告の取得に失敗すると必ず、adviewDidFailToLoad
メソッドが呼び出されて、エラーコードとメッセージを含むAmazonAdError
オブジェクトが返されます。広告の読み込みが失敗する理由はいくつかあり、これらは、一時的なエラーと一時的ではないエラーに分類できます。一時的なエラーの場合は、再試行アルゴリズムに基づいて、または条件が変化した(ネットワークが使用可能になったなど)ときに、広告を読み込むための呼び出しを再度実行する必要があります。一時的でないエラーの場合は、エラーのログを記録し、アプリが広告を正常に取得できなかった理由を調べる必要があります。
コールバック:
- (void)adViewDidFailToLoad:(AmazonAdView *)view withError:(AmazonAdError *)error
AmazonAdInterstitialDelegate
インタースティシャル広告が読み込まれた
インタースティシャル広告が正常に読み込まれ、適切なタイミングで表示する準備が整った場合に呼び出されます。このコールバックを利用して広告の表示回数に関する指標を記録し、初期統合に役立てることができます。
コールバック:
- (void)interstitialDidLoad:(AmazonAdInterstitial *)interstitial
インタースティシャル広告の読み込みが失敗した
インタースティシャル広告の読み込みに失敗した場合に呼び出され、エラーコードとメッセージを含むAmazonAdError
オブジェクトが返されます。インタースティシャル広告の読み込みが失敗する理由はいくつかあり、これらは、一時的なエラーと一時的ではないエラーに分類できます。一時的なエラーの場合は、標準の再試行アルゴリズムに基づいて、または条件に変化があったとき(ネットワークが使用可能になったときなど)に、インタースティシャル広告を読み込むための呼び出しを再度実行する必要があります。一時的ではないエラーの場合は、エラーのログを記録し、アプリがインタースティシャル広告を正常に取得できなかった理由を調べる必要があります。
コールバック:
- (void)interstitialDidFailToLoad:(AmazonAdInterstitial *)interstitial withError:(AmazonAdError *)error
インタースティシャル広告を表示する
インタースティシャル広告が画面に表示される直前に呼び出されます。この時点で、すべてのアニメーションやタイマーなどのユーザーのインタラクションを想定するアクティビティを一時停止し、アプリの状態を保存する必要があります。ユーザーはインタースティシャル広告内で、ホームボタンを押すか、iTunesなどのほかのアプリへのリンクをタッチして、アプリから移動する場合があります。
コールバック:
- (void)interstitialWillPresent:(AmazonAdInterstitial *)interstitial
インタースティシャル広告が表示された
インタースティシャル広告が画面に表示されているときに呼び出されます。
コールバック:
- (void)interstitialDidPresent:(AmazonAdInterstitial *)interstitial
インタースティシャル広告を非表示にする
インタースティシャル広告が画面から非表示になる直前に呼び出されます。アプリとインタースティシャル広告の表示に使用されたビューコントローラーが復元されます。この時点で、interstitialWillPresent
で一時停止したすべてのフォアグラウンドアクティビティを再開する必要があります。
コールバック:
- (void)interstitialWillDismiss:(AmazonAdInterstitial *)interstitial
インタースティシャル広告が非表示になった
ユーザーがインタースティシャル広告を閉じて、広告が画面から消えた場合に呼び出されます。
コールバック:
- (void)interstitialDidDismiss:(AmazonAdInterstitial *)interstitial
エラー
広告の読み込みに失敗すると、-[AmazonAdViewDelegate adViewDidFailToLoad:withError:]
と-[AmazonAdInterstitalDelegate interstitialDidFailToLoad:withError:]
の両方から、エラーコードと説明的なレスポンスメッセージを含むAmazonAdError
オブジェクトが返されます。Amazonモバイル広告APIには、再試行ロジックは組み込まれていません。エラーが発生した場合は、返されるエラーコードに基づいて、広告を再度読み込むかどうかを判断する必要があります。返される可能性があるエラーコードとその意味を以下に示します。
- AmazonAdErrorNetworkConnection ネットワーク接続に問題があり、広告リクエストが失敗しました。接続が回復したら再試行してください。
- AmazonAdErrorNoFill 広告リクエストは正常に実行されましたが、使用可能な広告がありません。すぐに再試行しないでください。
- AmazonAdErrorInternalServer サーバー側にエラーがあり、広告リクエストが失敗しました。再試行してください。ただし、再試行回数を制限する必要があります。
- AmazonAdErrorRequest 広告リクエストパラメーターに問題があります。再試行しないでください。エラーメッセージを確認し、それに応じてアプリを更新してください。
具体的なエラーメッセージの説明については、以下の表を参照してください。
エラーコード | エラーメッセージの例 | 説明 |
---|---|---|
AmazonAdErrorNetworkConnection | インターネット接続がオフラインになっています。 | ネットワーク接続を使用できません。再試行してください。 |
AmazonAdErrorNoFill | SDKメッセージ: 広告が見つかりません。 | サーバーから広告が返されませんでした。 |
AmazonAdErrorInternalServer | 構成を読み込むことができませんでした。 | 広告を読み込む前に構成が読み込まれていません。再試行してください。 |
AmazonAdErrorInternalServer | サーバーメッセージ: DISABLED_APP | サーバーが広告リクエストを拒否しました。このアプリに初めて広告を統合したのが最近である場合は、登録情報が処理されるまでにもう少し時間がかかる可能性があります。 |
AmazonAdErrorInternalServer | サーバーメッセージ: INVALID_APPID | アプリキーが認識されていません。Amazonからアプリキーを取得していることと、そのキーを正しく設定していることを確認してください(クイックスタートガイドの手順3を参照)。 |
AmazonAdErrorRequest | サーバーメッセージ: 無効なインタースティシャルリクエストが送信されました。 | 広告の読み込みに使用された "AmazonAdOptions" の値が正しく設定されていることを確認し、再試行してください。 |