Firebase Cloud Messaging ( FCM ) Library using golang ( Go )
This library uses HTTP/JSON Firebase Cloud Messaging connection server protocol
- Send messages to a topic
- Send messages to a device list
- Message can be a notification or data payload
- Supports condition attribute (fcm only)
- Instace Id Features
- Get info about app Instance
- Subscribe app Instance to a topic
- Batch Subscribe/Unsubscribe to/from a topic
- Create registration tokens for APNs tokens
go get github.com/NaySoftware/go-fcm
https://godoc.org/github.com/NaySoftware/go-fcm
https://firebase.google.com/docs/cloud-messaging/http-server-ref
https://firebase.google.com/docs/cloud-messaging/
https://developers.google.com/instance-id/reference/server
serverKey is the server key by Firebase Cloud Messaging
Server Key can be found in:
- Firebase project settings
- Cloud Messaging
- then copy the server key
Retry should be implemented based on the requirements. Sending a request will result with a "FcmResponseStatus" struct, which holds a detailed information based on the Firebase Response, with RetryAfter (response header) if available - with a failed request. its recommended to use a backoff time to retry the request - (if RetryAfter header is not available).
package main
import (
"fmt"
"github.com/NaySoftware/go-fcm"
)
const (
serverKey = "YOUR-KEY"
topic = "/topics/someTopic"
)
func main() {
data := map[string]string{
"msg": "Hello World1",
"sum": "Happy Day",
}
notificationPayload := fcm.NotificationPayload{
Title: "Happy Day - title",
Body: "Happy World - body",
}
ids := []string{
"token1",
}
xds := []string{
"token5",
"token6",
"token7",
}
c := fcm.NewFcmClient(serverKey)
c.SetNotificationPayload(¬ificationPayload)
c.SetPriorety(fcm.Priority_HIGH)
c.NewFcmRegIdsMsg(ids, data)
c.AppendDevices(xds)
status, err := c.Send()
if err == nil {
status.PrintResults()
} else {
fmt.Println(err)
}
}
package main
import (
"fmt"
"github.com/NaySoftware/go-fcm"
)
const (
serverKey = "YOUR-KEY"
)
func main() {
data := map[string]string{
"msg": "Hello World1",
"sum": "Happy Day",
}
notificationPayload := fcm.NotificationPayload{
Title: "Happy Day - title",
Body: "Happy World - body",
}
ids := []string{
"token1",
}
xds := []string{
"token5",
"token6",
"token7",
}
c := fcm.NewFcmClient(serverKey)
c.SetNotificationPayload(¬ificationPayload)
c.SetPriorety(fcm.Priority_HIGH)
c.NewFcmRegIdsMsg(ids, data)
c.AppendDevices(xds)
status, err := c.Send()
if err == nil {
status.PrintResults()
} else {
fmt.Println(err)
}
}