7.1. 追加コンテンツの購入済判定
追加コンテンツを購入済みかどうかを判定する場合は、必ず nn::ec::CTR::ContentInfo::IsOwned 関数を使用してください。
nn::ec::CTR::ContentInfo::IsOnDevice 関数は追加コンテンツが SD カード内に存在するかどうかを判定するためのもので、システム的に未購入の状態であっても、SD カード内に追加コンテンツがあれば true を返します。
購入済判定が正しく行われているかどうかは、以下の手順で確認することができます。
- SD カードを 2 枚(SD カード A、SD カード B)用意する。
なお、ダウンロードアプリの場合は、それぞれの SD カードにアプリケーションをダウンロードしておきます。 - 任意のアイテムを購入して、SD カード A に保存する。
- アプリケーションを終了し、SD カード B に差し替える。
- アプリケーション内の購入フローで、手順 2 で購入したアイテムが「購入済み」または「再受信可能」を意味する表示になっていることを確認する。
- 以下のいずれかの方法で、手順 2 で購入したアイテムを含むデータタイトルの権利、もしくはショップアカウントを削除する。
- NNID(ニンテンドーネットワークID)を使用しない場合
使用している CTR-SDK に含まれる EcDevTool(EcRightTool)を使用して、データタイトルの権利を削除する。 - NNID を使用する場合
CTR-SDK 7.2.1 以降の SDK に含まれる EcDevTool を使用して、ショップアカウントを削除する。
(CTR-SDK 7.2.1 より前のバージョンの SDK に含まれる EcDevTool では、ショップアカウントの削除に対応していません。)
- NNID(ニンテンドーネットワークID)を使用しない場合
- SD カード B のまま、アプリケーション内の購入フローでアイテムのカタログを表示する。
- アプリケーションを終了し、SD カード A に差し替える。
- アプリケーション内の購入フローで、手順 2 のアイテムが「未購入」を意味する表示になっていることを確認する。
手順 6 では、必ず SD カード B を挿入したまま行ってください。この手順を経ずに SD カード A に差し替えてアイテムの確認を行うと、SD カード A のコンテンツを EC アプレットが削除してしまう可能性があります。
上記の確認手順を完了したあとで再び同じアイテムを購入しようとすると、ダウンロード時に 009-1005 のエラーが発生することがありますが、これは eコマースシステムの仕様ですので、アプリケーションの実装に問題があるわけではありません。
eコマース
追加コンテンツ
購入済判定
NNID
ニンテンドーネットワークID
EcDevTool
EcRightTool
009-1005 エラー
7.2. アイテム引換番号の入力にアプリケーションで対応する場合
アイテム引換券に記載されている 16 桁のアイテム引換番号は、アルファベットと数字で構成されています。
そのため、アプリケーション内でアイテム引換番号を入力する方法には、アルファベットと数字の両方が入力可能な入力方法を使用してください。
eコマース
アイテム引換番号
7.3. 追加コンテンツが破損していた場合の対応
追加コンテンツが破損していた場合に、ゲームが進行不能になったり、フリーズすることがないように注意してください。追加コンテンツのマウントや読み込み時に破損が判明したときは、エラーを表示して追加コンテンツにアクセスする前のシーンに戻る、または追加コンテンツを読み込めなかった旨を通知して追加コンテンツを使用しないシーンに移るなどの対応が考えられます。
eコマースライブラリの関数を呼び出した際に追加コンテンツの破損が判明したときは、eコマースライブラリのほかのエラーと同様に nn::ec::ResultError で扱ってください。また、SD カード挿抜以外のエラーを表示する際は、 nn::ec::ResultError::GetErrorCode 関数で取得したエラーコードと、それに対応するエラーメッセージを表示してください。
なお、フラグのみを販売し、購入後に元から埋め込まれたデータを使用できるようにするなど、追加コンテンツのマウントや読み込みを行わない仕様であればエラーや通知が表示されなくても問題ありません。
エラーハンドリングについての詳細は eコマースライブラリの関数リファレンスにある「ファイルシステム:エラーハンドリングについて」のページを参照してください。
追加コンテンツが破損している状態は、以下のような手順で再現できます。
- 任意の追加コンテンツが含まれる SD カードを PC に差し、「Nintendo 3DS/…/title/<ProgramID Hi32>/<ProgramID Lo32>/content/00000000」ディレクトリにある適当な .app ファイルをバイナリエディタで開き、先頭 4 バイトの値を 0 にする。
- 該当の SD カードを 3DS 本体に差してアプリケーションを起動し、追加コンテンツを読み込むシーンに入る。
追加コンテンツの破損に対するエラー表示を行っている場合、手順 2 の時点でエラーコード 009-4901 もしくは 009-8111 が発生します。
eコマース
追加コンテンツ
追加コンテンツの破損
エラーハンドリング
nn::ec::ResultError
nn::ec::ResultError::GetErrorCode 関数
009-4901 エラー
009-8111 エラー