クイック スタート: アプリ データのローミング
言語: HTML | XAML

クイック スタート: ローミング アプリ データ (XAML)

ローミング アプリ データ ストアからのファイルと設定の保存方法と取得方法について説明します。アプリ データ ストアのローミングとその使用理由について詳しくは、「アプリ データのローミング」をご覧ください。

ロードマップ: このトピックと他のトピックとの関連については、以下をご覧ください。

ローミング データが変更された場合に通知を受け取るように登録する

DataChanged イベントに登録します。この例では、ローミング データの変更のハンドラーとして DataChangeHandler を設定します。


Private Sub InitHandlers()
    AddHandler Windows.Storage.ApplicationData.Current.DataChanged, AddressOf DataChangeHandler
End Sub

Private Sub DataChangeHandler(ByVal appData As Windows.Storage.ApplicationData, ByVal o As Object)
    ' TODO: Refresh your data
End Sub

アプリの設定とファイルのコンテナーを取得する

設定を取得するには ApplicationData.RoamingSettings プロパティを、ファイルを取得するには ApplicationData.RoamingFolder プロパティを使います。


Dim roamingSettings As Windows.Storage.ApplicationDataContainer = Windows.Storage.ApplicationData.Current.RoamingSettings
Dim roamingFolder As Windows.Storage.StorageFolder = Windows.Storage.ApplicationData.Current.RoamingFolder

データを設定に書き込む

前のセクションで取得した roamingSettings コンテナー内の設定にアクセスするには、ApplicationDataContainer.Values プロパティを使います。次の例では、exampleSetting という設定と、アプリの状態などのタイム クリティカルな情報の移行に適した HighPriority という設定を作成します。

  HighPriority 設定は Windows Phone ストア アプリには効果がありません。


' Simple setting
roamingSettings.Values("exampleSetting") = "Hello World";
' High Priority setting, for example, last page position in book reader app
roamingSettings.Values("HighPriority") = "65";


ApplicationDataCompositeValue オブジェクトには、アトミックにアクセスする必要がある設定が含まれています。次の例では、exampleCompositeSetting という名前のコンポジット設定を作成し、roamingSettings コンテナーに追加します。


' Composite setting

Dim composite As New Windows.Storage.ApplicationDataCompositeValue
composite("intVal") = 1
composite("strVal") = "string";

roamingSettings.Values("exampleCompositeSetting") = composite

ApplicationDataContainer.CreateContainer メソッドを呼び出し、設定コンテナーを作成します。次の例では、exampleContainer という名前の設定コンテナーを作成し、exampleSetting という名前の設定を追加します。ApplicationDataCreateDisposition 列挙体の Always 値は、コンテナーがまだない場合に作成されることを示します。


' Setting in a container

Dim container As Windows.Storage.ApplicationDataContainer = 
   roamingSettings.CreateContainer("exampleContainer", Windows.Storage.ApplicationDataCreateDisposition.Always)

If roamingSettings.Containers.ContainsKey("exampleContainer") Then
    roamingSettings.Containers("exampleContainer").Values("exampleSetting") = "Hello World"
End If

データを設定から読み取る

roamingSettings コンテナー内の exampleSetting 設定にアクセスするには、ApplicationDataContainer.Values プロパティを使います。


' Simple setting

Dim value As Object = roamingSettings.Values("exampleSetting")

roamingSettings コンテナー内の exampleCompositeSetting 設定にアクセスするには、ApplicationDataContainer.Values プロパティを使います。


' Composite setting

Dim composite As Windows.Storage.ApplicationDataCompositeValue = 
   CType(roamingSettings.Values("exampleCompositeSetting"), Windows.Storage.ApplicationDataCompositeValue)

If composite Is Nothing Then
   ' No data
Else
   ' Access data in composite("intVal") and composite("strVal")
End If

exampleContainer コンテナー内の exampleSetting 設定にアクセスするには、ApplicationDataContainer.Values プロパティを使います。


' Setting in a container

Dim hasContainer As Boolean = roamingSettings.Containers.ContainsKey("exampleContainer")
Dim hasSetting As Boolean = False

If hasContainer Then
    hasSetting = roamingSettings.Containers("exampleContainer").Values.ContainsKey("exampleSetting")
End If

データをファイルに書き込む

ローミング アプリ データ ストアにファイルを作って更新するには、Windows.Storage.StorageFolder.CreateFileAsyncWindows.Storage.FileIO.WriteTextAsync などのファイル API を使います。次の例では、roamingFolder コンテナーに dataFile.txt という名前のファイルを作り、現在の日付と時刻をファイルに書き込みます。CreationCollisionOption 列挙体の ReplaceExisting 値は、ファイルが既にある場合にファイルを置き換えることを示します。


Imports Windows.Globalization.DateTimeFormatting

Private Async Sub WriteTimestamp()
   Dim formatter As DateTimeFormatter = New DateTimeFormatter("longtime")

   Dim sampleFile As StorageFile = Await roamingFolder.CreateFileAsync("dataFile.txt", 
       CreationCollisionOption.ReplaceExisting)
   Await FileIO.WriteTextAsync(sampleFile, formatter.Format(DateTime.Now));
End Sub

データをファイルから読み取る

ローミング アプリ データ ストアのファイルを開いて読み取るには、Windows.Storage.StorageFolder.GetFileAsyncWindows.Storage.StorageFile.GetFileFromApplicationUriAsyncWindows.Storage.FileIO.ReadTextAsync などのファイル API を使います。この例では、前のセクションで作成した dataFile.txt ファイルを開き、ファイルから日付を読み取ります。さまざまな場所からファイル リソースを読み込む方法について詳しくは、「ファイル リソースを読み込む方法」をご覧ください。


Private Async Function ReadTimestamp() As Task
   Try
      Dim sampleFile As StorageFile = Await roamingFolder.GetFileAsync("dataFile.txt")
      Dim timestamp As string = Await FileIO.ReadTtextAsync(sampleFile)
      ' Data is contained in timestamp
   Catch e1 As Exception
      ' Timestamp not found
   End Try
End Function

完了した設定を削除する

exampleSetting 設定の操作が完了したら、ApplicationDataContainerSettings.Remove メソッドを呼び出してこの設定を roamingSettings コンテナーから削除します。


' Delete simple setting

roamingSettings.Values.Remove("exampleSetting")

exampleCompositeSetting コンポジット設定の操作が完了したら、ApplicationDataCompositeValue.Remove メソッドを呼び出してこのコンポジット設定を roamingSettings コンテナーから削除します。


' Delete composite setting

roamingSettings.Values.Remove("exampleCompositeSetting")

exampleContainer 設定コンテナーの操作が完了したら、ApplicationDataContainer.DeleteContainer メソッドを呼び出して設定コンテナーを削除します。


' Delete container

roamingSettings.DeleteContainer("exampleContainer")

さまざまな種類のデバイス間でデータをローミングする

アプリの 2 つのバージョン (Windows ストア用のバージョンと Windows Phone ストア用のバージョン) を公開する場合、2 種類の異なるデバイスで実行されているアプリ間でアプリ データをローミングできます。異なる種類のデバイス上の異なるバージョンのアプリ間でデータをローミングするには、アプリの各バージョンに同じパッケージ ファミリ名 (PFN) を割り当ててください。

詳しくは、「Windows ストア アプリと Windows Phone ストア アプリ間でデータをローミングする方法」をご覧ください。

注釈

各アプリには、ローミング アプリ データのクォータがあります。使うことができるローミング データの合計サイズを特定するには、ApplicationData.RoamingStorageQuota プロパティを確認します。ローミング データのサイズがクォータを超えると、サイズがクォータ未満に戻るまでデータがローミングされなくなります。

関連トピック

タスク
ファイル リソースを読み込む方法
クイック スタート: ローカル アプリ データ
クイックスタート: 一時アプリ データ
概念
Windows ランタイムを使ったアプリ データへのアクセス
ガイドライン
アプリのデータのローミングのガイドライン
辞書/リファレンス
Windows.Storage.ApplicationData
Windows.Storage.ApplicationDataCompositeValue
Windows.Storage.ApplicationDataContainer
Windows.Storage.ApplicationDataContainerSettings
サンプル
アプリケーション データ サンプルに関するページ

 

 

表示:
© 2016 Microsoft