为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 fcm_django 在 IO 上发送推送通知

如何使用 fcm_django 在 IO 上发送推送通知

三国纷争 2022-07-05 17:53:07
我正在使用这个插件从我的 Django REST 应用程序发送推送通知。https://github.com/xtrinch/fcm-django它适用于 android 端,但 IO 无法接收任何通知。谁能告诉我我在这里想念什么。以下是我的 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 回答

?
开心每一天1111

TA贡献1836条经验 获得超13个赞

我遇到了同样的问题,这个 repo 中有一个问题我设法从中尝试了一些解决方案


这个解决方案对我有用


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 中,为了提供后台通知,发送到 firebase 的 JSON 必须有一个键“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 的操作


content_available- 在 iOS 上,使用此字段表示APNs 有效负载中的可用内容。当发送通知或消息并将其设置为 true 时,将唤醒非活动客户端应用程序,并通过 APNs 作为静默通知发送消息,而不是通过 FCM 连接服务器。请注意,APN 中的静默通知不保证会传递,并且可能取决于用户打开低功耗模式、强制退出应用程序等因素。在 Android 上,默认情况下数据消息会唤醒应用程序。在 Chrome 上,目前不支持。


priority(也来自文档):


设置消息的优先级。有效值为“正常”和“高”。在 iOS 上,这些对应于 APN 优先级 5 和 10。


默认情况下,通知消息以高优先级发送,数据消息以普通优先级发送。正常优先级可优化客户端应用程序的电池消耗,除非需要立即交付,否则应使用此优先级。对于具有正常优先级的消息,应用程序可能会以未指定的延迟接收消息。


当以高优先级发送消息时,它会立即发送,并且应用程序可以显示通知。


如此处所述Firebase 消息传递-whats "content_available" :是 的,您也可以阅读文档以获取更多信息


查看完整回答
反对 回复 2022-07-05
  • 1 回答
  • 0 关注
  • 110 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信