개발자가 서버 또는 클라우드에서 모바일 장치로 신뢰할 수 있고 효율적으로 메시지를 전송할 수 있게 합니다. 푸시를 사용하면 알림 메시지(시스템이 사용자에게 표시할 수 있는 메시지)와 데이터 메시지(앱이 처리하는 키-값 쌍의 데이터)를 모바일 앱과 웹 앱에 전송할 수 있습니다. 푸시는 iOS, Android, 웹 애플리케이션을 포함한 다양한 플랫폼을 지원합니다.
2024년 5월 15일부터 Firebase Cloud Messaging(FCM)은 270일 이상 비활성 상태였던 Android 기기에서 토큰이 만료됩니다. 귀하의 계정이 포함되면, 구독 취소 수가 증가할 수 있습니다.
주요 기능
다양한 메시지 전송: 알림 메시지와 데이터 메시지를 포함하여 다양한 유형의 메시지를 전송할 수 있습니다.
대규모 메시징: 수백만 명의 사용자에게 동시에 메시지를 보낼 수 있어, 대규모 애플리케이션의 효율적인 메시지 전송이 가능합니다.
다양한 플랫폼 지원: iOS, Android, 웹 애플리케이션 등 다양한 플랫폼에서 메시지를 받을 수 있습니다.
고급 메시징 옵션: 메시지 우선순위 설정, 수명(lifetime) 설정, 주제 기반 구독 및 조건부 메시지 전송 등 고급 기능을 제공합니다.
iOS의 경우, CocoaPods을 사용하여 Firebase/Messaging pod를 설치합니다.
푸시 알림을 위한 권한 요청 (iOS)
iOS 앱의 경우, 사용자로부터 푸시 알림을 받을 수 있는 권한을 요청해야 합니다. UNUserNotificationCenter를 사용하여 요청할 수 있습니다.
디바이스 토큰 등록 및 메시지 수신
앱이 설치되고 실행될 때, FCM SDK는 앱 인스턴스에 대한 고유한 토큰을 생성합니다. 이 토큰을 서버에 등록하여 특정 디바이스에 메시지를 전송할 수 있습니다.
메시지 수신을 위해 애플리케이션에 리스너를 구현합니다.
FCM을 사용하면 애플리케이션의 사용자 참여도를 높이고, 중요한 정보를 신속하게 전달하며, 다양한 메시지 전송 시나리오를 지원하는 맞춤형 알림 시스템을 구축할 수 있습니다. FCM은 개발자가 클라우드 메시징을 쉽게 통합하고 관리할 수 있도록 다양한 도구와 API를 제공합니다
NBaseSDK.NBase.getPushState((pushState, error) => {
if (error != null)
{
// failed.
// Display the message using error.message.
}
else
{
// succeeded.
}
});
NBase.getPushState() { state, e ->
if (error != null) {
// failed.
// Display the message using error.message.
} else {
// succeeded.
}
};
NBase nBase = NBase.INSTANCE;
nBase.getPushState((state, e) -> {
if (e != null) {
// failed.
// Display the message using e.getMessage.
} else {
// succeeded.
}
return null;
});
NBase.getPushState() { result in
switch result {
case .success(let data):
// succeeded.
case .failure(let error):
// failed.
}
}
[NBaseBridge.shared getPushState:^(NSDictionary * _Nullable result, NSError * _Nullable error) {
if (error) {
// failed.
// Display the message using error.localizedDescription.
} else {
// succeeded.
}
}];
푸시 테스트 방법(모바일)
푸시 테스트는 세 가지 방법으로 검증이 가능합니다.
게임팟 대시보드에서 확인 방법 대시보드 -> 회원 목록 -> 회원 정보(자세히) 푸시 발송 버튼을 클릭하면 해당 회원에게 개별로 푸시 발송이 가능합니다.
(AOS) Firebase 콘솔에서 테스트 방법
Firebase Console - 프로젝트 선택 - Messaging - 캠페인에서 새 캠페인 버튼을 클릭하여 메시지 발송 테스트를 할 수 있습니다.
앱에서 가져온 토큰을 복사하여 붙여넣기 후 +버튼을 눌러 토큰을 입력하여 테스트 버튼을 누르면 완료되며, 해당 토큰으로 발송이 되는지 확인 가능합니다.
(iOS) CloudKit Console 에서 테스트 방법
CloudKit Console -> Push Notifications 에 진입하여 새로운 Notifications을 생성합니다.
Device Token 입력과 Payload 입력 후 해당 토큰으로 발송이 되는지 확인 가능합니다.
문제해결
Q. java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process com.nbase.main. Make sure to call FirebaseApp.initializeApp(Context) first.
A. 해당 오류는 gradle 파일에 푸시를 위한 설정이 누락된 경우 입니다. 아래 사항을 확인해 주시기 바랍니다.
프로젝트 최상단 build.gradle.kts
plugins {
id("com.google.gms.google-services") version "4.4.1" apply false
}
를 추가해 준다.
app 내에 build.gradle.kts 내에
plugins {
id("com.google.gms.google-services")
}
Q. org.gradle.api.GradleException: File google-services.json is missing. The Google Services Plugin cannot function without it.
A. 해당 오류는 google-services.json 을 찾을 수 없는 경우 발생합니다. 해당 파일을 모듈 : 앱 단위의 루트 폴더에 올바르게 위치 했을지 확인이 필요합니다.
(예시) ./project folder/app/google-services.json