如何使用Push sharp library for Android一次发送多个推送通知?

时间:2014-09-05 06:32:51

标签: c# android asp.net push-notification pushsharp

我正在使用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也会发生变化。 提前谢谢......

2 个答案:

答案 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)会发生变化。