What is FCM ?
FCM – Firebase Cloud Messaging is a cross-platform ( Android, iOS and Chrome ) messaging solution that lets you reliably deliver messages at no cost. FCM is best suited if you want to send push notification to your app which you built to run on Android and iOS. The advantage you get is you don’t have to separately deal with GCM (Google Cloud Messaging deprecated now) and Apple’s APNS. You hand over your notification message to FCM and FCM takes care of communicating with apple’s APNS and Android messaging servers to reliably deliver those messages.
Using FCM we can send message to single device or multiple devices. There are two different types of messages, notification and data. Notification messages include JSON keys that are understood and interpreted by phone’s operating system. If you want to include customized app specific JSON keys use data message. You can combine both notification and data JSON objects in single message. You can also send messages with different priority.
Note : – You need to set
priorityto
highif you want phone to wake up and show notification on screen
Sending message with Python
We can use PyFCM to send messages via FCM. PyFCM is good for synchronous ( blocking ) python. We will discuss non-blocking option in next paragraph.
Install PyFCM using following command
pip install pyfcm
The following code will send a push notification to
from pyfcm import FCMNotification push_service = FCMNotification(api_key="<api-key>") # OR initialize with proxies proxy_dict = { "http" : "http://127.0.0.1", "https" : "http://127.0.0.1", } push_service = FCMNotification(api_key="<api-key>", proxy_dict=proxy_dict) # Your api-key can be gotten from: https://console.firebase.google.com/project/<project-name>/settings/cloudmessaging registration_id = "<device registration_id>" message_title = "Uber update" message_body = "Hi john, your customized news for today is ready" result = push_service.notify_single_device(registration_id=registration_id, message_title=message_title, message_body=message_body) print result # Send to multiple devices by passing a list of ids. registration_ids = ["<device registration_id 1>", "<device registration_id 2>", ...] message_title = "Uber update" message_body = "Hope you're having fun this weekend, don't forget to check today's news" result = push_service.notify_multiple_devices(registration_ids=registration_ids, message_title=message_title, message_body=message_body) print result
So, the PyFCM API is the pretty straight forward to use.
Sending FCM push notification using Twisted
PyFCM discussed in above paragraph is good enough if you want to send messages in blocking fashion. If you have to send high number of concurrent messages then using Twisted is a good option.
Twisted MatrixNetwork operations performed using twisted library don’t block. Thus it’s a good choice when network concurrency is required by program. We can use txFCM library to send FCM messages using twisted
Install txFCM using following command
pip install txfcm
Following code send FCM message using txFCM
from txfcm import TXFCMNotification from twisted.internet import reactor push_service = TXFCMNotification(api_key="<api-key>") # Your api-key can be gotten from: https://console.firebase.google.com/project/<project-name>/settings/cloudmessaging # Send to multiple devices by passing a list of ids. registration_ids = ["<device registration_id 1>", "<device registration_id 2>", ...] message_title = "Uber update" message_body = "Hope you're having fun this weekend, don't forget to check today's news" df = push_service.notify_multiple_devices(registration_ids=registration_ids, message_title=message_title, message_body=message_body) def got_result(result): print result df.addBoth(got_result) reactor.run()
txFCM is built on top of PyFCM so all the API call that are available in PyFCM are also available in txFCM.
The post FCM – send push notifications using Python appeared first on Lintel Technologies Blog.