123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- package server
- import (
- "context"
- "log"
- firebase "firebase.google.com/go"
- "firebase.google.com/go/messaging"
- "github.com/rotisserie/eris"
- "x.sikey.com.cn/serverx/zlog"
- )
- type FirebaseMessageServer struct {
- app *firebase.App
- }
- func NewFirebaseMessageServer() *FirebaseMessageServer {
- conf := &firebase.Config{
- ServiceAccountID: "firebase-adminsdk-uycdi@sikey-watch.iam.gserviceaccount.com",
- }
- app, err := firebase.NewApp(context.Background(), conf)
- if err != nil {
- log.Fatalln(err)
- }
- return &FirebaseMessageServer{app: app}
- }
- func (f *FirebaseMessageServer) Send(ctx context.Context, token string, message *Message) error {
- client, err := f.app.Messaging(ctx)
- if err != nil {
- return eris.Wrap(err, "unable to create fcm client connect")
- }
- bytes, _ := message.MarshalBinary()
- messaging := &messaging.Message{
- Token: token,
- Data: map[string]string{"message": string(bytes)},
- Notification: &messaging.Notification{
- Title: "title",
- Body: "body",
- },
- }
- resultName, err := client.Send(ctx, messaging)
- if err != nil {
- zlog.Error("unable to send fcm message: ", err)
- return eris.Wrap(err, "unable to send fcm message")
- }
- zlog.Infof("Successfully sent message: %s", resultName)
- return nil
- }
|