HTML5/JavaScript を使用して WP8 用のアプリを開発しています。JavaScript の配列変数でユーザー設定を収集し、将来の使用のためにこれらを保存したいと考えています。より正確にするために、ローミング設定でそれらを保存します。
いくつかの調査の後、これはjsから直接不可能であるようです。Windows 8 でこのタスクを実行するために見つけた API 呼び出しは、WP8 では機能しません。したがって、私が思いつく唯一の回避策は構造です:
1)データを保存したいときは、jsから作成します
window.external.notify("LaunchSaveProcess");
ブラウザに通知を送信します。
2) XAML ファイル内
<phone:WebBrowser ScriptNotify="Catch_Script_Notification" />
ブラウザからC#に通知を配信する
3) C# で通知をキャッチ
private void Catch_Script_Notification(object sender, NotifyEventArgs e)
{ if (e.Value.StartsWith("LaunchSaveProcess")) {
//"important function"
} }
4) 「重要な関数」は、ユーザー設定の配列を返す JavaScript のメソッドを呼び出し、次を使用してデータを保存します。
var userSettings = Browser.InvokeScript("getSettings()");
var roamingSettings = Windows.Storage.ApplicationData.Current.RoamingSettings;
roamingSettings.Values["settings"] = userSettings;
いくつか質問があります。このモデルは正しいですか、それとももっと簡単な方法はありますか? 通知イベントを作成しているときに、何らかの方法で JavaScript から C# にパラメータを直接渡すことはできますか? 配列を roamingSettings に直接保存できますか、それとも切り詰めてすべてを個別に保存する必要がありますか?
明確にするために、usersettings 配列は 1 次元配列であり、「キー」と「値」のペアでオブジェクトをプッシュします。したがって、userSettings[i].key および .value 構文を使用して、ループ内のコンテンツに簡単にアクセスできます。