JavaScriptを使用して、アプリのライブタイルを一定の間隔(たとえば半日)で更新するにはどうすればよいですか?
さらに、アプリ自体が実行されていなくても更新できる必要があります(たとえば天気アプリなど)
編集:インターネットに接続せずにローカルで更新したい。そして、C#ではなくJavaScriptでいくつか例を挙げてください!
具体的には、たとえば、現在の日付を表示して1日に1回更新するようにタイルを設定するにはどうすればよいですか?
JavaScriptを使用して、アプリのライブタイルを一定の間隔(たとえば半日)で更新するにはどうすればよいですか?
さらに、アプリ自体が実行されていなくても更新できる必要があります(たとえば天気アプリなど)
編集:インターネットに接続せずにローカルで更新したい。そして、C#ではなくJavaScriptでいくつか例を挙げてください!
具体的には、たとえば、現在の日付を表示して1日に1回更新するようにタイルを設定するにはどうすればよいですか?
タイルのコンテンツが日付になる場合は、スケジュールされたタイルの更新が適切なオプションです(MSDNのJavaScriptのスケジュールされた通知のサンプルScheduledTileNotification
を参照してください)。日付をコンテンツとして、通知が1日1回発生するようにスケジュールできます。
Webサービスを立ち上げることができれば、定期的な更新が適切なオプションになります。このアプローチを使用すると、アプリが実行されているかどうかに関係なく、タイルが一定の間隔で更新されます。または、プッシュを使用するか、バックグラウンドタスクを使用してタイルを更新することもできます。
MSDNには、適切な通知配信メカニズムの選択に関する優れた記事と、関連するコードサンプルへのリンクがあります:http://msdn.microsoft.com/en-us/library/windows/apps/hh779721.aspx
15分を超える間隔で、スケジュールに基づいてバックグラウンドタスクを使用できます。タスクは、アプリケーションとは別のOSによって実行されるように設計されているため、アクティブでないか開いていない場合に実行されます。バックグラウンドタスクの開始に関する詳細なブログ投稿は次のとおりです。http ://www.silverlightshow.net/items/Windows-8-metro-make-your-app-alive-with-background-tasks.aspx
12時間ごとに実行され、タイルを更新するバックグラウンドタスクを登録します。
var RegisterBackgroundTask = function (taskEntryPoint, taskName, trigger, condition) {
UnregisterTask(taskName);
Windows.ApplicationModel.Background.BackgroundExecutionManager.requestAccessAsync();
var TaskBuilder = new Windows.ApplicationModel.Background.BackgroundTaskBuilder();
TaskBuilder.name = taskName;
TaskBuilder.taskEntryPoint = taskEntryPoint;
TaskBuilder.setTrigger(trigger);
if (condition !== null) {
TaskBuilder.addCondition(condition);
// If the condition changes while the background task is executing then it will be canceled.
TaskBuilder.cancelOnConditionLoss = true;
}
var task = TaskBuilder.register();
// Remove previous completion status from local settings.
var settings = Windows.Storage.ApplicationData.current.localSettings;
settings.values.remove(taskName);
};
var UnregisterBackgroundTask = function (sTaskName) {
var iter = Windows.ApplicationModel.Background.BackgroundTaskRegistration.allTasks.first();
var hascur = iter.hasCurrent;
while (hascur) {
var cur = iter.current.value;
if (cur.name === sTaskName) {
cur.unregister(true);
}
hascur = iter.moveNext();
}
}
次のようなタスクの登録:
RegisterTask(
"App_JS\\LiveTileTask.js",
"Task.LiveTileTask",
new Windows.ApplicationModel.Background.TimeTrigger(15, false),
new Windows.ApplicationModel.Background.SystemCondition(Windows.ApplicationModel.Background.SystemConditionType.internetAvailable)); // 15 min are minimum
専用ファイル「LiveTileTask.js」に、LiveTileUpdaterのコードを記述します。
(function () {
"use strict";
importScripts("//Microsoft.Phone.WinJS.2.1/js/base.js");
var backgroundTaskInstance = Windows.UI.WebUI.WebUIBackgroundTaskInstance.current;
var Notifications = Windows.UI.Notifications;
var tileUpdateManager = Notifications.TileUpdateManager.createTileUpdaterForApplication();
tileUpdateManager.clear();
tileUpdateManager.enableNotificationQueue(true);
for (var i = 0; i < 6; i++) {
var tileWideXml = Notifications.TileUpdateManager.getTemplateContent(Notifications.TileTemplateType.tileSquare150x150Text04),
tileAttributes = tileWideXml.getElementsByTagName("text");
tileAttributes[0].appendChild(tileWideXml.createTextNode("My Live Tile Text No. " + i));
var currentTime = new Date(),
dueTime = new Date(currentTime.getTime() + 30),
tileNotification = new Notifications.ScheduledTileNotification(xmlTile, dueTime),
tileUpdater = Notifications.TileUpdateManager.createTileUpdaterForApplication();
tileUpdater.addToSchedule(tileNotification);
}
backgroundTaskInstance.succeeded = true;
close();
})();
最後に、appxmanifestにbackgroundtaskを登録することを忘れないでください。「宣言」の下で「バックグラウンドタスク」を選択し、「タイマー」をアクティブにして、「スタートページ」を「App_JS\LiveTileTask.js」に設定します。このようにして、タイルを更新できるはずです。
Azureとプッシュ通知を使用して、すべてのアプリユーザーに通知を送信します:http://msdn.microsoft.com/en-us/library/windows/apps/hh465460.aspx
Azureモバイルサービスを作成することをお勧めします。それは本当に簡単で安価であり、プッシュ通知を送信するために(デバイスでスケジュールされたタイル通知の代わりに)個別のプッシュサービスのすべての利点を得ることができますが、すべての作業は必要ありません。必要に応じて無料トライアルにサインアップし、最大10個のモバイルサービスを無料で作成できます。モバイルサービスを作成してから、12時間ごとに実行されるスケジュールされたスクリプトを作成し、そのスクリプトで、プッシュを実行するサーバー側のJavaScriptコードを少し記述します。これは、モバイルサービスが提供するものの1つにすぎません。また、データ、認証なども取得できます。www.windowsazure.com