我使用 django 和 django-push-notifications包来发送带有 Legacy FCM 的推送通知。发送推送通知时,我想知道哪些用户收到/没有收到消息。
由于我的数据库的构建方式和我正在使用的消息传递逻辑,我不能只使用devices.send_message()
func 一次发送给所有用户。那会很棒,因为我会success
像这样在 HTTP 响应中获得计数:
{ "multicast_id": 108,
"success": 1,
"failure": 0,
"results": [
{ "message_id": "1:08" }
]
}
相反,我需要遍历一组用户并通过调用分别发送每个用户device.send_message()
。
现在,我知道我可以保存每条消息的响应并用某种计数器对它们进行计数,但这真的行不通,因为我使用单独的线程来处理发送消息,并等待数千条消息发送将破坏使用线程的目的。
目前,我在发送通知后使用此代码来了解已发送/未发送多少:
all_users = queryset.count()
active_fcm = GCMDevice.objects.filter(user_id__in=queryset.values_list('id', flat=True), active=True).count()
return Response({
'sent': active_fcm,
'not_sent': all_users - active_fcm
}, status=status.HTTP_201_CREATED)
我注意到这不是 100% 准确的,因为活动字段并不总是反映实际用户的状态。我删除了应用程序,活动字段仍然是 True。
push_notifications_gcmdevice 表中的活动列何时以及如何更改?
任何想法如何去做?
谢谢