Xamarin の tvOS リソースとデータ ストレージ
この記事では、Xamarin.tvOS アプリでのリソースと永続データ ストレージの操作について説明しています。
tvOS リソースの制限事項
iOS デバイスとは異なり、tvOS アプリまたはデータ用として新しい Apple TV が提供する永続的なローカル ストレージは非常に限られています。 非常に小さな項目 (ユーザー設定など) の場合、tvOS アプリは引き続き 500 KB のデータ制限で NSUserDefaults
にアクセスできます。 ただし、Xamarin.tvOS アプリで大量の情報を保持する必要がある場合は、そのデータを iCloud に格納して取得する必要があります。
さらに、tvOS は Apple TV アプリのサイズを 200 MB に制限します。 アプリでこのサイズを超えるリソースが必要な場合は、オンデマンド リソース (最大 2 GB) を使用し、パッケージ化して読み込む必要があります。 これらの制限を考慮すると、アプリのユーザーに最適なエクスペリエンスを提供するために、追加アセットのダウンロードを適切なタイミングで行う必要があります。 詳細については、Apple の「オンデマンド リソース ガイド」を参照してください。
非永続的なダウンロード
各 tvOS アプリには、追加のリソースとアセットがダウンロードされる一時キャッシュ ディレクトリが用意されています。 このディレクトリは、アプリが実行されている限り保持されます。 ただし、Apple TV が他のアプリやシステムを使用するための空き容量を解放する必要がある場合は、このキャッシュを削除できます。
その結果、アプリは次回の起動時に、以前にダウンロードしたコンテンツを必ず利用できるとは限りません。 Xamarin.tvOS アプリは、必要なリソースが存在するかどうかを常にチェックし、必要に応じてダウンロードする必要があります。
重要
必要に応じて他のアセットやリソースをダウンロードすることはできますが、予期しない結果につながる可能性があるため、Apple はアプリのキャッシュ内のすべての領域を消費しないように警告しています。
リソースの管理
前述のように、tvOS アプリで使用できる非永続的なストレージは限られているため、Xamarin.tvOS アプリのユーザー エクスペリエンスを優れたものにするためには、これらの制限を念頭に置いて計画することが必要です。
iCloud データ ストレージ
Apple TV のストレージは限られているため、永続的なローカル ストレージが非常に限られているだけでなく、以前にダウンロードした情報がアプリの次回の実行時に利用できる保証はありません。
その結果、Xamarin.tvOS アプリは、ユーザー データを iCloud データ ストアに格納する必要があります。 Apple は、tvOS アプリ向けに iCloud ベースのデータ ストレージ オプションを 2 つ用意しています。
- iCloud Key-Value Storage (KVS) - アプリで必要になる可能性がある情報が小さい (1 MB 未満) 場合は (ユーザー設定など)、iCloud KVS Storage を使用できます。 iCloud KVS データは、クラウドと、同じアプリを実行しているすべてのユーザーのデバイスに自動的に同期されます。 詳細については、iCloud の概要に関するドキュメントの「キー値ストレージ」セクション、またはiCloudでのキー値データの設計に関する Apple のドキュメントを参照してください。
- CloudKit - より大きな情報 (1 MB 超) のストレージには、Apple の CloudKit Framework を使用します。 iCloud KVS Storage とは異なり、CloudKit データはアプリのすべてのユーザー間で共有できます (1 人のユーザーにプライベートにすることもできます)。 詳細については、CloudKit の概要に関するドキュメントまたは Apple の「CloudKit クイック スタート」を参照してください。
重要
Apple からは、開発者が欧州連合の一般データ保護規則 (GDPR) を適切に処理するためのツールが提供されています。
オンデマンド リソース
オンデマンド リソースは、App Store でホストされ、アプリで必要に応じてダウンロードされるアプリ コンテンツとアセット (アプリ バンドルとは別) を提供します。 オンデマンド リソースを使用して、最大 2 GB のデータを提供できます。 初期アプリのダウンロードをより小さくしながら (tvOS アプリは最大 200 MB に制限)、必要に応じて豊富なアセットを提供できます。
tvOS アプリがオンデマンド リソースを要求すると、システムは自動的にそのコンテンツのダウンロードと保存をアプリのキャッシュ ディレクトリで管理します。 アプリは、このコンテンツがダウンロードされ、利用可能になるまで待ってから続行する必要があります。
これらのリソースは、アプリの複数の起動を通じて Apple TV にキャッシュされ続ける可能性があるため、起動サイクルが短縮されます。 ただし、アプリは次回の起動時に、以前にダウンロードしたコンテンツを必ず利用できるとは限りません。 詳細については、上記の「非永続的ダウンロード」セクションを参照してください。
Xcode を使用して、Give Resource Tag に関連付けられた関連コンテンツのバンドル (ゲーム レベル 2 のすべてのアセットなど) を作成します。 その後、アプリはこのリソース タグを指定してオンデマンド リソースを要求します。 アプリは、コンテンツがダウンロード中であることを示す UI をユーザーに提示する必要があります。 詳細については、Apple の「オンデマンド リソース ガイド」を参照してください。
重要
アプリがオンデマンド リソースをダウンロードする必要がある回数と個々のダウンロードのサイズの間の適切なバランスを取るために注意する必要があります。 新しいコンテンツをダウンロードするためにゲームプレイが何度も中断されたり、1 回のダウンロードに時間がかかりすぎる場合、ユーザーはアプリに不満を感じる可能性があります。
まとめ
この記事では、tvOS システムによって Xamarin.tvOS アプリに適用される、サイズ、リソース、およびデータ ストレージの制限について説明しました。 これらの制限事項を回避するオプション、およびアプリのユーザー エクスペリエンスを優れたものにするための提案を提示しました。