Push-уведомление от устройства к устройству с использованием Android gcm без стороннего сервера

#android #google-cloud-messaging

# #Android #google-cloud-обмен сообщениями

Вопрос:

Мы планируем создать приложение для обмена сообщениями / чатов на Android.Мы планируем использовать GCM для обмена сообщениями.Традиционный способ — иметь сервер приложений для хранения всех gcmid пользователей и, если пользователь1 хочет отправить сообщение пользователю 2,

1. Пользователь1 отправляет сообщение на сервер приложений с полезной нагрузкой, которая содержит сообщение и идентификатор получателя, т.е. user2 2. Сервер приложений извлекает gcmid пользователя 2 и вызывает sender.send (regid2 , message) 3. Пользователь2 получает сообщение.

Я вижу, что это просто вызов REST API для https://android.googleapis.com/gcm/send .

Итак, если каким-то образом user1 имеет gcmid user2, почему мы не можем напрямую вызвать gcm API с устройства user1, чтобы снизить нагрузку на сервер и стоимость операций на сервере.Пожалуйста, сообщите мне об этом.

Примечание: Мы не планируем использовать восходящий поток

Комментарии:

1. вы решили свою проблему? можете ли вы отправлять данные на другой Android без использования сервера?

Ответ №1:

я сделал то же самое, используя Device_To_Device_Messaging_Using_Google_Cloud_Messaging_GCM_-_Android_Example учебное пособие. у этого тут есть complate sever, а также клиентский код с использованием gcm. пройдите через это, это поможет вам достичь того, чего вы хотите.

Комментарии:

1. Спасибо за информацию. Мы смогли выполнить push через устройство напрямую без сервера. Мой запрос заключается в том, чтобы узнать, подходит ли это для этого, и предвидите ли вы какие-либо проблемы в будущем

2. аааа, слишком много ограничений в использовании этого, потому что вы не можете отправлять более 4 КБ данных.push-уведомления занимают даже время. а также вы не можете передавать файлы, такие как аудио, видео, изображения. и т.д.

3. в предложенном вами примере все еще используется server. как это решает проблему?

Ответ №2:

Итак, если у пользователя 1 каким-то образом есть идентификатор gcmid пользователя 2…

Я думаю, что именно в этом и заключается сложность. Если вы вызываете GCM API напрямую с устройства, вам необходимо передать gcmid с одного устройства на другие, и, безусловно, самое простое и масштабируемое решение, которое я могу придумать, — это использовать сервер, доступный со всех устройств.

Комментарии:

1. Я хотел бы сохранить gcm всех друзей пользователей на устройстве, чтобы уменьшить зависимость от сервера и, следовательно, снизить ежедневные затраты на обслуживание GAE, в котором мы планируем запустить сервер.. Итак, я хотел бы знать, правильно ли выполнять вызов gcm непосредственно с устройства Android