Я использую PyFCM, найденный здесь , для отправки push-уведомлений в мое Ionic App из Django Rest Framework через Firebase Cloud Messaging.
Проблема в том, что subscribe_registration_ids_to_topic (), по-видимому, фактически не создает тему в Firebase.Я понимаю, что:
(1) Подписка пользователя на тему, которая еще не создана, создаст тему и подпишет пользователя на нее.
(2) Консоль Firebase может занятьдо 14 часов, чтобы показать вновь созданные темы.Прошло более 28 часов с тех пор, как я подписал пользователя на тему
(3) Вновь созданная тема должна быть доступна для немедленного использования, и примерно через 14 часов тема должна быть доступна для использования в консоли Firebase.
Моя точная проблема заключается в том, что после вызова subscribe_registration_ids_to_topic()
я не вижу созданной темы, даже после 28+ часов
Вот как я использовал библиотеку. Если вы заметили, у меня есть push_service.notify_single_device()
, который отправляетуведомление, как и ожидалось.Ниже этой строки находится push_service.notify_topic_subscribers()
, которая НЕ отправляет уведомление: в models.py
from pyfcm import FCMNotification
push_service = FCMNotification(api_key="my-api-key")
push_service.notify_topic_subscribers(topic_name="test",
message_body="Hello Test Members!")
class Group(models.Model):
name = models.CharField(max_length=80)
group_image = models.ImageField(blank=True, null=False)
description = models.TextField(blank=True, null=True)
userprofiles = models.ManyToManyField(Userprofile, null=True, blank=True)
ministry = models.ForeignKey(Ministry, on_delete=models.CASCADE,null=True, blank=True)
def save(self, *args, **kwargs):
#send push notification
registration_id = "my-registration-id"
message_title = "New Group Added!"
message_body = "check out our new group %s" % self.name
result = push_service.notify_single_device(registration_id=registration_id, message_title=message_title,
message_body=message_body)
topic_message = push_service.notify_topic_subscribers(topic_name="test", message_body="Hello Test Members!")
super(Group, self).save(*args, **kwargs)
, поэтому я знаю, что мои настройки верны в том, что касается инициализации FCM / PyFCM, вот код, который НЕ работаеткак и ожидалось.В views.py:
@api_view(['POST'])
@permission_classes((AllowAny,))
def subscribeToTopic(request):
#device token is also known as registration token
topic = request.data['topic']
device_token = request.data['device_token']
tokens_array = [device_token]
#Subscribe REQUIRES an ARRAY!!!!
subscribed = push_service.subscribe_registration_ids_to_topic(tokens_array, topic)
return Response({'message': subscribed})
В последней строке чуть выше оператора return у меня есть push_service.subscribe_registration_ids_to_topic(tokens_array, topic)
.Согласно PyFCM docs, это должно возвращать true
, если пользователь успешно подписан на тему, которую он возвращает true
, но нет темы, созданной или подписанной, и ни одна тема не появляется в консоли Firebase даже после полного дня.