0

안드로이드 - 앱이 포 그라운드에있을 때 Firebase 푸시 알림을 방지하는 방법?

내가 통지 유형을 보낼 때 잘 알고 내가 때 그걸 얻기 위해 데이터 알림을 사용했습니다 Y 그건, 내가 중포 기지 및 전송 데이터 알림에 푸시 알림 서비스 만들었 아주 잘 onMessageReceived(RemoteMessage remoteMessage) 수신 앱이 삭제되었습니다.

내 경우에는 앱이 포 그라운드 모드 일 때 onMessageReceived(RemoteMessage remoteMessage)이 항상 호출되기 때문에 앱이 포어라운드 모드 일 때 알림을 보내지 않습니다.

이 상황을 방지하려면 어떻게해야합니까?

내 알림 형식은 이것이다 ..

{ 
    "to" : "cGPhwcLbe5Y:APA91bFVAR6n9GxbDBovzd8X9nMBvKZ4Z098FzmkMGGUAuMhdps4uEof8mppUh7vrFTAsdFGzyurHa4gQ1nWgP-ncaN53ZtHziLi8YdHMEOGvtx6pA7ttCY5QhE5XKdFZ2QfX", 
    "data" : { 
    "message":"hi" 
} 

} 
+0

@AL. 해당 링크 맨 – TapanHP

+1

whoops를 제공하십시오. 죄송합니다. 잘못된 링크를 복사했습니다. 여기있다 - http://stackoverflow.com/q/8489993/4625829 –

+0

그 혼동 코멘트를 삭제 @AL. 두 번째로 그 대답에 대한 의견을 보았습니까? 그 대답은 이미 확인했지만 효율적인 방법은 아니며 GET_TASKS 권한은 api 21 이상으로 사용되지 않으며 해당 답변 작업을 수행하는 데 필요합니다. – TapanHP

답변

2

당신이 당신의 서버에서 보낼 수있는 메시지의 2 가지 유형이있다. 알림 메시지중포 기지 자체로 처리 할 것입니다

enter image description here

.

데이터 메시지은 사용자 자신의 알림을 관리해야하는 사용자 정의 페이로드입니다.

그래서 서버 스크립트에서 데이터 키를 사용해야합니다.

는 앱이 앱이 포 그라운드에있는 경우에만 알림이 onMessageReceived 콜백에 전달이 대답 https://stackoverflow.com/a/27689352/942224

private boolean isAppInForground(Context context, String packageName){ 
    String[] activePackages; 
    ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); 
    activePackages = getActivePackages(am); 

    if (activePackages != null) { 
     return activePackages[0].equals(packagName) 
    } 
    return false; 
} 



private String[] getActivePackages(ActivityManager mActivityManager) { 
final Set<String> activePackages = new HashSet<>(); 
final List<ActivityManager.RunningAppProcessInfo> processInfos = mActivityManager.getRunningAppProcesses(); 
for (ActivityManager.RunningAppProcessInfo processInfo : processInfos) { 
      if (processInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) { 
       activePackages.addAll(Arrays.asList(processInfo.pkgList)); 
      } 
     } 
     return activePackages.toArray(new String[activePackages.size()]); 
    } 
+0

나는 그것에 대해 잘 알고 있다고 말하지 않았는가? 이미 데이터의 메시지 매개 변수가있는 데이터 알림을 보내고 있습니다. – TapanHP

+0

포 그라운드 모드에서 알림을 보내지 않으려합니다. – TapanHP

+0

@TapanHP 예 처음에는 읽지 않았습니다. 편집 된 답변보기. –

0

에서 최고 스택에서 실행되고있는 것을 확인합니다. 앱이 백그라운드에 있거나 닫힌 경우 알림 센터에 알림 메시지가 표시됩니다. 앱이 포 그라운드 일 때 onMessageReceived이 호출되는 것을 막으려는 경우. 앱에서 FirebaseMessagingService을 제거하면됩니다.

확인 docuemnt : Send your First Message to a Backgrounded App

관련 문제