2017-01-16 122 views
1

當前正在做一個項目,需要我通過我的android設備進行通信並向我的android設備發送通知,從我的服務器(django,運行內置的sqlite3)。Firebase Cloud Messaging問題

爲了讓我的生活更輕鬆,我將利用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設備的任何通知發送通過此,沒有顯示,尤其是在控制檯端。

所以爲了做一個更強大的調查,我已經嘗試過使用上蟒Requests庫做手工HTTP後,引用文檔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的服務器或Android端代碼!

謝謝!

回答

0

我使用Django的FCM的那一刻,它工作正常。在Firebase控制檯的「通知」部分中,我看不到來自服務器的任何通知。看起來,這部分是手動發送通知。如果我理解正確的話,它存儲的歷史只有約的消息,那麼通過它人工發送。至少,我在這裏看不到通過django-fcm發送的消息。我想,你的日誌消息是可以的。你能顯示客戶端代碼嗎?此外,最好是1加FCM_MAX_RECIPIENTS =你的Django的settings.py。 (但它不會在該問題的情況下無所謂,我覺得)

相關問題