Firebase Cloud Messaging не работает для программно отправленных сообщений с помощью Python

Если я захожу в консоль firebase и настраиваю кампанию, мои конечные устройства получают уведомления просто отлично, но для сообщений конкретным устройствам с использованием регистрационного маркера устройства, отправленных из django/python, я не получаю уведомлений на своих мобильных устройствах.

Не уверен, что это имеет значение, но мое приложение все еще находится в разработке, оно не в производстве, так что если это имеет значение, пожалуйста, дайте мне знать.

Мой фронтенд - flutter, вот код flutter, который я использую для получения регистрационного токена и отправки его в бэкенд:

Future<StreamedResponse> AddProductPut(context, pk, name, quantity, cost, selling, XFile? chosenImage) async {
  String id_token = await FirebaseAuth.instance.currentUser!.getIdToken();
  late String? fcm_token;
  await FirebaseMessaging.instance.getToken().then((token) async {
    fcm_token = token!;
  }).catchError((e) {
    print(e);
  });
  print(fcm_token);
  var url = backend + "/pm/createproduct/" + pk.toString() + "/";
  var request = http.MultipartRequest('PUT', Uri.parse(url));
  print("FCM TOKEN");
  print(fcm_token);
  request.headers["Authorization"] = "Token " + id_token;
  request.fields["name"] = name;
  request.fields["quantity"] = quantity.toString();
  request.fields["cost_price"] = cost.toString();
  request.fields["selling_price"] = selling.toString();
  request.fields["barcode"] = "11111";
  request.fields["token"] = fcm_token!;
  request.files.add(
      await http.MultipartFile.fromPath(
          'image',
          chosenImage!.path
      )
  );

  return await request.send();
}

Вот код python в моем сериализаторе django для отправки уведомления:

registration_token = self.context['request'].data["token"],
        print(registration_token[0])
        print(type(registration_token[0]))
        # See documentation on defining a message payload.
        message = Message(
            notification=Notification(
                title='New Product Added',
                body='A new product called ' + validated_data['name'] + ' has been added to your account.',
            ),
            token=registration_token[0]
        )

        # Send a message to the device corresponding to the provided
        # registration token.
        response = send(message)
        print(response)

Я не получаю никаких ошибок в моей консоли django/python при отправке этого сообщения, и ответ печатает что-то вроде этого:

projects/<project name>/messages/16641.......0329

Мой регистрационный токен выглядит следующим образом:

cmLYCAbL0EsJrxppKzXvhF:APA..............qdt5ySYLbkQC_bpqwL6RdCwSzK_tX8iclp-e0QZB................lgw9g2eFNzfXpn2C4U................UnMphyWa6L9d-wUg

Не уверен, в чем проблема, но теперь я получаю сообщения FCM на Apple и Android...

            registration_token = subuser.fcm
            print(registration_token)
            message = Message(
                notification=Notification('Added As A Sub-User', f'A user with the phone {instance.userprofile.phone} has added you to their account as a sub user.'),
                token=registration_token
            )

и мой код flutter, который обновляет базу данных с регистрационным токеном fcm пользователя...

    FirebaseMessaging.instance.getToken().then((token) async {
      print(token);
      String id_token = await FirebaseAuth.instance.currentUser!.getIdToken();
      String uid = await FirebaseAuth.instance.currentUser!.uid;
      final result = await http.put(
        Uri.parse(backend + "/pm/setfcm/" + uid + "/"),
        headers: {
          "Content-Type": "application/json",
          "Authorization": "Token " + id_token
        },
        body: jsonEncode({
          "fcm": token,
        })
      );
    }).catchError((e) {
      print(e);
    });

    FirebaseMessaging.instance.onTokenRefresh.listen((newToken) async {
      print(newToken);
      String id_token = await FirebaseAuth.instance.currentUser!.getIdToken();
      String uid = await FirebaseAuth.instance.currentUser!.uid;
      final result = await http.put(
          Uri.parse(backend + "/pm/setfcm/" + uid + "/"),
          headers: {
            "Content-Type": "application/json",
            "Authorization": "Token " + id_token
          },
          body: jsonEncode({
            "fcm": newToken,
          })
      );

    });

            response = send(message)
            print(response)
Вернуться на верх