【问题标题】:Mobile Service Azure Push URI移动服务 Azure 推送 URI
【发布时间】:2013-04-03 17:59:41
【问题描述】:

所以我一直在关注本教程: 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);
}

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

【问题讨论】:

    标签: c# azure windows-8 push


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-14
      相关资源
      最近更新 更多