파이어베이스 알림 수신 시 앱 열기(FCM)
알림을 받으면 자동으로 애플리케이션을 열고 싶은데, 파이어베이스와 새로운 FCM 알림으로 가능한가요?
click_action을 설정할 수 있다는 것은 알고 있지만, 알림 클릭 시 시작할 활동을 사용자 정의하기 위한 것이므로 알림이 수신될 때 자동으로 시작할 작업이 필요합니다.
퀵 스타트 메시징 파이어베이스 샘플을 시도해봤는데 onMessageReceived() 메서드가 있지만 앱이 포그라운드에 있을 때만 작동합니다.앱이 백그라운드에 있는 동안에도 실행할 수 있는 무언가가 있습니까? GCM은 알림이 수신될 때 호출되는 브로드캐스트 수신기에서 직접 활동 의도를 시작하여 제가 원하는 것과 같은 작업을 수행할 수 있습니다.
빠른 답변:
FCM을 .data-message
그것은 항상 호출하는 것을 보장합니다.FirebaseMessagingService.onMessageReceived()
방법.
에 할 수 ..onMessageReceived()
기본 활동을 시작하는 방법입니다.
경고: 사용자 상호 작용 없이 UI를 시작하는 것은 대부분의 응용 프로그램에서 매우 나쁜 관행입니다!여기에서 MarkG 답변을 읽어보십시오.서비스에서 활동을 시작하는 방법은 무엇입니까?
중인 양식으로
할 때 Notification 하는 것을 고려해야 합니다 [...]는 [...]와 같습니다.
전체 설명:
FCM은 GCM과 유사하게 작동하며 두 가지 유형의 메시지를 수신할 수 있습니다.
- 화면표시-표시:
payload{"notification" : { "body" : "hello world"}}
이러한 메시지는 앱이 백그라운드에서 호출될 때 자동으로 표시됩니다.FirebaseMessagingService.onMessageReceived()
앱이 이미 포그라운드에 있는 경우. - 데이터 수집:
payload{"data" : { "key1" : "value1"}}
이 메시지는 항상 호출됩니다.FirebaseMessagingService.onMessageReceived()
,
앱이 닫히거나 백그라운드에 있더라도.
click_action
알림 페이로드의 매개 변수이므로 디스플레이 페이로드에 적용됩니다.
알림을 클릭하는 사용자와 관련된 작업을 나타냅니다.
이 옵션을 설정하면 사용자가 알림을 클릭할 때 일치 의도 필터가 있는 활동이 시작됩니다.
https://firebase.google.com/docs/cloud-messaging/http-server-ref#notification-payload-support
가이드의 이 섹션은 백그라운드 앱 퍼즐의 핵심인 것 같습니다.
Firebase Messaging Service를 확장하는 서비스를 사용합니다.서비스가 다음을 재정의해야 합니다.onMessageReceived
콜백(다음 예외를 제외하고 대부분의 메시지 유형에 대해 제공됨)앱이 백그라운드에 있을 때 전달되는 알림입니다.
이 경우 알림이 장치의 시스템 트레이로 전달됩니다.사용자가 알림을 누르면 기본적으로 앱 시작 프로그램이 열립니다.알림과 데이터 페이로드가 모두 포함된 메시지입니다.
이 경우 알림은 장치의 시스템 트레이로 전달되고 데이터 페이로드는 실행기 활동의 의도에 따라 추가로 전달됩니다.
기본적으로 앱이 백그라운드에서 실행되면 이 시점에서 진정으로 응답하거나 실행되지 않습니다.따라서 대신 메시지가 시스템 트레이에 전달됩니다.그러나 바로 아래에 해결책이 설명되어 있습니다.
앱을 열고 [배경 중] 특정 작업을 수행하려면 알림 페이로드에서 click_action을 설정하고 시작할 활동의 의도 필터에 매핑합니다.예를 들어 click_action을 OPEN_ACTIVE_1로 설정하여 다음과 같은 의도 필터를 트리거합니다.
<intent-filter>
<action android:name="OPEN_ACTIVITY_1" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
여기에 단계를 요약합니다. 도움이 되었으면 합니다.
1단계
FCM 사용자 가이드를 따릅니다.Firebase 콘솔에서 메시지를 눌러 모든 것이 제대로 작동하는지 확인합니다.
2단계
다음과 같이 사용자 지정 Firebase Messaging Service 클래스를 변경합니다.
public class MyFirebaseMessagingService extends FirebaseMessagingService {
private static final String TAG = "MyFirebaseMsgService";
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Log.d(TAG, "From: " + remoteMessage.getFrom());
startActivity(new Intent(this, SplashActivity.class));
}
}
이제 Firebase 콘솔 푸시 메시지를 다시 사용하면 다음을 확인할 수 있습니다.onMessageReceived
앱이 포그라운드에 있을 때만 실행됩니다.은 "Firebase"를 전송할 수 때문입니다.Notification message
직오를 보내기 . 보내기 위해서.Data message
가 합니다.단계가 필요합니다.
3단계
Google Advanced REST 클라이언트 설치
파라미터 아래에 입력:
url: https://fcm.googleapis.com/fcm/send
method: POST
Raw header:
Content-Type: application/json
Authorization:key=YOUR_SERVER_KEY
Raw payload:
{
"to" : "YOUR_DEVICE_FCM_TOKEN",
"data" : {
"Nick" : "Mario",
"body" : "great match!",
"Room" : "PortugalVSDenmark"
},
}
YOR_SERVER_KEY는 Firebase 콘솔 > Settings 창 > Cloud Messaging 탭에서 사용할 수 있습니다.
은 "DEVICE_FCM_TOKEN"입니다.FirebaseInstanceId.getInstance().getToken()
onTokenRefresh()
메모
사용자 상호 작용 없이 UI를 시작하는 것은 잘못된 UX입니다. 시작 작업을 시작 서비스 또는 백그라운드에서 시작 작업으로 대체해야 할 수 있습니다.저는 단지 테스트 목적으로 활동을 사용하기 때문에 서비스보다는 시각적일 것입니다.@2ndgab에서 Google Advanced REST 클라이언트 도구를 소개해 주셔서 감사합니다.
[Android] Firebase 알림(Firebase Cloud Messaging이 아님)을 사용하는 경우에는 build.gradle에 Firebase Messaging을 포함한 다음 앱을 Firebase Console의 프로젝트에 연결하기만 하면 됩니다.
앱이 백그라운드에 있는 경우 콘솔에서 전송되는 모든 메시지는 시스템 알림을 제공하며, 이 알림을 누르면 앱이 활성화됩니다.
여기를 보십시오. https://youtu.be/KpTSpVh9SfY?t=10m22s
언급URL : https://stackoverflow.com/questions/37554274/open-app-on-firebase-notification-received-fcm
'programing' 카테고리의 다른 글
C와 C++ 옵티마이저는 일반적으로 어떤 함수가 부작용이 없는지 알고 있습니까? (0) | 2023.06.14 |
---|---|
IPython 노트북 서버 3에서 함수 인수를 보려면 어떻게 해야 합니까? (0) | 2023.06.14 |
0 값을 모두 NA로 바꿉니다. (0) | 2023.06.14 |
VBA - 숫자를 사용하여 열을 선택하시겠습니까? (0) | 2023.06.14 |
MariaDB는 코드를 수동으로 실행해도 작동하는 구문 오류를 발생시키는 이유는 무엇입니까? (0) | 2023.06.14 |