Golang: FCM을 사용하여 푸시 알림 구현

8839 단어
1. Firebase 및 장치 토큰에 대한 기본 소개
장치 토큰은 푸시 알림을 담당하는 주요 참가자입니다. 멋진 단어가 아니라 단순히 각 장치에 고유한 ID입니다. 우리가 애플리케이션을 설치할 때 우리 장치의 고유한 토큰이 서버에 저장되고 이를 사용하여 우리에게 알릴 수 있습니다.

Firebase는 앱/모바일/태블릿에 알림을 푸시하는 데 사용되는 도구입니다.
푸시 알림에 사용되는 클라우드 메시징(FCM) 서비스를 구성하기 위한 설정을 제공합니다.

참고: 앱 측에서 사용되는 Firebase 구성 파일(Android의 경우 google_services.json 파일, iOS의 경우 GoogleService-Info.plist) 및 service_account 키는 Firebase 콘솔에서 동일한 프로젝트에 대해 생성되어야 합니다.

이 블로그에서는 Golang 및 Firebase를 사용하여 푸시 알림을 보내는 방법을 살펴보겠습니다.

구현으로 이동해 보겠습니다.

2. Firebase 인증 키 구성
필수 패키지:
firebase.google.com/go
firebase.google.com/go/messaging
민감한 내용은 항상 암호화된 형식으로 사용하는 것이 좋습니다. 이를 위해 서비스 계정 키를 환경 변수로 인코딩된 base64 형식으로 저장했습니다.

여기서 FIREBASE_AUTH_KEY에는 base64로 인코딩된 서비스 계정 키가 포함되어 있습니다.

먼저 서비스 계정 키를 디코딩해 보겠습니다.

func getDecodedFireBaseKey() ([]byte, error) {

  fireBaseAuthKey := os.Getenv("FIREBASE_AUTH_KEY")

  decodedKey, err :=  base64.StdEncoding.DecodeString(fireBaseAuthKey)
  if err != nil {
     return nil, err
  }

  return decodedKey, nil
}


위의 메서드는 다음 단계에서 사용할 디코딩된 서비스 계정 키를 반환합니다.

아래 코드를 사용하여 디코딩된 키를 검색하고 Firebase 앱을 초기화합니다.

decodedKey, err := getDecodedFireBaseKey()
if err != nil {
   return err
}

opts :=  []option.ClientOption{option.WithCredentialsJSON(decodedKey)}

// Initialize firebase app
app, err := firebase.NewApp(context.Background(), nil, opts...)

if err != nil {
   log.Debug("Error in initializing firebase app: %s", err)
   return err
}


3. Firebase 클라이언트 초기화
메시징(푸시 알림)을 위한 fcmClient를 생성합니다.

fcmClient, err := app.Messaging(context.Background())

if err != nil {
   return err
}


마지막으로 알림을 보내는 코드를 작성해 보겠습니다.

4. 단일 장치에 푸시 알림 보내기

response, err := fcmClient.Send(context.Background(), &messaging.Message{

  Notification: &messaging.Notification{
    Title: "Congratulations!!",
    Body: "You have just implement push notification",
  },
    Token: "sample-device-token", // it's a single device token
})

if err != nil {
     return err
}


위의 코드는 단일 장치에 푸시 알림을 보냅니다.

5. 여러 기기에 푸시 알림 보내기
여러 장치에 알리려는 경우 시나리오를 고려하십시오. 단일 장치에 푸시 알림을 보내는 것과 거의 동일하며 fcmClient의 Send() 메서드를 SendMulticast()로 교체하면 됩니다.

response, err := fcmClient.SendMulticast(context.Background(), &messaging.MulticastMessage{
   Notification: &messaging.Notification{
     Title: "Congratulations!!",
     Body:  "You have just implement push notification",
   },
   Tokens: deviceTokens, // it's an array of device tokens
  })

  if err != nil {
     return err
  }

log.Debug("Response success count : ", response.SuccessCount)
log.Debug("Response failure count : ", response.FailureCount)


예이!! Golang 프로젝트 🎊에서 푸시 알림을 구현했습니다.
응답 변수에는 전송된 알림의 성공 횟수와 실패 횟수가 포함됩니다.

FCM with Golang에서 전체 코드를 찾으십시오. SendPushNotification()을 호출하고 붐!! 애플리케이션에서 받은 알림을 확인합니다.

한편, SuccessCount 및 failureCount가 있으므로 디버그 로그를 확인할 수도 있습니다. 알림이 얼마나 많은 토큰으로 푸시되는지 확인하는 데 도움이 됩니다. failureCount > 0인 경우 유효한 장치 토큰을 제공하고 있는지 확인해야 합니다.

좋은 웹페이지 즐겨찾기