Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 8 在不运行应用程序的情况下,以固定间隔更新live tile_Windows 8_Microsoft Metro_Winjs_Live Tile - Fatal编程技术网

Windows 8 在不运行应用程序的情况下,以固定间隔更新live tile

Windows 8 在不运行应用程序的情况下,以固定间隔更新live tile,windows-8,microsoft-metro,winjs,live-tile,Windows 8,Microsoft Metro,Winjs,Live Tile,如何使用JavaScript以固定的时间间隔(例如半天)更新应用程序的live互动程序 此外,即使应用程序本身没有运行,它也必须能够更新(例如天气应用程序) 编辑:我想在本地更新它,而不必连接到internet。请给出一些JavaScript的例子,而不是C#please 更具体地说,例如,如何将互动程序设置为每天更新一次,显示当前日期?您使用Azure和推送通知向所有应用程序用户发送通知:您使用Azure和推送通知向所有应用程序用户发送通知:您可以按计划使用后台任务,时间间隔超过15分钟。这些

如何使用JavaScript以固定的时间间隔(例如半天)更新应用程序的live互动程序

此外,即使应用程序本身没有运行,它也必须能够更新(例如天气应用程序)

编辑:我想在本地更新它,而不必连接到internet。请给出一些JavaScript的例子,而不是C#please


更具体地说,例如,如何将互动程序设置为每天更新一次,显示当前日期?

您使用Azure和推送通知向所有应用程序用户发送通知:

您使用Azure和推送通知向所有应用程序用户发送通知:

您可以按计划使用后台任务,时间间隔超过15分钟。这些任务设计为由与应用程序分开的操作系统运行,因此,如果应用程序未处于活动状态或未打开状态,则将执行这些任务。
下面是一篇关于背景任务入门的详细博文:

您可以按计划使用背景任务,间隔时间超过15分钟。这些任务设计为由与应用程序分开的操作系统运行,因此,如果应用程序未处于活动状态或未打开状态,则将执行这些任务。
下面是一篇关于背景任务入门的详细博文:

如果磁贴上的内容将是日期,则计划的磁贴更新是一个不错的选择(请参阅和MSDN上的)。您可以将通知安排为每天发生一次,以日期作为内容

如果您可以支持web服务,那么定期更新将是一个不错的选择。使用这种方法,无论应用程序是否正在运行,都会以固定的时间间隔更新磁贴。或者,您可以使用推送,或者使用后台任务更新磁贴


MSDN提供了一篇关于选择正确的通知传递机制的好文章,并提供了相关代码示例的链接:

如果互动程序上的内容是日期,则计划的互动程序更新是一个不错的选择(请参阅和MSDN上的)。您可以将通知安排为每天发生一次,以日期作为内容

如果您可以支持web服务,那么定期更新将是一个不错的选择。使用这种方法,无论应用程序是否正在运行,都会以固定的时间间隔更新磁贴。或者,您可以使用推送,或者使用后台任务更新磁贴


MSDN有一篇关于选择正确的通知传递机制的好文章,以及相关代码示例的链接:

我建议您创建一个Azure移动服务。它非常简单且便宜,意味着您可以利用单独推送服务(而不是设备上的计划磁贴通知)的所有优点发送推送通知,但无需所有工作。如果愿意,您可以注册免费试用,并免费创建多达10项移动服务。您只需创建一个移动服务,然后创建一个每12小时运行一次的计划脚本,并在脚本中编写一点服务器端JavaScript代码来执行推送。这只是移动服务给你的东西之一。您还可以获得数据、身份验证等。www.windowsazure.com

我建议您创建一个Azure移动服务。它非常简单且便宜,意味着您可以利用单独推送服务(而不是设备上的计划磁贴通知)的所有优点发送推送通知,但无需所有工作。如果愿意,您可以注册免费试用,并免费创建多达10项移动服务。您只需创建一个移动服务,然后创建一个每12小时运行一次的计划脚本,并在脚本中编写一点服务器端JavaScript代码来执行推送。这只是移动服务给你的东西之一。您还可以获得数据、身份验证等。www.windowsazure.com

注册一个每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”中,您编写了Live Tile更新程序的代码:

(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();
})();
(函数(){
“严格使用”;
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.CreateTileUpdateForApplication();
tileUpdateManager.clear();
tileUpdateManager.enableNotificationQueue(true);
对于(变量i=0;i<6;i++){
var tileWideXml=Notifications.TileUpdateManager.getTemplateContent(Notifications.TileTemplateType.tileSquare150x150Text04),
tileAttributes=tileWideXml.getElementsByTagName(“文本”);
tileAttributes[0].appendChild(tileWideXml.createTextNode(“我的实时互动程序文本编号”+i));
var currentTime=新日期(),
dueTime=新日期(currentTime.getTime()+30),
tileNotification=新通知。ScheduledTileNotification(xmlTile,dueTime),
tileUpdater=Notifications.TileUpdateManager.CreateTileUpdateForApplication();
tileUpdater.addToSchedule(tileNotification);
}
backgroundTaskInstance.succeed=true;
close();
})();

最后,不要忘记在appxmanifest中注册backgroundtask。在“声明”下选择“后台任务”,激活“计时器”,并将“起始页”设置为“App_JS\LiveTileTask.JS”。这样,您应该能够更新互动程序。

注册一个每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”中,您编写了Live Tile更新程序的代码:

(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();
})();
(函数(){
“严格使用”;
importScripts(“//Microsoft.Phone.WinJS.2.1/js/base.js”);
var backgroundTaskInstance=Windows.UI.WebUI.WebUIBackgroundTaskInstance.current;
var Notifications=Windows.UI.Notifications;
var tileUpdateManager=Notifications.T