Django通过Firebase Cloud Messaging发送主题通知的实现求助
Django FCM 主题通知发送实现方案
你当前使用的FCMNotification(django-fcm核心依赖PyFCM提供)原生支持主题推送能力,无需更换依赖,直接调用对应方法即可。
代码改造步骤
1. 新增主题推送函数
保留原有单设备推送函数,新增如下专用主题推送逻辑:
def send_topic_notification(topic_name, message_title, message_body, extra_data=None): try: push_service = FCMNotification(api_key=FCM_DJANGO_SETTINGS['FCM_SERVER_KEY']) # 调用原生主题推送接口 result = push_service.notify_single_topic( topic_name=topic_name, message_title=message_title, message_body=message_body, data_message=extra_data if extra_data else {} ) return result except Exception as e: # 建议补充错误日志输出,避免空捕获丢失问题 print(f"主题推送异常: {str(e)}") return None
2. 改造业务视图
修改原有send_noti视图,无需硬编码设备注册码,直接传入目标主题名即可:
def send_noti(request): # 替换为实际需要推送的主题名称,需和设备端订阅的主题完全一致 target_topic = "your_target_topic" send_topic_notification(target_topic, "通知标题", "通知正文") return JsonResponse({"status": "success"}, safe=False)
注意事项
- 主题名称仅可包含大小写字母、数字、下划线、连字符、点,不能以特殊字符开头
- 若需同时向多个主题推送,可调用
notify_multiple_topics方法,传入主题列表即可 - 设备端仅需调用FCM SDK的主题订阅接口完成关联,无需将设备注册码回传后端存储,适配你不想修改现有前端上报逻辑的需求
内容的提问来源于stack exchange,提问作者Salah
相关产品推荐
相关产品推荐

