0

所以我一直在关注本教程: http: //www.windowsazure.com/en-us/develop/mobile/tutorials/get-started-with-push-dotnet

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

我想问的是“频道”表是干什么用的?现在,在我完成第二个教程之后,每次启动应用程序时都会在此表中创建一个新条目。

我想要做的是为一个用户提供一个频道(它们由我通过单点登录的实时 sdk 获得的 Live-User-ID 来区分)..

我正在做一个笔记应用程序,我该怎么做才能让每个用户只收到那些仅适用于他的用户 ID 的推送通知(新的笔记项目)?

我是否必须更改 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);
}

这是负责创建推送通道的代码。

4

1 回答 1

3

Channel 表本质上是存储所有访问该服务的用户的活动通道,但它不会清除旧的通道。由于 VS 每次都重新部署您的应用程序的方式,您每次都会得到一个新的。在商店部署的应用程序中,您不会看到这种行为;但是,频道确实会过期,只是不是每次运行应用程序时都会过期。由您的应用程序缓存最后使用的频道,可能在 LocalSettings 中,并在发布新频道时清除服务器端存储(本教程不做内务处理)。

不过,教程实现的工作方式似乎是,任何最近插入待办事项的人都会在其他人也进入时收到通知。在将频道与特定用户相关联的频道表中,我看不到任何内容。

也就是说,您可以添加这一点,但要意识到通道与特定用户在特定机器上的特定应用程序相关联,因此如果同一用户在两台不同机器上使用 ToDo 应用程序,则会有两个不同的“活动”通道对于该用户,通知将发送给两者。所以你真的不想要“一个用户一个频道”,你想要“一个用户每台机器一个频道”。

如果您将用户 ID 添加到 Channel 表中,并且还在插入中添加如下行中的位置:

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

你应该非常接近你正在寻找的东西。

于 2013-04-04T08:15:38.647 回答