我正在使用Push Sharp Library向Android设备发送推送通知。是否有任何方法可以一次性播放所有新闻?而不是分别向每个设备发送每个新闻?
IList<Device> deviceList = new List<Device>();
IList<PushNotification> newsList = new List<PushNotification>();
deviceList = //method to fetch Device list
newsList = //method to fetch newsList
push.RegisterGcmService(new GcmPushChannelSettings("MY GCM KEY"));
foreach (Device device in deviceList)
{
if (device.DeviceType == "android")
{
foreach (PushNotification news in newsList)
{
push.QueueNotification(new GcmNotification().ForDeviceRegistrationId(device.PushToken).WithJson("{\"NewsTitle\":\"" + news.NewsTitle + "\"}"));
Thread.Sleep(5000);
}
}
}
Console.WriteLine("Waiting for Queue to Finish...");
//Stop and wait for the queues to drains
push.StopAllServices();
还有一个与此相关的问题:当用户重新安装应用程序时,我的表跨设备ID存储注册ID会获得重复的条目。因此用户获得两次或三次相同的通知。怎么解决这个?保持设备ID作为主键会做什么?但我注意到,有时重新安装后设备ID也会发生变化。 提前谢谢......
答案 0 :(得分:0)
这可能会对你有所帮助
private void PushGCM(List<string> registerationIds)
{
var push = new PushBroker();
push.RegisterGcmService(new GcmPushChannelSettings("applicationID"));
GcmNotification gcmNotifiction = new GcmNotification();
gcmNotifiction.RegistrationIds.AddRange(registerationIds);
gcmNotifiction.WithJson(@"{""alert"":""Hello World!"",""badge"":7,""sound"":""sound.caf""}");
//Stop and wait for the queues to drains
push.StopAllServices();
}
答案 1 :(得分:0)
1)您可以使用Windows服务和石英调度程序(在按钮单击时触发)来处理推送通知(如果我已正确理解您的问题!)
有关石英的信息,请参阅以下内容:
http://www.quartz-scheduler.net/documentation/quartz-2.x/tutorial/index.html
2)关于重复条目,我认为您应该使用新令牌(与deviceid匹配)更新现有设备,而不添加新令牌或使旧版本处于非活动状态。
并且,我不认为每次重新安装时设备ID都会发生变化。只有设备令牌(注册ID)会发生变化。