iOS向けクイックスタートガイド
このクイックスタートガイドでは、Amazonモバイル広告をアプリに組み込む手順を説明します。Amazonモバイル広告APIは、現時点では、静的画像バナー、ビデオを含むエクスパンド型リッチメディアバナー、インタースティシャル広告をサポートしています。
- Amazonモバイル広告APIを使用する前に
- Amazonモバイル広告APIとiOS 9 App Transport Security
- iOSアプリで広告を有効化
- 1. プロジェクトへのAPIの組み込み
- 2. アプリキーを設定
- 3. Amazonの広告をアプリに追加
- オプション - 広告リクエストのタイムアウト値を設定
- 次のステップ
Amazonモバイル広告APIを使用する前に
iOS向けAmazonモバイル広告APIでは、iOS 8.0以降が必要です。また、XCode 7.1以降をインストールしていることと、iOSの開発方法の知識があることを前提としています。
Amazonモバイル広告APIとiOS 9 App Transport Security
iOS10以降でメディアライブラリ(連絡先、カレンダー、写真、場所のいずれか)にアクセスするすべてのアプリでは、Appleが導入した追加のCocoaキーを使用する必要があります。この変更により、ユーザーは必ず、メディアライブラリにアクセスするパーミッションをアプリに付与しなければならなくなっています。
iOS SDKには、特定のMRAID 2.0機能を使用するためにユーザーのカレンダーに対するパーミッションが必要です。ユーザーのカレンダーにイベントの予定を入れようとする広告には、カレンダーへのアクセスが必要な場合があります。たとえば、間もなく開催されるイベントや公開される映画の広告は、カレンダーを使用する必要があります。Amazonモバイル広告iOS SDKと統合された広告では、ユーザーのカレンダーデータにアクセスするために、Info.plistファイルにNSCalendarsUsageDescriptionキーが含まれている必要があります。この目的文字列キーが含まれていない場合は、アプリがデータにアクセスしようとすると終了します。
次の説明をアプリで使用することをお勧めします。
%%APP%%がカレンダーにイベントを追加します。
ここで、%%APP%%
はアプリ開発者の名前です。
アカウント登録
Amazonアプリとゲーム開発者ポータルのアカウントにログインします。このアカウントには、Amazon開発者サービスのページからアクセスできます。アカウントがない場合は、アカウントを作成するように求められます。
支払い情報と税に関する情報を提出
支払い情報のページで支払い情報を、納税者確認インタビューのページで納税情報を提出します(Amazonアプリとゲーム開発者ポータルで既に情報を提出している場合は、この手順を省略できます)。この情報は、広告を受け取るために必須です。
米国外でAmazonモバイル広告ネットワークを使用してサービスを実行している場合でも、サービス収入の納税者確認インタビューを完了する必要があります。これは、Amazonが広告主の納税義務を正確に報告できるようにするためです。
サービス収入の納税者確認インタビューは、案内に従って必要な納税者情報を入力できるセルフサービスインタビューです。納税者確認インタビューの詳細情報については、税務情報に関するインタビューご利用ガイドを参照してください。詳細については、税務申告を参照してください。
アプリキーを取得
ログインしたら、[マイアプリ] タブをクリックして既存のアプリを選択するか、[モバイル広告] タブをクリックして [新しいiOSアプリを登録] ボタンをクリックします。新しいアプリを作成するときは、[アプリタイトル] にタイトルを記入し、子ども向けの質問に回答して、[識別子を作成] をクリックします。13歳未満の子ども向けアプリには、Amazonモバイル広告ネットワークに参加する資格がないことに注意してください。詳細については、子ども向けアプリ(COPPA)に関するポリシーを参照してください。
アプリが13才歳未満の子ども向けではないと回答した場合は、次の画面に一意のアプリキー値が表示されます。これは、アプリを識別するために使用される、全世界で一意の32文字の英数字文字列です。同じアプリキーを複数のプラットフォームで使用することができますが、アプリごとに一意のアプリキーが必要です。たとえば、IMDbアプリは、AndroidスマートフォンとFireタブレットで同じアプリキーを使用しますが、IMDb Triviaアプリは、異なるアプリキーを使用します。
アプリキーは、setAppKey
の呼び出しで使用されます(以降の手順2で説明)。また、開発者レポートでは、データがアプリキー別に集計されます。アプリキーを適切に使用することで、広告料金の追跡、レポート、支払いが正確に行われます。
注: あるアプリに対して発行されたアプリキーを、別のアプリで広告を掲載するために使用した場合は、別のアプリに掲載された広告のインプレッション、クリック、その他のユーザー操作については支払いが行われません。
iOSアプリで広告を有効化
このセクションでは、既存のiOSアプリのXcodeプロジェクトに広告を追加する手順について説明します。
1.プロジェクトへのAPIの組み込み
プロジェクトにAmazonAd iOSフレームワークを追加する
XCodeで次の手順を実行します。
- XCodeでアプリを開きます。
- プロジェクトファイルをクリックして、[Build Phases] > [Link Binary With Libraries] の順に移動します。
- AmazonAd.frameworkにあるAmazonAdフレームワークを追加します。
- 次のフレームワークがまだリンクされていない場合は、追加します。
- AdSupport.framework
- CoreLocation.framework
- SystemConfiguration.framework
- CoreTelephony.framework
- MediaPlayer.framework
- EventKit.framework
- EventKitUI.framework
- StoreKit.framework
- QuartzCore.framework
- JavaScriptCore.framework
- SafariServices.framework
2.アプリキーを設定
広告を受け取るには、アプリキーを設定する必要があります。アプリキーを設定することで、Amazonはインプレッション数やクリック数を追跡し、アカウントに関連付けることができるようになります。Amazonアプリストアから取得したアプリキーを使用して、アプリの起動時にアプリからAmazonAdRegistrationのsetAppKey()メソッドを呼び出します。この呼び出しは、AppDelegateのdidFinishLaunchingWithOptions
メソッドに追加できます。
次に、didFinishLaunchingWithOptions
にsetAppKey
を追加した例を示します。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// アプリ起動後のカスタマイズのオーバーライドポイント。
[[AmazonAdRegistration sharedRegistration] setAppKey:@"0123456789ABCDEF0123456789ABCDEF"]];
}
3.Amazonの広告をアプリに追加
Amazonモバイル広告APIでは、バナー広告とインタースティシャル広告の両方がサポートされています。バナー広告(静的クリックスルー広告やエクスパンド型リッチメディア広告など)は、AmazonAdView
を使用して作成します。一方、全画面広告であるインタースティシャル広告は、AmazonInterstitialAd
オブジェクトを使用して作成します。
Objective-Cのコードでバナー広告を追加する
バナー広告を取得して表示するには、AmazonAdViewのインスタンスを使用します。広告を読み込むには、AmazonAdView loadAd
メソッドを呼び出します。このメソッドは、バックグラウンドスレッドを使用して、Amazonモバイル広告ネットワークに広告をリクエストします。1つのAmazonAdView
で同時に読み込みまたは表示が可能なのは、1つの広告のみです。特定の広告が読み込み中であるかどうかを確認するには、AmazonAdView isLoading
メソッドを呼び出します。広告をリクエストするときに、いくつかのターゲットパラメーターをオプションで設定することもできます。これらのパラメーターについては、広告ターゲットオプションのページで説明しています。ViewControllerのviewDidLoadメソッドに簡単なloadAd呼び出しを追加した例を以下に示します。
(void)viewDidLoad {
[super viewDidLoad];
// 広告を読み込みます
// サイズ320x50のAmazonAdViewインスタンスを作成します。
self.amazonAdView = [AmazonAdView amazonAdViewWithAdSize:AmazonAdSize_320x50];
// adOptionsを設定します。
AmazonAdOptions *options = [AmazonAdOptions options];
// isTestRequestを有効にしてテスト広告を読み込みます
options.isTestRequest = YES;
// ViewControllerをデリゲートに登録してコールバックを受信します。
amazonAdView.delegate = self;
// loadAdを呼び出します
[amazonAdView loadAd:options];
// viewControllerのビューにAmazonAdViewを追加します。
[self.view addSubView:amazonAdView];
注: 上記の実装では、広告の手動サイズ設定を使用します。Amazonモバイル広告iOS SDKで、広告ビューのサイズとデバイスの画面サイズに応じて自動的に広告のサイズを選択するには、広告の自動サイズ設定セクションに記載されているガイドラインに従う必要があります。
AmazonAdViewDelegate
プロトコルをViewController内に実装する方法を以下に示します。ユーザーが広告をクリックしたときにブラウザビューなどのモーダルビューを表示/非表示にするためにViewControllerが使用されます。このViewControllerをAmazonAdViewが認識できるように、viewControllerForPresentingModelView
プロトコルメソッドを実装する必要があります。また、オプションのadViewDidLoadコールバックメソッド内で、必要に応じてAmazonAdView
を親ビューに追加することもできます。
#pragma mark AmazonAdViewDelegate
// @required
- (UIViewController *)viewControllerForPresentingModalView {
return self;
}
// @optional
- (void)adViewWillExpand:(AmazonAdView *)view {
NSLog(@"広告のモーダルビューを表示します。このとき、ほかのアクティビティを一時停止します。");
}
// @optional
- (void)adViewDidCollapse:(AmazonAdView *)view {
NSLog(@"モーダルビューの表示が終了しました。このとき、一時停止したアクティビティを再開します。");
}
// @optional
- (void)adViewDidLoad:(AmazonAdView *)view {
NSLog(@"広告が正常に読み込まれました。");
}
// @optional
- (void)adViewDidFailToLoad:(AmazonAdView *)view withError:(AmazonAdError *)error {
NSLog(@"広告を読み込めませんでした。エラーコード%d:%@", error.errorCode, error.errorDescription);
}
Objective-Cのコードでインタースティシャル広告を追加する
インタースティシャル広告を取得と表示するには、AmazonAdInterstitialのインスタンスを使用します。インタースティシャル広告を読み込むには、AmazonAdInterstitial load
メソッドを呼び出します。このメソッドは、バックグラウンドスレッドを使用して、Amazonモバイル広告ネットワークにインタースティシャル広告をリクエストします。1つのAmazonAdInterstitial
で同時に読み込むことができるのは、1つのインタースティシャル広告のみです。インタースティシャル広告を読み込む際に、複数のターゲットパラメーターをオプションで設定することもできます。これらのパラメーターについては、広告ターゲットオプションのページで説明します。読み込みが終了すると、interstitialDidLoad
コールバックが実行され、インタースティシャル広告を表示できるようになります。AmazonAdInterstitial
には、インタースティシャル広告の準備ができているかどうかを確認する場合に便利なisReady
プロパティも用意されています。指定したビューコントローラーからインタースティシャル広告を表示するには、AmazonAdInterstitial presentFromViewController
を呼び出します。このメソッドによって、さらにinterstitialWillPresent:
とinterstitialDidPresent:
コールバックが実行されます。AmazonAdInterstitialのすべてのインスタンスで、一度に全画面表示できるのは、1つのインタースティシャル広告のみです。ユーザーがインタースティシャル広告を閉じるとすぐに、interstitialWillDismiss:
とinterstitialDidDismiss:
コールバックが実行されます。以下は、コールバックを実装してインタースティシャル広告を読み込み、表示する際のInterstitialAdsUniversalSampleコードの抜粋です。
(void)viewDidLoad
{
[super viewDidLoad];
// インタースティシャル広告を作成します
self.interstitial = [AmazonAdInterstitial amazonAdInterstitial];
// ViewControllerをデリゲートに登録してコールバックを受信します。
self.interstitial.delegate = self;
}
- (IBAction)loadAmazonInterstitial:(UIButton *)sender
{
self.loadStatusLabel.text = @"インタースティシャル広告を読み込み中...";
// adOptionsを設定します。
AmazonAdOptions *options = [AmazonAdOptions options];
// isTestRequestを有効にしてテストインタースティシャル広告を読み込みます
options.isTestRequest = YES;
// インタースティシャル広告を読み込みます
[self.interstitial load:options];
}
- (IBAction)showAmazonInterstitial:(UIButton *)sender
{
// インタースティシャル広告を画面に表示します
[self.interstitial presentFromViewController:self];
}
#pragma mark - AmazonAdInterstitialDelegate
- (void)interstitialDidLoad:(AmazonAdInterstitial *)interstitial
{
NSLog(@"インタースティシャル広告が読み込まれました。");
self.loadStatusLabel.text = @"インタースティシャル広告が読み込まれました。";
}
- (void)interstitialDidFailToLoad:(AmazonAdInterstitial *)interstitial withError:(AmazonAdError *)error
{
NSLog(@"インタースティシャル広告を読み込めませんでした。");
self.loadStatusLabel.text = @"インタースティシャル広告を読み込めませんでした。";
}
- (void)interstitialWillPresent:(AmazonAdInterstitial *)interstitial
{
NSLog(@"インタースティシャル広告が表示されます。");
}
- (void)interstitialDidPresent:(AmazonAdInterstitial *)interstitial
{
NSLog(@"インタースティシャル広告が表示されました。");
}
- (void)interstitialWillDismiss:(AmazonAdInterstitial *)interstitial
{
NSLog(@"インタースティシャル広告の表示が終了します。");
}
- (void)interstitialDidDismiss:(AmazonAdInterstitial *)interstitial
{
NSLog(@"インタースティシャル広告の表示が終了しました。");
self.loadStatusLabel.text = @"インタースティシャル広告が読み込まれませんでした。";
}
Objective-Cのコードでモードレスインタースティシャル広告を追加する
モードレスインタースティシャル広告を取得して表示するには、AmazonAdModelessInterstitial
のインスタンスを使用します。モードレスインタースティシャル広告を読み込むには、AmazonAdModelessInterstitial load:
メソッドを呼び出します。このメソッドは、バックグラウンドスレッドを使用して、Amazonモバイル広告ネットワークにモードレスインタースティシャル広告をリクエストします。1つのAmazonAdModelessInterstitial
インスタンスで同時に読み込むことができるモードレスインタースティシャル広告は、1つだけです。モードレスインタースティシャル広告を読み込むときに、複数のターゲットパラメーターをオプションで設定することもできます。これらのパラメーターについては、広告ターゲットオプションのページで説明しています。読み込みが終了すると、modelessInterstitialDidLoad
コールバックが実行され、広告を表示できるようになります。AmazonAdModelessInterstitial
には、モードレスインタースティシャル広告の準備ができているかどうかを確認する場合に便利なisReady
プロパティも用意されています。モードレスインタースティシャル広告が画面に表示されたときには、インプレッション数をカウントするためにAmazonAdModelessInterstitial onPresented
を呼び出す必要があります。また、モードレスインタースティシャル広告が画面から消えたときには、AmazonAdModelessInterstitial onHidden
を呼び出してSDKに通知する必要があります。以下は、コールバックを実装してモードレスインタースティシャル広告を読み込み、表示し、表示を終了する際のSwipeableModelessInterstitialAd
コードの抜粋です。
(void)loadModelessInterstitial
{
// インタースティシャル広告のページビューを作成します
if (!self.interstitialPageView) {
self.interstitialPageView = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, self.scrollView.bounds.size.width, self.scrollView.bounds.size.height)];
}
// モードレスインタースティシャル広告オブジェクトを作成します
if (!self.modelessInterstitial) {
self.modelessInterstitial = [AmazonAdModelessInterstitial modelessInterstitialWithContainerView:self.interstitialPageView];
self.modelessInterstitial.delegate = self;
}
// モードレスインタースティシャル広告を読み込みます
AmazonAdOptions *options = [AmazonAdOptions options];
options.isTestRequest = YES;
[self.modelessInterstitial load:options];
}
- (void)updateScrollView
{
...
// モードレスインタースティシャル広告を画面外に移動する場合は、onHiddenを呼び出します
if (self.pageIndex == self.interstitialIndex) {
[self.modelessInterstitial onHidden];
}
// モードレスインタースティシャル広告を画面内に移動する場合は、onPresentedを呼び出します
if (tmpIndex == self.interstitialIndex) {
if (![self.modelessInterstitial onPresented]) {
NSLog(@"モードレスインタースティシャル広告を表示できませんでした");
}
}
...
}
#pragma mark - AmazonAdModelessInterstitialDelegate
- (UIViewController *)viewControllerForPresentingModalView
{
return self;
}
- (void)modelessInterstitialDidLoad:(AmazonAdModelessInterstitial *)interstitial
{
// モードレスインタースティシャル広告を読み込んだ後、現在画面に表示されているページとは別の数ページに挿入します
if (self.interstitialIndex == -1) {
NSInteger index = self.pageIndex + 2;
if (index > self.pages.count - 1) {
index = index - (self.pages.count - 1);
}
[self insertInterstitialAtIndex:index];
}
}
- (void)modelessInterstitialDidFailToLoad:(AmazonAdModelessInterstitial *)interstitial withError:(AmazonAdError *)error
{
NSLog(@"モードレスインタースティシャル広告を読み込めませんでした:%@", error.errorDescription);
}
- (void)modelessInterstitialDidExpire:(AmazonAdModelessInterstitial *)interstitial
{
NSLog(@"モードレスインタースティシャル広告の有効期限が切れました");
}
オプション - 広告リクエストのタイムアウト値を設定
広告リクエスト呼び出しのデフォルトのタイムアウトは10秒です。タイムアウトのしきい値を超えると、adDidFailToLoad
コールバックが呼び出されます。デフォルトのタイムアウト値は、AmazonAdOptions timeout
プロパティを使用して変更できます。このメソッドには、秒単位の時間を引数として指定できます。
例:
AmazonAdOptions *options = [AmazonAdOptions options];
options.timeout = 20; // 20秒
次のステップ
iOSサンプルアプリにある1つ以上のサンプルアプリをコンパイルして実行します。