2

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 構文を使用して、ループ内のコンテンツに簡単にアクセスできます。

4

2 に答える 2