2016-06-23 8 views
0

Ich habe für Push-Benachrichtigungen zu Firebase Cloud Messaging migriert. Jedes Ding funktioniert gut, ich bekomme Benachrichtigungen, wenn die App geöffnet ist oder im Hintergrund läuft, aber wenn die App geschlossen ist und eine Nachricht vom Server gesendet wird, dann bekommst du sie natürlich nicht auf dem Gerät. Jetzt, wenn ich die App wieder öffne, sollte ich die ausstehende Benachrichtigung erhalten (die Benachrichtigung wurde gesendet, während die App geschlossen wurde), aber ich bekomme die Benachrichtigung nicht.FCM - Keine Benachrichtigungen beim Neustart der App empfangen

Das ist meine FireBaseMessagingService Klasse

public class MyFirebaseMessagingService extends FirebaseMessagingService { 
public static String TAG="Firebase"; 
@Override 
public void onMessageReceived(RemoteMessage remoteMessage) { 
    Log.d(TAG, "From: " + remoteMessage.getFrom()); 
    Log.d(TAG, "Notification Message Body: " + remoteMessage.getData().get("message")); 
    notification(remoteMessage.getData().get("message")); 
} 
void notification(String s) 
{ 
    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this); 
    mBuilder.setSmallIcon(R.mipmap.logo); 
    mBuilder.setSound(Settings.System.DEFAULT_NOTIFICATION_URI); 
    mBuilder.setContentTitle("App"); 
    mBuilder.setContentText(s); 
    mBuilder.setAutoCancel(true); 
    Intent resultIntent = new Intent(this, MainActivity.class); 
    TaskStackBuilder stackBuilder = TaskStackBuilder.create(this); 
    stackBuilder.addParentStack(MainActivity.class); 
    stackBuilder.addNextIntent(resultIntent); 
    PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT); 
    mBuilder.setContentIntent(resultPendingIntent);; 
    NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 

    mNotificationManager.notify(101,mBuilder.build()); 
} 
} 

Das ist meine FirebaseInstance Klasse ist

public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService { 
public static String TAG="Firebase"; 
@Override 
public void onTokenRefresh() { 

    String refreshedToken = FirebaseInstanceId.getInstance().getToken(); 
    Log.d(TAG, "Refreshed token: " + refreshedToken); 

} 
} 

AndroidManifest.xml -

<service 
     android:name=".Helpers.MyFirebaseMessagingService"> 
     <intent-filter> 
      <action android:name="com.google.firebase.MESSAGING_EVENT"/> 
     </intent-filter> 
    </service> 
    <service 
     android:name=".Helpers.MyFirebaseInstanceIDService"> 
     <intent-filter> 
      <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/> 
     </intent-filter> 
    </service> 
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" /> 
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.WAKE_LOCK" /> 
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> 
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> 

Ist es möglich, die Pending Benachrichtigung zu erhalten, wenn die App wird neu gestartet?

+0

lassen Sie mich sehen, die Berechtigungen, die Sie auf Ihrem Manifest –

+0

@SalvatoryBaya hinzugefügt hinzugefügt, um die Berechtigungen –

+0

Blick auf meine Antwort aktualisiert –

Antwort

3

Ich denke, es ist möglich, da Sie einen Dienst verwenden, aber Android lässt Sie nicht erhalten, bis Sie eine Art von Erlaubnis hinzufügen. Recherchieren Sie, für welche Erlaubnis diese Bedingung möglich ist, und aktualisieren Sie uns bitte.

fügen Sie die folgende Erlaubnis, dann sollten Sie gut sein.
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> <uses-permission android:name="android.permission.WAKE_LOCK" />