send_message() 缺少 1 个必需的位置参数:'message'

send_message() missing 1 required positional argument: 'message'

我正在使用 fcm-django 在 Django 中开发通知功能。我能够 运行 我在本地主机(开发服务器)上的代码,但是当我将相同的代码部署到生产服务器时,它抛出错误:

send_message() missing 1 required positional argument: 'message'

models.py:

class All_Device_Notification(models.Model):
    title = models.TextField(default="")
    description = models.TextField(default="")
    link = models.TextField(default="")

    def __str__(self):
        return self.title

    def save(self, *args, **kwargs):
        filtered_users = User.objects.all()
        devices = FCMDevice.objects.filter(user__in=list(filtered_users))
        devices.send_message(title=self.title, body=self.description, click_action=self.link)
        super(All_Device_Notification, self).save(*args, **kwargs)

如果我在本地主机(开发服务器)上编译代码并且运行良好,那么为什么我在生产服务器中遇到错误?

您在开发服务器上使用的是 fcm-django < 1,但在生产服务器上是最新的。

生产服务器上的问题修复是限制需求文件中的版本。

requirements.txt:

# fcm-django
fcm-django < 1

您可能需要考虑 Migration to v1.0

要在开发服务器上安装最新版本,运行 pip install 升级标志:

pip install -U fcm-django

要降级到较低版本:

pip install 'fcm-django<1'

fcm-django < 1中的用法:https://fcm-django.readthedocs.io/en/archive-pyfcm/

devices.send_message(title=self.title, body=self.description, click_action=self.link)

最新版本fcm-django中的用法:https://fcm-django.readthedocs.io/en/latest/

from firebase_admin.messaging import Message, Notification

devices.send_message(
    Message(
        notification=Notification(title=self.title, body=self.description),
        android=AndroidNotification(click_action=self.link),
        apns=APNSConfig(payload=APNSPayload(aps=Aps(category=self.link))),
    )
)