通过推送通知更新辅助磁贴

时间:2013-07-15 13:36:00

标签: windows-8 push-notification windows-store-apps tiles

我使用此代码固定了辅助磁贴:

string secondaryTileId = "1";

var tile = new SecondaryTile(secondaryTileId, "Short name", "Display name", 
    "ActivationArgument", TileOptions.ShowNameOnLogo, photoUri);
var result = await tile.RequestCreateForSelectionAsync(...);

我是否可以通过推送通知(来自我的后端)仅更新此辅助磁贴?如果是 - 我应该把这个ID放在这个xml中?:

<?xml version='1.0' encoding='utf-8'?>
<tile>
    <visual lang="en-US">
        <binding template="TileSquarePeekImageAndText02">
            <image id="1" src="{0}"/>
            <text id="1">{1}</text>
            <text id="2">{2}</text>
        </binding>
    </visual>
</tile>

我尝试为tile节点添加属性Id =“1”或TileId =“1”但没有运气(它仅更新主要磁贴)

1 个答案:

答案 0 :(得分:2)

推送通知始终通过通道URI发送,每个通道URI都绑定到特定的磁贴+用户+设备。因此,如果您要发送主要磁贴的通道URI(来自PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync,在Windows.Networking.PushNotifications中),该通知将始终以该磁贴结束。有一个例外,我稍后会解释。

通常,对于辅助磁贴,您可以通过[CreatePushNotificationChannelForSecondaryTileAsync][2] API获取自己的频道。您需要将此频道的URI发送到您的服务,方法与发送主要磁贴的方式相同。

但是,如果您想直接接收和处理推送通知,则可以将主要磁贴通道用于此目的。也就是说,“ChannelForApplication”通道用于主要图块,Toast和原始通知等,因此它与主图块的链接只是其使用的一部分。无论如何,为了处理通知,您订阅了Channel对象的PushNotificationReceived事件,您可以在其中拦截通知,检查您想要放入的任何自定义标签,并根据需要将其路由到辅助磁贴。

当然,这只适用于正在运行的应用。要在不运行时执行此操作,需要使用PushNotificationTrigger进行后台任务,您基本上会在同一时间执行此任务。