-
URLLoader オブジェクトを使用して、保護されたコンテンツのメタデータファイルのバイトを読み込みます。このオブジェクトを
metadata_bytes
などの変数に設定します。
Adobe Access によって制御されるすべてのコンテンツは、Adobe Access メタデータを持ちます。コンテンツがパッケージ化されると、このメタデータは別のメタデータファイル(.metadata)として、コンテンツと共に保存できるようになります。詳しくは、Adobe Access のマニュアルを参照してください。
-
DRMContentData インスタンスを作成します。このコードを次の try-catch ブロックに配置します。
new DRMContentData(
metadata_bytes
)
ここで、
metadata_bytes
は手順 1 で取得した URLLoader オブジェクトです。
-
(Flash Player のみ)ランタイムは、Adobe Access モジュールをチェックします。見つからない場合は、DRMErrorEvent エラーコード 3344 または DRMErrorEvent エラーコード 3343 の IllegalOperationError がスローされます。
このエラーを処理するには、SystemUpdater API を使用して Adobe Access モジュールをダウンロードします。このモジュールのダウンロード後、SystemUpdater オブジェクトは COMPLETE イベントを送出します。これには、このイベントが送出されたときに手順 2 に戻る、このイベントのイベントリスナーが含まれます。これらの手順について、次のコードで示します。
flash.system.SystemUpdater.addEventListener(Event.COMPLETE, updateCompleteHandler);
flash.system.SystemUpdater.update(flash.system.SystemUpdaterType.DRM)
private function updateCompleteHandler (event:Event):void {
/*redo step 2*/
drmContentData = new DRMContentData(metadata_bytes);
}
プレーヤーそのものを更新する必要がある場合は、ステータスイベントが送出されます。このイベントの処理について詳しくは、
更新イベントの監視
を参照してください。
注意:
AIR アプリケーションでは、AIR インストーラーは Adobe Access モジュールの更新および必要なランタイム更新を処理します。
-
DRMManager オブジェクトから送出される DRMStatusEvent および DRMErrorEvent を監視するリスナーを次のように作成します。
DRMManager.addEventListener(DRMStatusEvent.DRM_STATUS, onDRMStatus);
DRMManager.addEventListener(DRMErrorEvent.DRM_ERROR, onDRMError);
DRMStatusEvent リスナーで、証明書が有効である(null でない)ことを確認します。DRMErrorEvent リスナーで、DRMErrorEvents を処理します。
DRMStatusEvent クラスの使用
および
DRMErrorEvent クラスの使用
を参照してください。
-
コンテンツの再生に必要な証明書(ライセンス)を読み込みます。
最初に、ローカルに保存されたライセンスを読み込んで、コンテンツの再生を試みます。
DRMManager.loadvoucher(drmContentData, LoadVoucherSetting.LOCAL_ONLY)
読み込みが完了すると、DRMManager オブジェクトは
DRMStatusEvent.DRM_Status
を送出します。
-
DRMVoucher オブジェクトが null でない場合、証明書は有効です。手順 13 に進みます。
-
DRMVoucher オブジェクトが null の場合は、このコンテンツに対してポリシーで要求されている認証方法を確認します。
DRMContentData.authenticationMethod
プロパティを使用します。
-
認証方法が
ANONYMOUS
の場合は、手順 13 に進みます。
-
認証方法が
USERNAME_AND_PASSWORD
の場合、アプリケーションはユーザーが資格情報を入力するためのメカニズムを提供する必要があります。その資格情報をライセンスサーバーに渡してユーザーを認証します。
DRMManager.authenticate(metadata.serverURL, metadata.domain, username, password)
認証に失敗した場合、DRMManager は
DRMAuthenticationErrorEvent
を送出し、認証に成功した場合は
DRMAuthenticationCompleteEvent
を送出します。これらのイベントのリスナーを作成します。
-
認証方法が
UNKNOWN
の場合、カスタム認証方法を使用する必要があります。この場合、コンテンツプロバイダーは、ActionScript 3.0 API を使用せずに、帯域外で認証が行われるよう手配しておく必要があります。カスタム認証手順では、
DRMManager.setAuthenticationToken()
メソッドに渡すことができる認証トークンを生成する必要があります。
-
認証が失敗した場合、アプリケーションは手順 9 に戻る必要があります。アプリケーションに、認証の失敗が繰り返されたときにそれを処理し、制限するメカニズムがあることを確認します。例えば、3 回の試行後に、認証に失敗してコンテンツを表示できないことを示すメッセージをユーザーに表示します。
-
ユーザーに資格情報の入力を求めるのではなく、保存されたトークンを使用するには、
DRMManager.setAuthenticationToken()
メソッドを使用してトークンを設定します。次に、ライセンスサーバーからライセンスをダウンロードし、手順 8 のようにコンテンツを再生します。
-
(オプション)認証に成功した場合は、認証トークンをキャプチャできます。これは、メモリにキャッシュされるバイト配列です。このトークンは、
DRMAuthenticationCompleteEvent.token
プロパティを使用して取得します。認証トークンを保存および使用し、ユーザーが繰り返しこのコンテンツの資格情報を入力しなくても済むようにすることができます。ライセンスサーバーは、認証トークンの有効期限を決定します。
-
認証に成功した場合は、次のようにライセンスサーバーからライセンスをダウンロードします。
DRMManager.loadvoucher(drmContentData, LoadVoucherSetting.FORCE_REFRESH)
読み込みが完了すると、DRMManager オブジェクトは DRMStatusEvent.DRM_STATUS を送出します。このイベントを監視し、これが送出されたら、コンテンツを再生できます。
-
NetStream オブジェクトを作成し、その
play()
メソッドを呼び出して、ビデオを再生します。
stream = new NetStream(connection);
stream.addEventListener(DRMStatusEvent.DRM _STATUS, drmStatusHandler);
stream.addEventListener(DRMErrorEvent.DRM_ERROR, drmErrorHandler);
stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
stream.client = new CustomClient();
video.attachNetStream(stream);
stream.play(videoURL);