DRMサンプルアプリ
このサンプルアプリは、DRMの概要のコードを使用してDRMライセンスチェックを組み込む方法を示しています。サンプルアプリの内容を詳しく調べると、DRMを状況に応じて適切に組み込む方法をよく理解できます。サンプルアプリは、Fire TVとFireタブレットのどちらでも動作します。
- 手順1: 必要なアセットを使用する
- 手順2: Appstore SDKのJARをサンプルアプリに追加する
- 手順3: プロジェクトのアセットにPEMファイルを追加する
- 手順4: ADBを使用してFireデバイスに接続する
- 手順5: FireデバイスにAmazon App Testerをインストールする
- 手順6: サンドボックスモードにする
- 手順7: アプリを実行する
- サンプルアプリについて
手順1: 必要なアセットを使用する
まず、プロジェクトに必要なすべてのアセットを集めます。以下をダウンロードして解凍します。
- DRMサンプルアプリ - Appstore SDKに含まれています。
- Appstore SDK - SDKのダウンロードを参照してください。
- Amazon App Tester(Fireデバイス上) - こちらからApp Testerをダウンロードします。
AppstoreAuthenticationKey.pem
ファイルも必要となりますが、このファイルは、チュートリアルの手順3でダウンロードできます。
さらに、次のものが必要です。
- Android Studio
- Fire TVまたはFireタブレットデバイス
手順2: Appstore SDKのJARをサンプルアプリに追加する
Appstore SDKのJARは、作成するDRMサンプルアプリに自動的にはバンドルされません(Appstore SDKの新バージョンがリリースされるたびにサンプルアプリが古くなってしまうため)。SDKのJARをサンプルアプリに追加するには、次の手順に従います。
- Android Studioを開き、[Open an existing Android Studio project] を選択します。
- SampleDRMApplicationフォルダを参照して選択します。続けて [Open] をクリックします。
-
[Project] ビューに切り替えます。
注: このチュートリアルのすべての手順は、Androidの [Project] ビューで行うことを前提としています。 - amazon-appstore-sdk-[x].jarファイルをコピーします。
- Android Studioプロジェクトでappを展開し、libsを選択します。amazon-appstore-sdk-[x].jarファイルをこのディレクトリに貼り付けます。
-
appフォルダを展開し、build.gradleファイルを開きます。追加したamazon-appstore-sdk-[x].jarファイルへの依存関係をカスタマイズします。たとえば、Appstore SDKがバージョン3.0.3の場合、コードは次のようになります。
dependencies { implementation files('libs/amazon-appstore-sdk-3.0.3.jar') }
-
[Build] > [Rebuild Project] の順にクリックして、プロジェクトをビルドします。
Android Studioによってプロジェクトがビルドされるまでに数分かかる場合があります。必要なアセットをGradleが取得して、プロジェクトをビルドするためです。特定のファイルやライブラリがAndroid Studioで必要になった場合は、それらをダウンロードするように求められます。必要なアセットをインストールすると、Android Studioによってプロジェクトが再ビルドされます。
手順3: プロジェクトのアセットにPEMファイルを追加する
PEMファイルをサンプルアプリに追加するには、次の手順に従います。
- 開発者アカウントで開発者コンソールにログインします。
- 既にアプリがある場合は、[アプリ&サービス] > [マイアプリ] に移動します。次に、アプリをクリックします。まだアプリを公開していない場合は、Amazonアプリストアにアプリを申請する方法を参照してください。
-
アプリの新しいバージョンを作成します。アプリ名の下にある [次期バージョン] をクリックします。
重要: パブリックキーへのリンクは、新しいバージョンを作成するとき、または新しいアプリを作成するときにのみ表示されます。Appstore SDKのリリース前に新しいバージョンの作成が進行中だった場合は、既存のバージョンを完了してから新しいバージョンを作成してください。そうすれば、パブリックキーへのリンクが表示されます。このチュートリアルでは、新しいAndroidアプリを作成するだけで構いません。 - [アプリファイルをアップロード] 画面に移動します。
- [関連情報] セクションで、[パブリックキーを表示] をクリックします。
-
[パブリックキー] ダイアログボックスが表示されたら、AppstoreAuthenticationKey.pemリンクをクリックしてPEMファイルをダウンロードします。このファイルにパブリックキーが含まれています。
- AppstoreAuthenticationKey.pemファイルをコピーし、Android Studioプロジェクトのapp/src/main/assetsフォルダに貼り付けます。
手順4: ADBを使用してFireデバイスに接続する
ADBを使用して、コンピューターをFire TVまたはFireタブレットに接続します。サンプルアプリは、Fire TVとFireタブレットのどちらでも動作します。 詳細については、次のどちらかを参照してください。
adb version
」と入力することで確認できます。ADBが認識されない場合は、手順C:PATHにAndroid Debug Bridgeを追加するを参照してください。サンプルアプリのAndroidManifest.xmlファイル(app > src > main)では、次の機能が定義されていることに注意してください。
<uses-feature
android:name="android.hardware.touchscreen"
android:required="false" />
Fire TVをサポートするには、touchscreen
プロパティをfalse
に設定します。こうしないと、Fire TVデバイスでアプリがサポートされません。
手順5: FireデバイスにAmazon App Testerをインストールする
DRMまたはIAP(どちらもAmazonアプリストアとの通信が必要)を実装したアプリを開発する場合、アプリのテストは、Amazon App TesterというAPKを使用して行います。Amazon App Testerアプリでは、Amazonアプリストアクライアントがシミュレートされます。Amazon App Testerをセットアップするには、次の手順に従います。
- 既に以前のバージョンのAmazon App Testerがインストールされている場合は、最初にアンインストールします。このアプリはWeb App Testerとは異なるので注意してください。
- ターミナルまたはコマンドプロンプトで、Amazon App Tester APKをダウンロードしたディレクトリに移動します。
-
ADBを使用してFireデバイスにAPKをインストールします。
adb install -r amazon-app-tester.apk
-r
パラメーターを指定すると、既にApp Testerがインストールされている場合にAPKが再インストールされます。 -
FireデバイスでAmazon App Testerアプリを開きます。インストールされているアプリを探すには、次の手順に従います。
- Fireタブレット: [ゲームとアプリ] メニューをクリックし、[ライブラリ] をクリックします。[Amazon App Tester] の横にある [開く] をクリックします。アプリが表示されない場合は、[アップデート] タブも確認してください。
- Fire TV: [設定] に移動し、[アプリケーション] をクリックします。[インストール済みアプリケーションを管理] をクリックします。[Amazon App Tester] をクリックし、[アプリを起動] を選択します。
- [Appstore SDK API's] バナーをクリックします。
-
[DRM API Response Settings] をクリックします。
この [DRM API Response Settings] オプションが表示されない場合、使用しているAmazon App Testerのバージョンが最新ではありません。
-
アプリに必要なライセンスステータスを選択します。[Default] のままにしておくと、LICENSEDステータスが使用されます。
手順6: サンドボックスモードにする
サンドボックスモードでは、通常であればAmazonアプリストアクライアントに向かう呼び出しを、強制的にAmazon App Testerアプリへとルーティングします。このモードは、ローカルでのテストにのみ使用します。
-
ADBを使用してFireデバイスに接続したのと同じターミナルで、サンドボックスモードを開始します。
adb shell setprop debug.amazon.sandboxmode debug
サンドボックスモードを終了する必要がある場合は、
adb shell setprop debug.amazon.sandboxmode none
を実行してください。ADBを使用してFireデバイスに再接続するたびに、サンドボックスモードを新たに開始する必要があります。
手順7: アプリを実行する
- Android Studioの [Logcat] タブをクリックし、「
LicenseResponse
」でフィルタリングします。 -
[Run App] ボタンをクリックして、Fireデバイスでアプリを実行します。
サンプルアプリに備わっているのは、ライセンスの状態を表示する基本的な画面のみです。
LICENSED
ライセンスステータスは次のように表示されます。NOT_LICENSED
のレスポンスは次のように表示されます。 -
コンソールに記録されたメッセージでライセンスステータスを確認することもできます。
app/src/java/com/amazon/sample/drm/フォルダにあるLicenseVerificationCallback Javaファイルでは、アプリによるライセンス検証処理のロジックを確認できます。詳細については、次のセクションを参照してください。
サンプルアプリについて
このサンプルアプリの目的は、DRMの統合方法を示すことです。サンプルアプリでは、MainActivity
クラス(app/src/main/java/com/amazon/sample/drm/MainActivity.java)のonCreate()
メソッドから、LicensingService
クラスのverifyLicense()
メソッドが呼び出されます。
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setupApplicationSpecificOnCreate();
LicensingService.verifyLicense(getApplicationContext(), new LicenseVerificationCallback(this));
}
verifyLicense()
メソッドは2つのパラメーターを取ります。アプリのコンテキスト(getApplicationContext()
)とLicenseVerificationCallback
の実装(new LicenseVerificationCallback(getApplicationContext())
)です。
LicenseVerificationCallback
の実装は、LicenseVerificationCallback.java
クラスで確認できます。
public class LicenseVerificationCallback implements com.amazon.device.drm.LicensingListener {
...
}
LicenseVerificationCallback
は、onLicenseCommandResponse()
メソッドを呼び出してライセンスステータスを取得します。
public class LicenseVerificationCallback implements com.amazon.device.drm.LicensingListener {
public void onLicenseCommandResponse(final LicenseResponse licenseResponse) {
final LicenseResponse.RequestStatus status = licenseResponse.getRequestStatus();
...
}
}
このonLicenseCommandResponse()
メソッドは、AmazonアプリストアからverifyLicense()
呼び出しの結果を受け取った後、Appstore SDKによって呼び出されます。
この簡易な実装では、アプリは何のアクションもトリガーせずに、ライセンスステータスの記録のみを行います。
public void onLicenseCommandResponse(final LicenseResponse licenseResponse) {
final LicenseResponse.RequestStatus status = licenseResponse.getRequestStatus();
switch (status) {
case LICENSED:
Log.d(TAG, "LicenseResponseステータス:" + status);
break;
case NOT_LICENSED:
Log.d(TAG, "LicenseResponseステータス:" + status);
case EXPIRED:
Log.d(TAG, "LicenseResponseステータス:" + status);
LicensingPromptHelper.showLicenseFailurePrompt(context, LicenseVerificationPromptContent.DEEP_LINK);
break;
case ERROR_VERIFICATION:
Log.d(TAG, "LicenseResponseステータス:" + status);
case ERROR_INVALID_LICENSING_KEYS:
Log.d(TAG, "LicenseResponseステータス:" + status);
case UNKNOWN_ERROR:
Log.d(TAG, "LicenseResponseステータス:" + status);
LicensingPromptHelper.showLicenseFailurePrompt(context, LicenseVerificationPromptContent.SHUT_DOWN);
}
}
ライセンスステータスに関するレスポンスでは、次のいずれかのステータスが返されます。
LICENSED
NOT_LICENSED
EXPIRED
ERROR_VERIFICATION
ERROR_INVALID_LICENSING_KEYS
UNKNOWN_ERROR
Fire TVでアプリを実行した後、Logcatで「LicenseResponse
」という条件でフィルタリングして記録内容を確認します。ライセンスレスポンスにより、ユーザーがアプリを実行する権限を持っていることを確認できます。
それぞれのライセンスステータスについては、ライセンスステータスを参照してください。
Last updated: 2023年10月2日