Как отправить несколько Push-уведомлений одновременно, используя библиотеку Push Sharp для Android?

Я использую библиотеку Push Sharp для отправки push-уведомлений на устройства 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();

Еще один вопрос, связанный с этим: моя таблица, в которой хранятся идентификаторы регистрации для идентификаторов устройств, получает повторяющиеся записи, когда пользователь переустанавливает приложение. Таким образом, пользователь получает одно и то же уведомление дважды или трижды. Как это решить? сохранить идентификатор устройства в качестве первичного ключа подойдет? Но я заметил, что иногда идентификатор устройства также меняется после переустановки. Заранее спасибо...


person Avn    schedule 05.09.2014    source источник


Ответы (2)


это может тебе помочь

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();

    }
person Youssef Ali Youssef    schedule 16.11.2014
comment
но вам все равно нужно сделать цикл по новостям, чтобы отправлять уведомления для каждой, но нет необходимости делать это с регистрационными идентификаторами - person Youssef Ali Youssef; 16.11.2014

1) Вы можете использовать службу Windows и кварцевый планировщик (запускается при нажатии кнопки) для обработки push-уведомлений (если я правильно понял ваш вопрос!)

Информацию о кварце см. на следующей странице:
http://www.quartz-scheduler.net/documentation/quartz-2.x/tutorial/index.html

2) Что касается повторяющихся записей, я думаю, вам следует обновить существующее устройство новым токеном (совпадающим с идентификатором устройства), не добавляя новый или делая старый неактивным.

И я не думаю, что идентификатор устройства меняется при каждой переустановке. Меняется только токен устройства (идентификатор регистрации).

person Ramya    schedule 12.12.2014