2016-08-31 2 views
3

Android에서 Firebase Cloud Messaging을 사용하고 있는데 다음 문제를 해결했습니다. 응용 프로그램이 백그라운드에있는 동안 수신 된 알림을 처리 할 때 발생합니다. 문서에 다음 내용이 나와 있습니다.FCM 런처 활동이 항상 열리지 않습니다.

앱이 백그라운드에있을 때 Android는 시스템 트레이에 메시지를 알립니다. 알림을 탭하면 기본적으로 앱 실행기가 열립니다.

여기에는 알림 및 데이터 페이로드 (및 알림 콘솔에서 보낸 모든 메시지)이 모두 포함 된 메시지가 포함됩니다. 이 사례의 경우 알림은 기기의 시스템 트레이로 전달되며 런처 활동의 의도에 따라 데이터 페이로드가 전송됩니다.

비록 이것이 대부분의 경우에 발생하지만, 나는 런처 활동이 열리지 않을 때 몇 가지 엣지 케이스를 발견했다. 대신 응용 프로그램은 백 스택의 마지막 활동에서 백그라운드에서 다시 시작되어 페이로드를 얻을 수있는 방법이 없습니다.

프로세스를 종료하고 시스템 트레이에서 알림을 통해 응용 프로그램을 열면이 문제를 재현 할 수 있습니다. 알림을 처음 탭하면 실행 프로그램 활동이 문서에서 설명한대로 열리지 만 이후 알림을 탭하면 실행 프로그램 활동을 먼저 거치지 않고 응용 프로그램을 다시 시작합니다.

내가 잘못하고 있거나 Firebase SDK에 버그가 있는지 확실하지 않습니다. 왜 이런 일이 일어날 지 아십니까?

내가 테스트중인 알림은 표시 메시지 알림 (데이터 알림 없음)이며 페이로드도 있습니다. 여전히이 문제를 직면하고 모든 사람으로

{ 
    "to": "d-3qyvyqefU:APA91bG_nHNYeYuKwB3oIvRKStVgSyelTIhX6rtu6LGPAjgo-LGDVk9iFO5LWZ-XFMeeRVkZm0suMyJAnWORWbZlMaVcHmhFTZOKPI_A-D2wYXM0SIIT8pZZ2g4W55S1bz9YD5y625fv", 
    "priority": "high", 
    "content_available": true, 
    "registration_id": "d-3qyvyqefU:APA91bG_nHNYeYuKwB3oIvRKStVgSyelTIhX6rtu6LGPAjgo-LGDVk9iFO5LWZ-XFMeeRVkZm0suMyJAnWORWbZlMaVcHmhFTZOKPI_A-D2wYXM0SIIT8pZZ2g4W55S1bz9YD5y625fv", 
    "collapse_key": "Collapse Key", 
    "data": { 
     "type": "default", 
     "person": "2123435", 
     "token": "asdmmio23j4123azde3" 
    }, 
    "notification": { 
     "type": "default", 
     "title": "Howdie!", 
     "body": "Say hi to your new friend!" 
    } 
} 
+0

CLEAR_TOP && CLEAR_TASK && NEW –

+0

@VishalPatoliya와 같은 의도로 플래그를 지정하여 알림을 클릭하면 실행 프로그램 활동을 열 수 있지만 문제는 응용 프로그램이 백그라운드 일 때 알림을 생성하는 FCM SDK입니다. 나는 의도에 대해 어떤 플래그를 사용할지 알려줄 방법이 없습니다. –

+0

알림을 탭하면 앱이 배경에 있으며, 마지막 활동이 아닌 실행기 활동부터 시작해야합니다. –

답변

0

는 인 텐트 객체를 노출하는 FirebaseMessagingService 클래스의 방법이있다. 당신은 그것을 무시하고 같은 것을 수행 할 수 있습니다

@Override 
protected int zzaa(Intent intent) { 
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    return super.zzaa(intent); 
} 

위의 코드는 문제를 해결해야한다,하지만 대부분 중포 기지의 사람들은 미래에 액세스 한정자를 변경합니다 - 이미하지 않은 경우. 나는 그들의 티켓을 열었고 그들이이 행동을 재현 할 수 있고 버그를 어느 시점에서 고칠 수 있다는 확인을 받았습니다.

+0

당신은 –

+0

'com.google.firebase : firebase-messaging : 9.2.0' –

+0

을 컴파일하고있는 sdk 버전을 사용하고 있습니다. 또한 click_action 속성과 singleInstance 실행 모드를 사용해 보았습니다.너 그거 해봤 니? –

관련 문제