2016-07-08 47 views
6

Tôi đã triển khai Firebase để thông báo đẩy trong ứng dụng Android của mình. Tôi đã triển khai hai dịch vụ để đăng ký mã thông báo và tạo thông báo khi nó được phát hiện. Khi ứng dụng của tôi khởi chạy, ứng dụng sẽ hoạt động nhưng khi ứng dụng của tôi đóng, ứng dụng sẽ không hoạt động.Thông báo đẩy Firebase

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

Và biểu hiện của tôi:

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

Và yêu cầu của tôi:

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

Tôi đã tìm thấy một số giải pháp trong StackOverflow nhưng nó không hoạt động trong trường hợp của tôi. Tôi có phần còn lại API gọi là Yêu cầu API Bài đăng: https://fcm.googleapis.com/fcm/send

Vì vậy, có câu hỏi của tôi: Firebase có xử lý thông báo đẩy khi ứng dụng bị đóng và cách thực hiện không?

Cảm ơn câu trả lời của bạn

+0

Bạn cũng có thể chỉ định các giải pháp * StackOverflow * mà bạn đã thử và không hoạt động không? Nó sẽ giúp thu hẹp những gì gây ra điều này. –

+0

Trong cuộc gọi api các tham số có thể là đối tượng thông báo hoặc đối tượng dữ liệu tôi đã thử với cả hai và nó không hoạt động. – yozzy

+0

Thêm tệp kê khai của bạn – Saini

Trả lời

5

FCM hỗ trợ thông báo khi ứng dụng bị đóng. Mã của bạn có vẻ ổn, vì vậy tôi cho rằng các nhà tiết kiệm pin (hoặc trình tiết kiệm pin) có thể giết thông báo của bạn. Tôi đã có những vấn đề như vậy trên Asus Zenfone của tôi, họ cũng đã được báo cáo trong trường hợp sử dụng Huawei và Xiaomi. Chỉ cần vô hiệu hóa chúng hoặc thêm ứng dụng của bạn trong danh sách ngoại lệ, nếu có. Ngoài ra còn có chế độ tiết kiệm năng lượng mới trong các bản phát hành gần đây của Android, hãy thử tắt chế độ này.

+0

Ok Tôi sử dụng Huawei. Cảm ơn bạn đã trả lời câu hỏi của bạn – yozzy

+0

@yozzy, nó có giải quyết được vấn đề của bạn không? – inthy

+0

Cảm ơn bạn Tôi chỉ thử nghiệm trên HTC và nó hoạt động rất tốt. Bạn có một ý tưởng để giải quyết vấn đề này trên điện thoại không tương thích không? – yozzy

Các vấn đề liên quan