2013-07-15 52 views
1

我固定使用此代碼的二次瓷磚:更新通過推送通知次平鋪

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> 

我嘗試添加屬性ID =「1」或TileId =「1」瓦節點,但沒有運氣(這僅更新主要平鋪)

回答

2

推送通知始終通過通道URI發送,每個通道URI都綁定到特定的tile +用戶+設備。因此,如果您發送到主要磁貼的頻道URI(從PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync,在Windows.Networking.PushNotifications中),該通知將始終在該磁貼上結束。我會稍後解釋一個例外。

通常,對於輔助拼貼,您可以通過[CreatePushNotificationChannelForSecondaryTileAsync][2] API獲取自己的頻道。您需要將此頻道的URI發送到您的服務,方法與發送主頻道相同。

但是,如果您想要直接接收和處理推送通知,那麼您可以使用主要磁貼通道來達到此目的。也就是說,「ChannelForApplication」頻道用於主要瓦片,吐司和原始通知,所以它與主要瓦片的鏈接僅僅是其使用的一部分。無論如何,爲了處理通知,您可以訂閱Channel對象的PushNotificationReceived事件,在該事件中,您可以攔截通知,檢查要放入其中的任何自定義標記,並根據需要將其路由到輔助磁貼。

當然,這隻適用於正在運行的應用程序。要在沒有運行時執行此操作,需要使用PushNotificationTrigger的後臺任務,基本上可以在同一時間完成。

+0

謝謝你的解釋! – Nagg