Как отправить уведомление pu sh на IOs с помощью fcm_django - PullRequest
1 голос
/ 22 января 2020

Я использую этот плагин для отправки уведомлений pu sh из моего приложения Django REST.

https://github.com/xtrinch/fcm-django

Он отлично работает для android сторона, но IOs не может получать никаких уведомлений. Кто-нибудь, пожалуйста, скажите мне, что я здесь скучаю.

Ниже приведены мои конфигурации fcm_ django:

FCM_DJANGO_SETTINGS = {
    "APP_VERBOSE_NAME": "app-name",
    "FCM_SERVER_KEY": "<firebase-server-key>",
    "ONE_DEVICE_PER_USER": True,
    "DELETE_INACTIVE_DEVICES": False,
}

Ниже приведен мой код, который я использую для отправки уведомления на устройство:

data = {
        "title": 'New Notification fired',
        "body": 'I just fired a new notification'}
devices.send_message(data=data)

Результаты в следующем успешном ответе:

{'multicast_ids': [1212322313231212], 'success': 1, 'failure': 0, 'canonical_ids': 0, 'results': [{'message_id': '0:1579690926842318%a93f219bf9fd7ecd'}], 'topic_message_id': None}

Любая помощь в этом отношении высоко ценится. Спасибо за ваше время.

1 Ответ

1 голос
/ 23 января 2020

Я столкнулся с той же проблемой, была проблема в этом репо. Мне удалось попробовать какое-то решение из него

это решение хорошо работает для меня

data = {
    "title": 'New Notification fired',
    "body": 'I just fired a new notification'
}
kwargs = {
        "content_available": True,
        'extra_kwargs': {"priority": "high", "mutable_content": True, 'notification': data },
}
for device in devices:
        if device.type == 'ios':
            device.send_message(sound='default', **kwargs)
        else:
            device.send_message(data=data)

Попробуйте это я убедитесь, что он будет работать так, как я использую во всех моих проектах

, а затем улучшите его с помощью этого

devices.objects.filter(type='ios').send_message(sound='default', **kwargs)
devices.objects.exclude(type='ios').send_message(data=data)

редактировать "дополнительные разъяснения"

в iOS, чтобы предоставить фоновое уведомление, JSON, отправляемый в firebase, ДОЛЖЕН иметь ключ "content_available": true и другие проблемы, при которых в уведомлении нет звука. это мой рабочий json со звуковым и фоновым уведомлением для iOS.

{ 
   "data":{  
      "key":"...firebaseserverkey..." 
   },
   "content_available" : true,
   "notification":{ 
       "sound": "default",
       "title": "...",
       "body":"..."
   },
 "to":"...devicetoken..." 
}

просто попробуйте отправить запрос с этим телом с помощью почтальона с этим URL https://fcm.googleapis.com/fcm/send это будет делать то, что fcm- django do

content_available - при iOS, используйте это поле для представления content-available в полезной нагрузке APN. Когда отправляется уведомление или сообщение, и для него установлено значение true, неактивное клиентское приложение пробуждается, и сообщение отправляется через APN в виде тихого уведомления, а не через сервер соединений FCM. Обратите внимание, что тихие уведомления в APN не гарантируются, и могут зависеть от таких факторов, как включение пользователем режима пониженного энергопотребления, принудительное завершение работы приложения и т. Д. c. На Android сообщения данных по умолчанию активируют приложение. На Chrome, в настоящее время не поддерживается.

priority (также из документов):

Устанавливает приоритет сообщения. Допустимые значения: «нормальный» и «высокий». На iOS они соответствуют приоритетам APN 5 и 10.

По умолчанию уведомления отправляются с высоким приоритетом, а сообщения данных - с обычным приоритетом. Обычный приоритет оптимизирует потребление батареи клиентским приложением и должен использоваться, если не требуется немедленная доставка. Для сообщений с обычным приоритетом приложение может получать сообщение с неопределенной задержкой.

Когда сообщение отправляется с высоким приоритетом, оно отправляется немедленно, и приложение может отображать уведомление.

как упомянуто здесь Обмен сообщениями в Firebase - что такое "content_available": true также вы можете прочитать документы для получения дополнительной информации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...