2013-04-03 20 views
0

所以我一直按照本教程: http://www.windowsazure.com/en-us/develop/mobile/tutorials/get-started-with-push-dotnet移動服務Azure的推URI

和第二教程 http://www.windowsazure.com/en-us/develop/mobile/tutorials/push-notifications-to-users-dotnet/

什麼,我想問一下是什麼表「通道」? 現在完成第二個教程後,每次啓動應用程序時都會創建此表中的新條目。

我想要做的是有一個信道爲一個用戶(它們是由活的用戶ID,我通過與單點登錄直播SDK得到區分)..

Im做一個筆記應用程序,我有什麼要做,所以每個用戶只能得到這些推送通知(新的筆記項),這只是他的用戶名?

是否必須在Azure管理門戶的「插入」腳本中更改任何內容?

private async void AcquirePushChannel() 
{ 
    CurrentChannel = 
    await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync(); 


    IMobileServiceTable<Channel> channelTable = App.MobileService.GetTable<Channel>(); 
    var channel = new Channel { Uri = CurrentChannel.Uri }; 
    await channelTable.InsertAsync(channel); 
} 

這是負責推送通道創建的代碼。

回答

3

頻道表本質上是存儲所有已經訪問該服務的用戶的活動頻道,但它並沒有清除舊頻道。你每次都會得到一個新的,因爲VS每次都會重新部署你的應用。在商店部署的應用程序中,您不會看到該行爲;然而,頻道會過期,而不是每次運行應用時。這取決於您的應用程序緩存上次使用的頻道,可能在LocalSettings中,並在發佈新內容時清除服務器端存儲(本教程不包含這些內務)。

教程實現似乎工作的方式是,任何最近插入todo項目的人都會在其他人輸入時得到通知。我無法在頻道表中看到將頻道與特定用戶相關聯的信息。

也就是說,您可以補充一點,但是要意識到該通道與特定用戶的特定機器上的特定應用程序相關聯,因此如果同一用戶在兩臺不同機器上使用ToDo應用程序,則會有兩種不同的該用戶的'活躍'頻道,並且通知將被髮送到兩者。所以你並不是真的想要「一個用戶只有一個頻道」,你想要「每個用戶每個機器只有一個頻道」。

如果你的用戶ID添加到頻道表,並在插入沿線的增加,其中:

var channelTable = tables.getTable('Channel').where({userId : userId}); 

你應該得到相當接近你在找什麼。