Tôi có một ứng dụng nghe thông báo qua điện thoại và gửi tin nhắn đến đồng hồ Android Wear qua MessageApi
. Mọi thứ hoạt động tốt trừ một số thiết bị chạy Android 6, đặc biệt là Huawei Mate 8 (trông giống như tất cả Huawei Android 6 đều làm điều này).NotificationListenerService và chế độ Doze và Ứng dụng Chờ
Huawei đã thực hiện riêng việc xử lý nền của ứng dụng bị đóng băng (Ứng dụng được bảo vệ). Từ các báo cáo của người dùng, tôi đã xác nhận rằng ứng dụng của tôi có ngoại lệ trong các ứng dụng được bảo vệ của Huawei và cũng ở chế độ Doze của Android 6. Ứng dụng hoạt động OK nhưng sau 15 phút hiển thị chính xác, ứng dụng của tôi sẽ ngừng gửi tin nhắn đến đồng hồ Android Wear đã kết nối. Ứng dụng của tôi cũng có thể ghi lại lịch sử thông báo đã nhận và không có gì đến sau 15 phút ... cho đến khi màn hình điện thoại được bật và ứng dụng của tôi được mở. Sau đó tất cả các thông báo cần phải đến trong khi màn hình của điện thoại đã bị tắt khi thực hiện NotificationListenerService
và được gửi tới đồng hồ, tất cả cùng một lúc. Điều này cũng được xác nhận với lịch sử được ghi lại.
Bất kỳ ý tưởng nào về cách sửa lỗi này cho các điện thoại này, đặc biệt là Huawei Mate 8 với Android 6 có chế độ Doze?
Hành vi chính xác của NotificationListenerService
trong khi thiết bị ở chế độ ngủ gật và/hoặc ứng dụng ở chế độ chờ?
EDIT
Người sử dụng cũng đã xác nhận rằng điện thoại của họ đang không ở trong một chế độ tiết kiệm điện năng mà còn ảnh hưởng đến các ứng dụng nền và dịch vụ của họ. Lỗi này trông giống như Huawei độc quyền vì không có người dùng Nexus nào đã báo cáo điều này và OnePlus One của tôi với M cũng không thực hiện việc này. Ngoài ra, bản xem trước N hoạt động tốt trên các thiết bị Nexus.
EDIT 2
Tôi đã thêm một dịch vụ foreground tùy chọn (startForeground()
) để ứng dụng của tôi có một thông báo thường trú tại các trung tâm thông báo, do đó ứng dụng của tôi nên được loại trừ khỏi tất cả các tối ưu hóa pin. Đối với thông báo dịch vụ nền trước, tôi đã sử dụng mức độ ưu tiên là NotificationCompat.PRIORITY_MIN
và tôi đã thêm cờ Notification.FLAG_ONGOING_EVENT
. Điều này đã giúp một chút trên điện thoại Huawei nhưng không nhiều, bây giờ các thông báo chậm trễ đến vào NotificationListenerService
của tôi ngay sau khi màn hình được bật thay vì sau khi mở ứng dụng của tôi. Tôi không sử dụng số startForeground()
trong số NotificationListenerService
nhưng trong một Service
khác vì tôi không có quyền kiểm soát vòng đời của nó.
bài viết Đó là về thông báo đẩy và thông báo không địa phương. Tôi không có máy chủ cho ứng dụng của mình, nó hoàn toàn ngoại tuyến, vì vậy tôi không thể đánh thức điện thoại thông qua thông báo đẩy ưu tiên cao. Cũng không thể gửi thông báo đẩy tới điện thoại khi điện thoại đó hiển thị thông báo ... – shelll
Theo bài viết, có bạn sẽ không thể đánh thức thiết bị lên – NecipAllef