手順2: カタログのディープリンクを検証する


手順2: カタログのディープリンクを検証する

Amazonアプリストアにアプリを申請する前に、ここに記載されているテストケースを実行して、統合を検証してください。アプリの動作が正常であることを検証することで、Amazonアプリストアに承認されやすくなります。アプリの状態(公開済みまたは未公開)と条件(ログインが必要かどうか、無料トライアル版かどうか)に応じて、アプリに適用する必要のある手順だけを実行してください。

adbを使用してComradeを開始し、送信されたインテントを確認する

アプリから送信されたインテントを確認するには、adbを使用してFire TVデバイスに接続し、Comradeを起動します。Comradeは、ランチャーでコンテンツを管理するFire TV APIの名前です。このテスト中に送信されたインテントを確認するには、Fire TV Edition(Fire TV内蔵のスマートテレビ)以外のFire TVデバイスを使用する必要があります。

Fire TVホーム画面ランチャーに送信されたインテントは、次の手順で確認します。

  1. まず、アプリをアンインストールします。

    Fire TVでアプリをアンインストールするには、[設定] > [アプリケーション] > [インストール済みアプリケーションを管理] の順に移動します。目的のアプリを選択し、[アンインストール] を2回クリックします。

  2. adb経由でFire TVデバイスに接続します。次に例を示します。

    adb connect 10.49.172.33:5555
    

    ワイヤレス接続の場合は、[設定] > [My Fire TV] > [バージョン情報] > [ネットワーク] でネットワークアドレスを確認できます(一部のモデルでは「My Fire TV」ではなく「デバイス」と表示されます)。

    お使いのFire TVデバイスでUSB接続が可能な場合は、有線接続を使用することもできます。詳細については、adbを使用してFire TVに接続する方法を参照してください。

  3. adbを使用してアプリをインストールします。

    次のコマンドでadbを使用してターミナルからアプリをインストールできます。

    adb install <path-to-apk-file>
    

    あるいは、Android Studioで [Run 'app'] ボタン [Run 'app'] ボタンをクリックし、デバイスを選択します。詳細については、アプリをインストールして実行を参照してください。

  4. logcatを消去します。

    adbコマンドを使用して、次のようにlogcatを消去することができます。

    adb logcat -c
    
  5. 次のコマンドを実行します。

    adb logcat | grep FTVCS:ComradeActionHandler
    
  6. 送信されたインテントを監視できるようにターミナルが開いた状態で、次の開始されたアクションと送信されたインテントセクションに示すアクションを開始し、レスポンスを確認します。ターミナルに表示される出力については、後述のadbコマンドの出力例セクションに例が示されています。

開始されたアクションと送信されたインテント

このセクションでは、開始されたアクションと結果として送信される後続のインテントを示します。

開始されたアクション 送信されたインテント
初回起動時。たとえば、
  • インストール後にアプリが起動すると...
  • デバイスの再起動後にアプリが起動すると...
  • 強制停止後にアプリが起動すると...

...デフォルトでサインインインテントが送信される。

...次のいずれかの場合にのみ、この時点で再生インテントが送信される。

  • すべてのコンテンツを表示するのにサインインが不要(つまり、アカウントを無料で作成できる場合でもアカウント不要ですべてのコンテンツを無料で視聴できる)
  • アプリがSSOを使用しており、アプリに有効なSSOトークンがある
  • アプリが独自の自動検証機能を使用して、ユーザーにアクセス権があることを検証する

サインインに成功した後... ...再生インテントが送信される
サインアウトまたはログアウト時... ...サインインインテントが送信される
アプリがシングルサインオン(SSO)を使用していて、アプリがバックグラウンドで実行されている場合... ...アプリが再開され、有効なSSOトークンonResumeがあると判断されると、再生インテントが送信される(注: アプリをバックグラウンドに移動するには、アプリを起動し、リモコンのホームボタンを押します)。

adbコマンドの出力例

このセクションでは、ターミナルに表示されるインテントの出力例を紹介します。重要な情報がハイライトされています。ハイライトされた値は、アプリから受け取ったインテントを示します。

  • SIGN_IN: サインインインテント
  • PLAY: 再生インテント
  • PARTNER123: パートナーのカタログ名

サインインインテントの出力例

サインインインテントを受け取ると、次のような出力が表示されます。

06-11 16:09:57.448  4347 16145 I FTVCS:ComradeActionHandler: Received capability: SIGN_IN
for partner: PARTNER123 06-11 16:09:57.450  4347 16145 I FTVCS:ComradeActionHandler: Processing
capabilities Capabilities{mPartnerId='PARTNER123', mPackageName='com.yourpackagename.firetv',
mComradeApiVersion=V1, mSubscriptionIds=[],
mCapabilities={SIGN_IN=Capabilities{mCapabilityType=SIGN_IN,
mIntentPackageName='com.yourpackagename.firetv',
mIntentAction='android.intent.action.VIEW',
mIntentClassName='com.partner.android.IntegrationActivity',
mIntentDataExtraName='null', mIntentFlags=-1}}}

上記のコードでは汎用の値が使用されています。実際にはアプリ独自のパッケージ名、クラス、エクストラが表示されます。

再生インテントの出力例

再生インテントを受け取ると、次のような出力が表示されます。

06-11 16:09:57.379  4347 16145 I FTVCS:ComradeActionHandler: Received capability: PLAY for
partner: PARTNER123 06-11 16:09:57.380  4347 16145 I FTVCS:ComradeActionHandler: Processing
capabilities Capabilities{mPartnerId='PARTNER123', mPackageName='com.yourpackagename.firetv',
mComradeApiVersion=V1, mSubscriptionIds=[],
mCapabilities={PLAY=Capabilities{mCapabilityType=PLAY,
mIntentPackageName='com.yourpackagename.firetv',
mIntentAction='com.yourpackagename.amazon.catalog.ON_MESSAGE',
mIntentClassName='com.yourpackagename.MainActivity', mIntentDataExtraName='null',
mIntentFlags=268435456}}}

上記のコードでは汎用の値が使用されています。実際にはアプリ独自のパッケージ名、クラス、エクストラが表示されます。

適切なインテントが送信されることを確認するだけでなく、ディープリンクの動作もテストする必要があります。確認する点は、具体的には、ユーザーが選択したコンテンツを再生すると、アプリが開いてビデオが直接再生される(アプリが再生インテントを送信した場合)か、アプリ内のサインイン画面またはサインアップ画面が起動する(アプリがサインインインテントを送信した場合)ことです。

ディープリンクのシナリオごとに、未認証ユーザーと認証済みユーザーの2種類のユーザー状態をテストする必要があります。ディープリンクをテストするには、Fire TVのユニバーサル検索を使用してアプリのメディアを検索し、そのメディアを選択してアプリで視聴します。次の表に、予想される条件と結果を示します。

条件 結果
未認証状態: アプリでコンテンツを表示するには認証が必要であるが、ユーザーがまだサインインしていない ディープリンクにより、認証/サインアップ画面が表示される。認証に成功すると、ビデオの再生が開始される。
認証済み状態: アプリでコンテンツを表示するには認証が必要であり、ユーザーが正常にサインインしている。また、アカウントを作成しなくても、すべてのコンテンツを無料で視聴できる。 ディープリンクにより、ビデオの再生が開始される(ビデオの詳細ページには移動しない)。

次のディープリンクシナリオをテストしてください。

コールドスタートからのディープリンク

「コールドスタート」とは、アプリがインストールされた後、またはアプリを強制停止した後のアプリの最初の起動を指します。アプリがコールドスタートする必要がある場合と、アプリが既にバックグラウンドにある場合とで、ディープリンクの動作は異なります。

コールドスタートから認証済み状態のディープリンクをテストするには、次の手順を実行します。

  1. アプリを起動します。
  2. アプリにサインインします。
  3. リモコンのホームボタンを押します。
  4. アプリを強制停止します([設定] > [アプリケーション] > [インストール済みアプリケーションを管理] と移動し、対象のアプリを選択して [強制停止] を選択)。
  5. Fire TVのユニバーサル検索を使用してアプリのメディアを検索し、そのメディアを選択してアプリで視聴します。

ディープリンクにより、ビデオの再生が開始されます(ビデオの詳細ページには移動しません)。

コールドスタートから未認証状態のディープリンクをテストするには、次の手順を実行します。

  1. アプリを起動します。
  2. アプリからサインアウトします(必要な場合)。
  3. リモコンのホームボタンを押します。
  4. アプリを強制停止します([設定] > [アプリケーション] > [インストール済みアプリケーションを管理] と移動し、対象のアプリを選択して [強制停止] を選択)。
  5. Fire TVのユニバーサル検索を使用してアプリのメディアを検索し、そのメディアを選択してアプリで視聴します。

ディープリンクにより、認証/サインアップ画面が表示されます。認証に成功すると、ビデオの再生が開始される。

バックグラウンドにあるアプリのディープリンク

アプリがバックグラウンドにある間に認証済み状態のディープリンクをテストするには、次の手順を実行します。

  1. アプリを起動します。
  2. アプリにサインインします。
  3. リモコンのホームボタンを押します。
  4. Fire TVのユニバーサル検索を使用してアプリのメディアを検索し、そのメディアを選択してアプリで視聴します。

ディープリンクにより、ビデオの再生が開始されます(ビデオの詳細ページには移動しません)。

アプリがバックグラウンドにある間に未認証状態のディープリンクをテストするには、次の手順を実行します。

  1. アプリを起動します。
  2. アプリからサインアウトします(必要な場合)。
  3. リモコンのホームボタンを押します。
  4. Fire TVのユニバーサル検索を使用してアプリのメディアを検索し、そのメディアを選択してアプリで視聴します。

ディープリンクにより、認証/サインアップ画面が表示されます。認証に成功すると、ビデオの再生が開始される。

ビデオ再生中のディープリンク

ビデオ再生中に認証済み状態にあるディープリンクをテストするには、次の手順を実行します。

  1. アプリを起動します。
  2. アプリにサインインします。
  3. アプリでビデオの視聴を開始します。
  4. 次のいずれかの操作を行います。

    • アプリにVideo Skills Kit(VSK)が統合されている場合は、リモコンのホームボタンを押します。次に、テキストまたは音声を使用して別のビデオを検索します。
    • アプリにVideo Skills Kit(VSK)が統合されていない場合は、音声で別のビデオを検索します。
  5. 表示された結果からコンテンツを選択してアプリで視聴します。

ディープリンクにより、ビデオの再生が開始されます(ビデオの詳細ページには移動しません)。

ビデオ再生中に未認証状態にあるディープリンクをテストするには、次の手順を実行します。

  1. アプリを起動します。
  2. アプリからサインアウトします(必要な場合)。
  3. 次のいずれかの操作を行います。

    • アプリにVideo Skills Kit(VSK)が統合されている場合は、リモコンのホームボタンを押します。次に、テキストまたは音声を使用して別のビデオを検索します。
    • アプリにVideo Skills Kit(VSK)が統合されていない場合は、音声で別のビデオを検索します。
  4. コンテンツを視聴するアプリを選択します。

ディープリンクにより、認証/サインアップ画面が表示されます。認証に成功すると、ビデオの再生が開始される。

テストケース: [戻る] ボタンでユーザーを検索結果に戻す

このテストケースでは、[戻る] ボタンの正しい動作を確認します。

  1. Fire TVのホーム画面から、アプリのメディアを検索します。
  2. コンテンツを選択してアプリで再生します。
  3. [戻る] ボタンを押します。[戻る] ボタンを押すと、最終的には検索結果に戻るはずです。

テストケース: 無効なコンテンツIDを送信する

テストケースとしては、これ以外にも、無効なコンテンツIDをアプリに送信して、この条件でアプリが適切に処理することを確認する必要があります。アプリがこの条件を適切に処理できない場合は、エラー処理コードを再調査して、必要に応じて修正します。

アプリへの無効なコンテンツIDの送信をテストするには、次の手順を実行します。

  1. アプリをFire TVデバイスにダウンロードまたはサイドロードします。
  2. 必要に応じてサインインし、アプリへの登録をアクティブ化します。
  3. テストアプリ(統合テストアプリを使用したFire TVランチャー統合テストを参照)またはadbコマンド(adbを使用したランチャー統合テストを参照)のいずれかを使用して、無効なIDをアプリに送信します。
  4. 最初に、有効なIDを送信して、コンテンツが適切に起動されることを確認します。
  5. 次に示す無効なID条件をテストします。
    • 数字で構成される無効なIDを送信する。
    • 英字で構成される無効なIDを送信する。
    • 数値と文字が混在した無効なIDを送信する。
  6. 無効なIDを送信しても、アプリがインテントを適切に処理することを確認します。

アプリが起動し、アプリ内のメイン画面が表示されることを確認します。または、アプリが適切なメッセージを返す必要があります(例:「選択したコンテンツはご利用いただけません」)。 アプリ内のメイン画面が表示されない、またはメッセージが表示されない場合は、表示されるようにエラー処理コードを変更します。

追加のテスト

必要に応じて、次の2つのトピックに従って、カタログコンテンツに対して追加のテストを実行できます。