2016-07-08 20 views
6

Zaimplementowałem Firebase do powiadamiania push w mojej aplikacji na Androida. Zaimplementowałem dwie usługi rejestrowania tokena i tworzenia powiadomienia po jego wykryciu. Kiedy moja aplikacja jest uruchomiona, działa, ale gdy moja aplikacja jest zamknięta, nie działa.Firebase Push Notification

public class FirebaseinstanceIdService extends FirebaseInstanceIdService { 

    @Override 
    public void onTokenRefresh() { 
     String refreshedToken = FirebaseInstanceId.getInstance().getToken(); 
     Log.e("Firebase", refreshedToken); 
     MainActivity.setFirebaseToken(refreshedToken); 
    } 

} 

public class MyFirebaseMessageService extends FirebaseMessagingService { 

    private static final String TAG = "MyFirebaseMsgService"; 

    @Override 
    public void onMessageReceived(RemoteMessage remoteMessage) { 
     //Displaying data in log 
     //It is optional 
     Log.e(TAG, "From: " + remoteMessage.getFrom()); 
     Log.e(TAG, "Notification Message Body: " + remoteMessage.getData().get("title")); 

     //Calling method to generate notification 
     sendNotification(remoteMessage.getData()); 
    } 

    //This method is only generating push notification 
    //It is same as we did in earlier posts 
    private void sendNotification(Map<String, String> notification) { 
     Intent intent = new Intent(this, MainActivity.class); 
     intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, 
      PendingIntent.FLAG_ONE_SHOT); 

     Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); 
     NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) 
      .setSmallIcon(R.mipmap.ic_launcher) 
      .setContentTitle(notification.get("title")) 
      .setContentText(notification.get("body")) 
      .setAutoCancel(true) 
      .setSound(defaultSoundUri) 
      .setContentIntent(pendingIntent); 

     NotificationManager notificationManager = 
      (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 

     notificationManager.notify(0, notificationBuilder.build()); 
    } 
} 

A mój manifest:

<service 
     android:name=".FirebaseinstanceIdService"> 
     <intent-filter> 
      <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/> 
     </intent-filter> 
    </service> 
    <service 
     android:name=".MyFirebaseMessageService"> 
     <intent-filter> 
      <action android:name="com.google.firebase.MESSAGING_EVENT"/> 
     </intent-filter> 
    </service> 

I moja prośba:

{ 
    "to": "ex1CtVz5bbE:APA91bHiM_BCun62A9iCobF1yV26Dwn-hYCDhkYPoWEG5ZdqH0P28UsE5q1v7QibwAX7AJ290-9en9L6f548_2b7WEbJ8RPEWlIotLczjjCP7xEOWqeJk6Iz44vilWYvdu4chPwfsvXD", 
    "data": { 
     "title": "Notification", 
     "body": "Message", 
    } 
} 

ja już znalazłem kilka rozwiązań w StackOverflow ale to nie działa w moim przypadku. Mam API Rest, który wywołuje API Request Post: https://fcm.googleapis.com/fcm/send

Moje pytanie brzmi: czy Firebase obsługuje powiadomienia push, gdy aplikacja jest zamknięta i jak?

Dziękuję za odpowiedzi

+0

Czy możesz również określić rozwiązania * StackOverflow *, które wypróbowałeś i nie działały? Pomoże to zawęzić to, co to powoduje. –

+0

W wywołaniu api parametry mogą być obiektem powiadomień lub obiektem danych, który próbowałem z obydwoma i nie działa. – yozzy

+0

Dodaj swój manifest.xml – Saini

Odpowiedz

5

FCM robi powiadomienia wsparcie, gdy aplikacja jest zamknięty. Twój kod wydaje się być OK, więc przypuszczam, że oszczędzacze energii (lub oszczędzające energię) mogą zabijać twoje powiadomienia. Miałem takie problemy na moim Asus Zenfone, również zostały zgłoszone w przypadkach korzystania z Huawei i Xiaomi. Po prostu wyłącz je lub dodaj swoją aplikację na liście wyjątków, jeśli taka istnieje. W najnowszych wersjach Androida jest też nowy tryb oszczędzania energii, spróbuj go również wyłączyć.

+0

Ok Używam Huawei. Dziękuję za odpowiedź – yozzy

+0

@yozzy, czy to rozwiązało twój problem? – inthy

+0

Dziękuję Właśnie testuję na HTC i działa świetnie. Czy pomysł na rozwiązanie tego problemu na telefonie jest niezgodny? – yozzy

Powiązane problemy