2017-09-14 18 views
6

Tôi đã cập nhật mã của mình lên API v26, thiết lập Kênh thông báo và tôi có thể thấy thông báo của mình, nhưng tôi có logic về các thông báo bị vô hiệu hóa. Trước 26 Tôi có một cái gì đó như:Cách xác định xem NotificationChannel có bị vô hiệu hóa bởi người dùng (API 26) không?

NotificationManagerCompat.from(context).areNotificationsEnabled() 

Và điều này có vẻ không hữu ích bây giờ. Vậy làm cách nào để biết liệu kênh thông báo có bị tắt trong cài đặt không?

+1

Có thể [tầm quan trọng] của kênh thông báo (https://developer.android.com/reference/android/app/NotificationChannel.html#getImportance()) trở thành [IMPORTANCE_NONE] (https://developer.android.com/reference /android/app/NotificationManager.html#IMPORTANCE_NONE)? Tôi không chắc chắn, chỉ cần giả định. – azizbekian

+1

@azizbekian cảm ơn bạn vì giả định, nó biến rằng bạn đúng. –

Trả lời

7

Tôi thấy rằng cách tiếp cận mới ChannelNotification không thay thế logic cũ, nó thêm một lớp điều khiển cho thông báo. Vì vậy, bây giờ chúng tôi có 2 kịch bản, xem ảnh chụp màn hình:

enter image description here

  1. Bạn có thể xác định nếu thông báo được kích hoạt:

    NotificationManagerCompat.from(context).areNotificationsEnabled(); 
    
  2. Bạn có thể xác định nếu thông báo của bạn được hiển thị cho người sử dụng:

    NotificationManager notificationManager = (NotificationManager) 
        context.getSystemService(Context.NOTIFICATION_SERVICE);  
        NotificationChannel notificationChannel = 
        notificationManager.getNotificationChannel(channelId);  
        int importance = notificationChannel.getImportance(); 
    

Nếu tầm quan trọng là NotificationManager.IMPORTANCE_NONE người dùng sẽ không nhìn thấy thông báo, nhưng thông báo ở đó, vì vậy bạn có thể sử dụng thông báo bằng dịch vụ Foreground và bạn nên loại bỏ thông báo đó. Nếu mức độ quan trọng là NotificationManager.IMPORTANCE_MIN hoặc người dùng cao hơn sẽ thấy thông báo.

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