firebase-cloud-messagingfirebase-cloud-messaging 시작하기


비고

악명 높은 일반적인 질문은 "장치에서 장치로 알림을 보내는 방법"입니다. 슬프게도 대답은 : 할 수 없습니다. 푸시 알림을 보내려면 FCM을 실행해야합니다. 그것은 3 가지 방법으로 할 수 있습니다 :

  1. Firebase 웹 콘솔에서 직접 실행
  2. Firebase 함수 리스너 설정 및 FCM 트리거
  3. 서버가 FCM에 푸시 알림을 보내도록 요청합니다.

푸시 알림은 FCM에서 전송되는 정보 페이로드입니다. 푸시 알림에는 notification , data , notification and data 의 세 가지 유형이 있습니다. 이 정보는 JSON으로 나타낼 수 있습니다.

  {
    "to" : "APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx...",
    "notification" : {
      "body" : "great match!",
      "title" : "Portugal vs. Denmark",
      "icon" : "myicon"
    },
    "data" : {
      "Nick" : "Mario",
      "Room" : "PortugalVSDenmark"
    }
  }

위의 예는 notificationdata 결합 된 세 번째 유형입니다. 이것이 FCM에 보낼 것을 요청할 것입니다.

  1. 콘솔은 보낼 수 있습니다 notificationnotificationdata 하지만 결코에만 data
  2. 함수 및 모든 서버는 3 가지 유형을 전송할 수 있습니다.

의 중요성 notification 유형을 수신 기본적으로 응용 프로그램은 더 프로젝트에 라이브러리를 추가 옆에 필요한 코딩없이 단순히 웹 콘솔을 사용하여 응용 프로그램의 성장을 증가시키는 마케팅으로 다른 팀 힘을 실어 진행시키고 수 있다는 것입니다.

푸시 알림, notification 유형 및 시각적 알림을 혼동하지 마십시오. 마지막으로 Android 클래스 (일반적으로 NotificationCompat)에 해당합니다.

푸시의 동작은 유형 및 앱이 포 그라운드 또는 백그라운드에 따라 다릅니다. 포 그라운드에서는 최소화되거나 닫히지 않습니다.

  1. 앱이 포 그라운드에 있지 않은 경우 알림은 기본 시각적 notification 을 트리거하며,이 알림은 매니페스트에서 맞춤 설정할 수 있습니다. 설명서 를 참조하십시오. 앱이 포 그라운드에 있으면 onMessageReceived 메소드 내부에서 비헤이비어를 사용자 정의해야합니다.
  2. data 유형 동작은 항상 사용자 정의되어야합니다.
  3. 앱이 포 그라운드에 있지 않은 경우 notificationdata 가 결합 되어 기본 시각적 통지가 트리거되고 사용자가 클릭 할 때 data 페이로드를 사용할 수 있습니다. 런처 액티비티는 시각적 알림을 클릭 할 때 트리거되므로 문자 그대로 getIntent().getStringExtra("yourKey"); 해당 액티비티에서 데이터를 가져옵니다. 응용 프로그램이 (포 그라운드에서) 활성화되어 있으면 onMessageReceived 메소드 내부에서 비헤이비어를 사용자 정의해야하며 즉시 data 페이로드에 액세스 할 수 있습니다.

정보 페이로드를 얻으려면 onMessageReceived 메소드 내에서 정보 페이로드를 수행해야합니다. 사용 가능한 유일한 인수는 다음과 같습니다.

  1. notificationremoteMessage.getNotification()remoteMessage.getNotification() 해야합니다. remoteMessage.getNotification() 해당 메소드로 본문이나 제목을 가져올 수 있습니다
  2. data 를 얻으려면 remoteMessage.getData().get("yourKey") 합니다.

모든 null이 아닌 인증을 추가하는 것이 좋습니다. 고급 앱에 도착하는 몇 가지 유형의 알림이 있습니다. 좋은 전략은 각각 notificationdata 가 null이 아닌지 확인하는 것입니다. 결과적인 유용한 전략은 흐름 제어를하기 위해 항상 data 알림에서 type 키를 사용하는 것입니다.

Firebase 웹 콘솔에서 data 를 보내려면 고급 옵션을 열어야합니다.

notification 키는 제한되어 있으며 설명서에 표시되어 있습니다. 모든 유형의 값은 String 일 수 있습니다 .

Firebase에서 문서를 찾는 데 문제가 있다면 페이지 하단으로 이동하여 언어를 "영어"로 변경하십시오. 다른 언어에서는 문서가 더 얇 습니다.

설치 또는 설정

Firebase Cloud Messaging은 푸시 알림을 처리하는 Firebase 서비스입니다. 웹, Android 또는 IOS 클라이언트에서이 서비스를 추가 할 수 있습니다. 각각에 대한 특정 기능은 문서 에서 읽어야 합니다 .

모든 유형의 프로젝트에서 FCM을 추가하려면 항상 라이브러리를 추가해야합니다 .

안드로이드에 대한 특별한 지원을 고려해 볼 때 몇 줄을 써야 할 가치가 있습니다. Android Studio를 사용하여 새 프로젝트를 만들고 메뉴에서 Tools / Firebase로 이동하면 Firebase 도우미가 트리거됩니다. "클라우드 메시징"을 선택하고 1 단계와 2 단계를 수행하십시오.

  1. 프로젝트가 이전에 다른 Firebase 서비스를 추가했다면, 1 단계는 완료로 표시되고 그렇지 않으면 완료해야합니다. 첫 번째 단계에서는 Firebase에서 프로젝트를 생성하거나 새로운 프로젝트를 생성 할 수 있습니다. 이 단계는 Firebase 프로젝트에 연결할 수있는 google-service.json 파일을 다운로드합니다. 이 파일은 "app"폴더 안에 있습니다.
  2. 이 단계는 Google 서비스 라이브러리와 Firebase 라이브러리를 gradle에 추가하고 해당 파일에서도 몇 가지 추가 구성을 수행합니다.

이것은 프로젝트에서 FCM을 추가하기위한 기초입니다. 이 시점부터 클라이언트는 앱이 포 그라운드에 있지 않는 한 "알림"페이로드가 포함 된 FCM 푸시 알림을 수신 할 수 있습니다 (자세한 내용은 설명 참조).

클라이언트에서 FCM 동작을 추가로 사용자 지정하려면 2 개의 서비스를 추가해야합니다. 이는 공식 사이트에서 잘 설명 되어 있습니다. 다시 우리는 안드로이드에 대한 몇 가지 고려 사항을 취할 것입니다 :

  1. FirebaseMessagingService 를 확장하고 onMessageReceived 메소드를 재정의하는 클래스를 작성하십시오.
  2. FirebaseInstanceIdService 를 확장하고 onTokenRefresh 메소드를 재정의하는 클래스를 작성하십시오.
  3. 매니페스트에 두 클래스 모두를 등록하십시오. application 태그 </ intent-filter> </ intent-filter>

거기에 유일한 인수를 사용하여 onMessageReceived 메소드 내에서 notification 페이로드 및 data 페이로드를 가져올 수 있습니다. onTokenRefresh 메서드는 FCM 토큰이 FCM에 의해 할당 될 때 호출됩니다. FCM 토큰은 앱 설치 및 기기의 고유 ID이며 푸시 알림을 직접 전송하기 위해 기기의 주소로 사용할 수 있습니다.

알림 유형 및 관련 동작에 대한 자세한 내용은 설명을 읽으십시오.