Firebase云消息传递问题

时间:2017-01-16 14:43:08

标签: android python django

目前正在做一个项目,要求我从我的服务器(django,运行内置的sqlite3)与我的Android设备进行通信和发送通知。

为了让我的生活更轻松,我将利用Google的Firebase云消息传递来弥补差距并轻松地将通知发送到Android设备。

在Django(我的服务器端)上,每当我需要向我的设备发送通知时,我正在使用django-fcm库向FCM服务器发出http请求,我认为这已经设置正确。

我目前面临的问题是即使我已经从Django方面成功发布了一个FCM服务器的帖子,通知也没有显示在FCM控制台上,我已经尽力做必要的研究找到解决方案,但无济于事。

通过使用此库提供的方法,我尝试发送消息,这是给出的响应:

Kzhan00b-3:eldersense_website Kzhan00b$ python3 manage.py fcm_messenger --devices
Devices list:
(#7) Zhong Han


Kzhan00b-3:eldersense_website Kzhan00b$ python3 manage.py fcm_messenger --device_id=7 --msg='hello'
Using default settings.FCM_MAX_RECIPIENTS value 1. Change it via settings [OK] device #7 (Zhong Han):      
(['cbUqW...IimVXB'], 
{'results': [{'message_id': '0:1484576499555513%775b332838eb0007'}], 'multicast_id': 6536553600879447077, 'success': 1, 'failure': 0, 'canonical_ids': 0})

从我读过的文件中,由于正文中没有说明错误,这篇文章应该是一个成功的请求。

然而,当我在我的控制台/模拟Android设备上检查通过此发送的任何通知时,没有显示任何内容,尤其是在控制台端。

因此,为了进行更强大的调查,我尝试使用python上的Requests库进行手动HTTP Post,参考FCM文档,如下所示:

r = requests.post('https://fcm.googleapis.com/fcm/send', 

data= json.dumps({'to':'cbUqWQ...rzSUIimVXB'}),
headers = {'Content-Type': 'application/json','
Authorization':'key=AAAA...nrgB8Y'})

>>> r.text
'{"multicast_id":7759794145591317544,"success":1,"failure":0,"canonical_ids":0,"results":[{"message_id":"0:1484575515499197%775b3328f9fd7ecd"}]}'
>>> r.status_code
200

这几乎给了我与上面使用django-fcm库相同的响应,但是,在Android或FCM服务器上同时没有收到任何通知。

所以我想寻求任何建议,如果我做错了任何事情,导致成功的HTTP请求完成,并由FCM服务器确认,但没有在FCM控制台上显示。

如果您需要我向我的Django Server或Android方面展示代码,请告诉我们!

谢谢!

1 个答案:

答案 0 :(得分:0)

我现在正在使用django-fcm而且工作正常。我没有在Firebase控制台的“通知”部分中看到从服务器发送的任何通知。看来,这部分是手动发送通知。如果我理解正确,它只会记录通过它手动发送的消息的历史记录。至少,我没有看到通过django-fcm发送的消息。我想,你的日志消息还可以。你能展示客户代码吗?此外,最好将FCM_MAX_RECIPIENTS = 1添加到Django的settings.py中。 (但我认为在问题的背景下并不重要)