2017-01-24 24 views
1

Cordova에서 최신 GCM 푸시 알림 플러그인을 사용하고 있습니다. 알림은 잘 작동하지만 사용자가 푸시 알림을 받으면 응용 프로그램을 포 그라운드로 보내려고합니다.GCM 푸시 알림 (코르도바)을받을 때 앱을 포 그라운드로 가져 오기

여러 곳에서 여러 가지 해결책을 시도했지만 알림을 받으면 애플리케이션을 포 그라운드로 만들 수 없습니다.

누군가가 여기에 비슷한 뭔가를 관리하는 것 같다,하지만 문제는 내가 성공을 복제 할 수 없습니다 내가 뭘 :

Bring cordova application to foreground when push arrives

자신의 문제의 GCMIntentService.java의 코드는 가능한 것과 다르다을 지금.

어떻게 작동합니까?

+0

가져올 수 있는지 확인? 'GCM'은 더 이상 사용되지 않습니다. 'FCM'사용 – Piyush

+0

FCM을 사용하는 경우이 기능을 사용할 수 있습니까? –

답변

0

GCMIntentservice.java 파일의 onMessageReceived 메소드에 다음 행을 입력하십시오.

@Override 
    public void onMessageReceived(String from, Bundle extras) { 
     Log.d(LOG_TAG, "onMessage - from: " + from); 

     if (extras != null) { 
      Context applicationContext = getApplicationContext(); 

      SharedPreferences prefs = applicationContext.getSharedPreferences(PushPlugin.COM_ADOBE_PHONEGAP_PUSH, Context.MODE_PRIVATE); 
      boolean forceShow = prefs.getBoolean(FORCE_SHOW, false); 
      boolean clearBadge = prefs.getBoolean(CLEAR_BADGE, false); 

      extras = normalizeExtras(applicationContext, extras); 

      if (clearBadge) { 
       PushPlugin.setApplicationIconBadgeNumber(getApplicationContext(), 0); 
      } 

      // if we are in the foreground and forceShow is `false` only send data 
      if (!forceShow && PushPlugin.isInForeground()) { 
       Log.d(LOG_TAG, "foreground"); 
       extras.putBoolean(FOREGROUND, true); 
       extras.putBoolean(COLDSTART, false); 
       PushPlugin.sendExtras(extras); 
      } 
      // if we are in the foreground and forceShow is `true`, force show the notification if the data has at least a message or title 
      else if (forceShow && PushPlugin.isInForeground()) { 
       Log.d(LOG_TAG, "foreground force"); 
       extras.putBoolean(FOREGROUND, true); 
       extras.putBoolean(COLDSTART, false); 

       showNotificationIfPossible(applicationContext, extras); 
      } 
      // if we are not in the foreground always send notification if the data has at least a message or title 
      else { 
       Log.d(LOG_TAG, "background"); 
       extras.putBoolean(FOREGROUND, false); 

       Intent wintent = new Intent(context, MainActivity.class); 
      wintent.addFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED | Intent.FLAG_ACTIVITY_NEW_TASK); 
      startActivity(wintent); 

       extras.putBoolean(COLDSTART, PushPlugin.isActive()); 

       showNotificationIfPossible(applicationContext, extras); 
      } 
     } 
    } 

그리고 당신은`GCM`를 사용하여 MainActivity.java 아직

+0

답장을 보내 주셔서 감사합니다. 나는 지금 그것을했고 MainActivity 코드를 입력하여 MainActivity를 임포트했습니다. 아직 앱을 앞으로 가져 오지 않고 있지만 ... 표준 푸시 메시지로 푸시 알림 만합니다. 다른 생각? –