package Service
|
|
|
|
import (
|
|
"context"
|
|
"os"
|
|
|
|
firebase "firebase.google.com/go"
|
|
"firebase.google.com/go/messaging"
|
|
"github.com/joho/godotenv"
|
|
|
|
"google.golang.org/api/option"
|
|
)
|
|
|
|
var (
|
|
ctx context.Context
|
|
fcmClient *messaging.Client
|
|
)
|
|
|
|
func init() {
|
|
var (
|
|
fireBaseAuthKey string
|
|
opts []option.ClientOption
|
|
app *firebase.App
|
|
err error
|
|
)
|
|
|
|
err = godotenv.Load()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
fireBaseAuthKey = os.Getenv("FIREBASE_AUTH_KEY")
|
|
|
|
opts = []option.ClientOption{
|
|
option.WithCredentialsFile(fireBaseAuthKey),
|
|
}
|
|
|
|
ctx = context.TODO()
|
|
|
|
app, err = firebase.NewApp(ctx, nil, opts...)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
fcmClient, err = app.Messaging(ctx)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
}
|
|
|
|
func SendNotification(tokens []string, title string, data map[string]string) error {
|
|
var (
|
|
message messaging.MulticastMessage
|
|
err error
|
|
)
|
|
|
|
message = messaging.MulticastMessage{
|
|
Notification: &messaging.Notification{
|
|
Title: title,
|
|
},
|
|
Data: data,
|
|
Tokens: tokens,
|
|
}
|
|
|
|
_, err = fcmClient.SendMulticast(context.TODO(), &message)
|
|
|
|
return err
|
|
}
|