2016-07-08 53 views
6

Android uygulamamda push bildirimi için Firebase uyguladım. Jetonu kaydetmek ve tespit edildiğinde bildirim oluşturmak için iki servis uyguladım. Uygulamam başladığında çalışıyor, ancak uygulamanız kapatıldığında çalışmıyor.Firebase Push Bildirimi

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()); 
    } 
} 

Ve apaçık:

<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> 

Ve isteği:

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

Zaten StackOverflow birkaç çözümler bulduk ama benim durumumda çalışmaz. API İsteği Gönderi olan bir API Rest'im var: https://fcm.googleapis.com/fcm/send

Sorularım var: Firebase, uygulama kapatıldığında push bildiriminde bulunur mu ve nasıl yapılır?

cevaplar

+0

Ayrıca denediğiniz ve çalışmadığınız * StackOverflow * çözümlerini de belirtebilir misiniz? Buna neden olanı daraltmak yardımcı olur. –

+0

API çağrısında, parametreler her ikisiyle de denediğim bildirim nesnesi veya veri nesnesi olabilir ve çalışmaz. – yozzy

+0

manifest.xml – Saini

cevap

5

uygulama kapandığında FCM destek bildirimleri yapar için teşekkür ederiz. Kodunuz iyi görünüyor, bu yüzden pil ekonomizörlerinin (veya güç tasarrufu yapanların) bildirimlerinizi öldürebileceğini varsayalım. Asus Zenfone'mda böyle problemlerim vardı, ayrıca Huawei ve Xiaomi'nin kullanıldığı durumlarda da rapor edildi. Varsa bunları devre dışı bırakın veya istisna listesinde uygulamanızı ekleyin. Ayrıca, Android'in son sürümlerinde yeni bir güç tasarrufu modu var, bunu da devre dışı bırakmaya çalışın.

+0

Tamam Bir Huawei kullanıyorum. Cevabınız için teşekkürler – yozzy

+0

@yozzy, sorununuzu çözdü mü? – inthy

+0

Teşekkür ederim sadece bir HTC üzerinde test ediyorum ve harika çalışıyor. Bu sorunu telefonla uyumlu olmayan bir şekilde çözmek için bir fikriniz var mı? – yozzy

İlgili konular