0

我使用 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 表中的活动列何时以及如何更改?
任何想法如何去做?
谢谢

4

0 回答 0