Rails에서 Firebase Cloud Messageing(FCM)을 사용하여 푸시 알림 보내기

9716 단어 FirebaseRailsFCMtech

개요


물줄기

  • 등록 영패 획득
  • 획득한 토큰을 사용하여 전송 처리(FCM HTTP v1 API 사용)
  • 등록 영패의 발송 지정
  • 주제에 대한 발송
  • 주의점


    문장에 나타난 {プロジェクトID}과 같은 중괄호로 둘러싸인 항목은 내용이 그곳에서 전개되는 것을 가리킨다.실제로는 중괄호가 필요 없다.

    등록 토큰 가져오기(응용측)


    등록 영패는


    이 영패는 유일한 식별 응용 실례에 사용된다.푸시 알림을 받는 프로그램 측면에서 설정합니다.

    등록 토큰 가져오기

  • iOS
  • https://firebase.google.com/docs/cloud-messaging/ios/client?hl=ja#access_the_registration_token
  • Android
  • https://firebase.google.com/docs/cloud-messaging/android/client?hl=ja#sample-register
  • C++
  • https://firebase.google.com/docs/cloud-messaging/cpp/client?hl=ja#access_the_device_registration_token
  • JavaScript
  • https://firebase.google.com/docs/cloud-messaging/js/client?hl=ja#access_the_registration_token
  • 기타
  • "Firebase Registration token(프레임 이름)"등으로 검색하면 패키지를 찾을 수 있음
  • Firebase 콘솔 측 준비(인증 정보 설정)

  • 설정 항목→서비스 계정→Firebase Admin SDK→새 기밀 키 생성→키 생성
  • 추가 저장 (예: 서비스 account json key. json)
  • 참조
  • https://firebase.google.com/docs/cloud-messaging/migrate-v1?hl=ja#provide-credentials-manually
  • OAuth2.0 액세스 토큰(Rails 측)

  • googleauthgem
  • 사용
    scope = 'https://www.googleapis.com/auth/firebase.messaging'
    authorizer = Google::Auth::ServiceAccountCredentials.make_creds( json_key_io: File.open('/path/to/service_account_json_key.json'), scope: scope)
    authorizer.fetch_access_token!
    
  • 참조: https://github.com/googleapis/google-auth-library-ruby#example-service-account
  • 등록 토큰 전송 지정(Rails 측)

  • POST https://fcm.googleapis.com/v1/projects/{プロジェクトID}/messages:send
  • Header
  • Authorization
  • Bearer {OAuth2.0 アクセストークン}
  • Content-Type
  • application/json
  • Body
  • {
        "message":{
            "token":"{登録トークン}",
            "notification":{
                "body":"This is an FCM notification message!",
                "title":"FCM Message"
            }
         }
    }
    
  • 프로젝트 ID 획득
  • 설정 - 일반 - 프로젝트 ID
  • 예제
  • uri = URI.parse("https://fcm.googleapis.com/v1/projects/{プロジェクトID}/messages:send")
    http = Net::HTTP.new(uri.host, uri.port)
    http.use_ssl = true
    http.verify_mode = OpenSSL::SSL::VERIFY_NONE
    req = Net::HTTP::Post.new(uri.request_uri)
    req['Authorization'] = "Bearer #{access_token['access_token']}"
    req['Content-Type'] = "application/json"
    req.body = body
    res = http.request(req)
    
  • 참조: https://firebase.google.com/docs/cloud-messaging/send-message?hl=ja#send-messages-to-specific-devices
  • 등록 토큰을 주제로 링크(Rails 측)

  • POST https://iid.googleapis.com/iid/v1/{登録トークン}/rel/topics/{トピック名}
  • Header
  • Authorization
  • key={サーバーキー}
  • 서버 키 설정 항목→Cloud Message→서버 키에서 가져오기
  • 주제로 보내기(Rails 측)

  • POST https://fcm.googleapis.com/v1/projects/{プロジェクトID}/messages:send
  • Header
  • Authorization
  • Bearer {OAuth2.0 アクセストークン}
  • Body
  •  {
         "message" : {
             "topic" : "{トピック名}",
             "notification" : {
                 "title" : "title test",
                 "body" : "topic test"
            }
        }
    }
    

    주의점

  • 등록 토큰을 주제에 연결하는 API는 알림을 보내는 API와 인증 방법이 다릅니다.
  • 좋은 웹페이지 즐겨찾기