App Testerユーザーガイド
App Testerは、アプリをAmazonアプリストアに公開する前に、Amazonアプリ内課金(IAP)の機能をテストすることができるツールです。App Testerツールをダウンロードしてインストールし、設定を完了したら、IAP機能のテストを開始できます。
notifyFulfillment()
呼び出しによってFULFILLEDまたはUNAVAILABLEとしてマークされるまで、追加のアプリ内購入を行うことはできなくなります。このロジックにより、IAP SDKを介した購入処理が正しく実装されているかどうかを確認できます。このロジックはApp Testerにのみ適用され、本番環境での動作には適用されません。まだApp Testerをアプリ用にセットアップしていない場合は、App Testerをインストールして構成する方法を参照してください。
- App Testerの使用
- IAP APIの選択
- ユーザーの管理
- APIレスポンスの構成方法
- 通知を有効または無効にする方法
- トランザクションの管理
- JSONファイル内のIAPアイテムの確認
- ユーザーエクスペリエンスのシミュレーション
- ログの表示方法
- App TesterによるDRMのテスト
App Testerの使用
Amazon App Testerは、Amazonアプリストアでの認証をシミュレートするためのツールです(以前はIAPでのみ使用されていました)。App Testerはこちらからダウンロードできます。
Amazon App Testerを使用してアプリのライセンス検証をテストするには、次の手順を実行します。
-
ADBを使用して、コンピューターをFire TVまたはFireタブレットに接続します。詳細については、次のどちらかを参照してください。
-
次のコマンドを使用して、アプリをサンドボックスモードに設定します。
adb shell setprop debug.amazon.sandboxmode debug
サンドボックスモードでは、通常であればAmazonアプリストアクライアントに向かう呼び出しを、強制的にAmazon App Testerアプリへとルーティングします。このモードは、ローカルでのテストにのみ使用します。
- Amazon App Testerの既存バージョンをアンインストールしてから、最新バージョンをダウンロードし、Fireデバイスで開きます。
-
Amazon App Testerを開いて、[Appstore SDK APIs] > [DRM API Response Settings] > [GetLicense API] の順に選択します。設定可能なライセンスオプションがいくつか表示されます。
App Testerの [DRM API Response Settings] -
DRMを含むFire TVアプリまたはFireタブレットアプリを実行します。Amazon App Testerでは、選択した内容に基づいて、ユーザーのライセンスステータスに関するレスポンスがシミュレートされます。
サンドボックスモードを終了するには、以下を実行します。
adb shell setprop debug.amazon.sandboxmode none
IAP APIの選択
App Testerアプリを初めて起動すると、ランディングページでIAP APIを選択するように求められます。

[In-App Purchasing API] をタップします。

IAP APIのナビゲーションオプションが表示されます。
- User Account Settings: アプリのテストユーザーアカウントを構成します。
- API Response Settings: テストケースの条件やレスポンスを構成します。
- Notification Settings: 通知ドロワーに追加される通知を有効または無効にします。
- Manage Transactions: アプリのアクティブなIAPトランザクションを管理します。
- IAP Items in JSON File: JSONファイルからApp Testerに追加されたデータを、人間が簡単に判読できる形式で表示します。
ユーザーの管理
ユーザーのログインとログアウト、ユーザーの変更、ユーザーに関連付けられているマーケットプレイスの変更を行うことができます。これらのオプションを設定すると、ユーザーやマーケットプレイスをさまざまに変えて、条件の異なるシナリオを簡単にテストできます。
ユーザー管理画面にアクセスするには、App TesterのランディングページからIAP APIを選択し、[User Account Settings] をタップします。

ログインとログアウトの切り替え
現在のユーザーのログインとログアウトを切り替えるには、[Status] の [Logged in] または [Logged Out] オプションをタップします。
現在のユーザーの変更
App Testerには、3つのテストユーザーアカウントが用意されています。テストユーザーには、Amazon User 1、Amazon User 2、Amazon User 3という名前が付いています。
ユーザーを変更するには、[Amazon User Id] で、テストに使用するユーザーIDを選択します。
現在のユーザーのマーケットプレイスを変更する方法
App Testerでは、世界中のさまざまなマーケットでアプリをテストできます。現在のユーザーに関連付けられているマーケットプレイスを変更するには、[User Marketplace] で新しいマーケットを選択します。以下のマーケットを使用できます。
- US: 米国
- GB: 英国
- DE: ドイツ
- ES: スペイン
- FR: フランス
- IT: イタリア
- JP: 日本
APIレスポンスの構成方法
IAP APIのテスト呼び出しの条件やレスポンスを設定するには、[API Response Settings] タブを使用します。

レスポンスとして [Default] を選択すると、既存のデフォルト設定が使用されます。「Default」という設定自体が存在するわけではないことに注意してください。SUCCESSFULやFAILEDなどの値を明示的に選択した場合は、その値がApp Testerから返されます。たとえば、getProductData
は、リクエストされたSKUがJSONファイルに含まれているとSUCCESSFULを返します。GetUserData
は、[User Account Settings] でユーザーが [Logged Out] に設定されているとFAILEDを返します。
各IAP APIで選択できるレスポンスは次のとおりです。
API名 | 選択できるレスポンス |
---|---|
GetProductData | Default、SUCCESSFUL、FAILED |
GetPurchaseUpdates | Default、SUCCESSFUL、FAILED |
GetUserData | Default、SUCCESSFUL、FAILED |
Purchase | Default、SUCCESSFUL、FAILED、ALREADY_PURCHASED、INVALID_SKU |
通知を有効または無効にする方法
[Notification Settings] タブを使用すると、システムの通知ドロワーに追加される通知を簡単に有効または無効にすることができます。
次の図は [Notification Settings] タブを示しています。

次の通知を設定できます。
-
[Purchase Updates Notifications]: デフォルトでは、アプリが購入ダイアログを読み込んだ後、
getPurchaseUpdates()
を呼び出さなかった場合に、Amazonから通知が送信されます。 アプリでgetPurchaseUpdates()
を1回呼び出すと、この通知は送信されなくなります。この通知のオンとオフは、[Purchase Updates Notifications] の設定で切り替えることができます。 -
[Notify Fulfillment Notifications]: デフォルトでは、ユーザーが購入を行った後、30秒以内にアイテムが付与されなかった場合に、Amazonから通知が送信されます。この通知のオンとオフは、[Notify Fulfillment Notifications] で切り替えることができます。
-
[Reset Purchase Updates]:
getPurchaseUpdates()
が呼び出されたかどうかを示す状態をリセットします。
トランザクションの管理
現在のユーザーの購入トランザクションの表示、キャンセル、削除を行うには、[Manage Transactions] タブを使用します。トランザクションのキャンセルと削除は、非消費型アイテムや定期購入型アイテムをテストするときに役立ちます。このタブには、現在のユーザーのすべてのトランザクションが表示されます。

[Manage Transactions] タブには、トランザクションごとに次の情報が表示されます。
- RECEIPT: 購入された商品の種類。IAPで有効な値は、CONSUMABLE、ENTITLEMENT、SUBSCRIPTIONです。
- RECEIPT ID: トランザクションの一意の識別子。
- SOLD BY: アイテムを販売したアプリ。
- PURCHASED ON: アイテムが購入された日付。
- STATUS: トランザクションのステータス。有効な値は、PURCHASEDまたはCANCELEDです。これらのApp Testerの値はそれぞれ、IAP APIの値FULFILLEDとUNAVAILABLEに対応しています。
アプリがPurchasingService.notifyFulfillment(receiptId, FulfillmentResult.FULFILLED)
を呼び出すと、[Manage Transactions] セクションにレシートが FULFILLEDというステータスで表示されます。
[Manage Transactions] タブでは、以下を実行できます。
- 現在のユーザーのトランザクションの一覧を最新の状態に更新する。
- 現在のユーザーのトランザクションをすべて削除する。
- 個々のトランザクションをキャンセルする。
- 個々のトランザクションを削除する。
JSONファイル内のIAPアイテムの確認
[IAP Items in JSON File] タブをタップすると、App Testerをインストール・構成する方法で構成したJSONファイル内のIAPアイテムを簡単に確認できます。有効なJSONファイルが正しく追加されていれば、App Testerによってファイルの内容が解析され、このタブに表示されます。
有効なJSONファイルが正しく追加されていない場合、このタブには、エラーメッセージまたはJSONファイルが存在しないという通知が表示されます。
ユーザーエクスペリエンスのシミュレーション
App Testerでは、APIリクエストに対してレスポンスを返すだけでなく、公開されたライブ状態のアプリと同じように購入フローダイアログを表示することもできます。これらのダイアログは、アプリの購入プロセスのユーザーエクスペリエンスを評価するために役立ちます。
App Testerは、購入リクエストごとに2つのインタースティシャルダイアログを表示します。1つ目は詳細画面で、購入価格などの詳細情報が表示されます。次のIAPの例を参照してください。

2番目のダイアログは、購入者へのお礼を表示する画面です。このページは、ユーザーが右上隅の [X] ボタンをタップして手動で閉じる必要があります。次のIAPの例を参照してください。

ログの表示方法
App Testerでは、アプリのトランザクションやその他のAPIインタラクションに関する詳細情報を取得するために、Logcatツールを使用します。アプリのテスト中に生成されたログをLogcatで表示するには、次の手順に従います。
- アプリとApp TesterがインストールされているAndroidデバイスを、Android Debug Bridge(adb)が動作しているコンピューターに接続します。
- 「AmazonAppTester」というタグを検索して、App Testerのログエントリを表示します。
Eclipse DDMS(Dalvik Debug Monitor Server)開発環境を使用している場合は、[Logcat] タブのフィルターテキスト領域に「tag:AmazonAppTester
」と入力すると、App Testerによって生成されたログエントリのフィルター処理を行うことができます。
App TesterによるDRMのテスト
デバイスでDRMをテストするには、Amazon App Testerをインストールする必要があります(上記参照)。アプリのDRM機能をテストするには、Amazon App Testerが必要です。
Amazon App Testerには [DRM API Response Settings] というタブがあり、さまざまなライセンスステータスのレスポンスをシミュレートできます。
Amazon App Testerを使用してアプリのライセンス検証をテストするには、次のdrm.ResponseReceiver
をアプリのAndroidManifest.xmlファイルに追加します。アプリがAndroid 12以降を対象としている場合は、次の例に示すように、MainActivity
とResponseReceiver
でandroid:exported
を明示的にtrue
に設定する必要があります。
<application>
...
<activity android:label="@string/app_name" android:name="com.amazon.sample.drm.MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name = "com.amazon.device.drm.ResponseReceiver" android:exported="true"
android:permission = "com.amazon.drm.Permission.NOTIFY" >
<intent-filter>
<action android:name = "com.amazon.drm.NOTIFY" />
</intent-filter>
</receiver>
...
</application>
また、DRMサンプルアプリの詳細も参照してください。
Last updated: 2022年9月20日