2017-08-03 16 views
5

Şu anda bir uygulamayı Android O'ya geçiş üzerinde çalışıyorum ve şu anda bildirim kanalları üzerinde çalışıyorum.IMPORTANCE_MIN ile bir bildirim kanalında bir ön plan servis bildirimi koymak mümkün mü?

Farklı importance levels ile farklı kanallar yaptım ve uygulama yeni mimariye (daha fazla itme odaklı) geçiş yapana kadar her zaman çalışması gereken bir ön plan hizmetine sahip olduğundan, bu bildirimi bir kanala koymayı düşündüm. IMPORTANCE_MIN olarak ayarlanan öneme sahiptir, böylece oradadır, ancak kullanıcıyı rahatsız etmez ve durum çubuğuna bir simge yerleştirmez. Bunu, ben (Ev veya Geri düğmeleriyle) arka planda Başvurumu koyduğunuzda

Ancak, öyle gibi benim Uygulama arka planda çalışmakta olduğunu söyleyip bir Android Sistem bildirim almak:

Kanalımı değiştirir ve IMPORTANCE_LOW'u kullanırsam, sorun giderilir, ancak bildirim daha belirgindir.

Yani, benim sorum şu ki - denediğim şeyi yapmak mümkün mü? Sistemin geliştiricilerin bunu yapmasına izin vermeyeceğini biliyorum, çünkü bir önalan hizmetiniz varsa, kullanıcı tarafından görülebilir olmalı, ancak bu sadece bir tahmindir ve bununla ilgili hiçbir belge bulamadım ve bu yüzden bu soruyu yayınlamak.

İkinci sorum ise - Öncelikle, bildiriminizin önceliğini PRIORITY_MIN olarak ayarlarsanız, bu bildirimi bir ön plan hizmetini yapmak için bir hizmete bağlayabilir misiniz, yoksa her zaman böyle bir şey yok mu?

Düzenleme: Şu anda kalan soru neden olacak şekilde Android Sistemi, önemi IMPORTANCE_MIN (teşekkürler, M66B) ile kanallar için bildirim gösterir Onaylandı? Bunun arkasındaki mantığı bilen var mı, yoksa herhangi bir yerde herhangi bir belge bulabilir mi? Bu, izleyiciye bildirilmesi gereken bir hata olabilir mi?

+0

Bildirim önceliğini kullanma Ön planda hizmet bildirimleri için PRIORITY_MIN, Android O uygulamasından önce ve ayrıca Android O deneyimimin dışında iyi çalıştı. – M66B

+2

Yani, Android O'da, hala API level 26'yı hedeflemiyorsanız? Çünkü, API 26 seviyesinden beri öncelikler kullanımdan kaldırılmıştır ve bildirimlerinizi sipariş etmek için bunun yerine ithalat kanalları ile bildirim kanalları oluşturmanız gerekir. – Anax

+0

Bildirimlerin önceliği API 26 seviyesinde kullanımdan kaldırıldı, ancak yeni bildirim kanalı 'önem', böylece aynı şeyi hala başarabilirsiniz. Buraya bakın: https://developer.android.com/reference/android/app/NotificationChannel.html#setImportance(int) – M66B

cevap

2

Bu davranış, hemen belgelenmiştir: https://developer.android.com/reference/android/app/NotificationManager.html#IMPORTANCE_MIN

Minimum bildirim önemi: Sadece ekranın alt gölgede gösterir. Bu ön planda hizmetin kullanıcının kadar önem verdiği bir şey olması gerektiği için Service.startForeground ile kullanılmamalıdır; bu, bildirimini en az önemini işaretlemek için anlam ifade etmemektedir. Bunu Android sürüm O olarak yaparsanız, sistem uygulamanızın arka planda çalışan uygulamanızla ilgili daha yüksek öncelikli bir bildirim gösterecektir.

Ve ayrıca burada: o durum çubuğunda bir simge gösterir, böylece Android O, ön plan hizmet bildirimleri için bir kanalın varsayılan önem derecesine olarak https://material.io/guidelines/patterns/notifications.html#notifications-settings

en az IMPORTANCE_LOW olmalıdır. Daha az belirgin IMPORTANCE_MIN seviyesini kullanarak

Kanallar uygulama pil kullandığını belirten IMPORTANCE_LOW de Android'den bir ekstra bildirim gönderilir.

Sidenote: Bu, bizim için gerçek bir ağrı olduğundan bizim ön plan bildirim sunmak için hiçbir ilginç bilgiler vardı dinamik PRIORITY_DEFAULT ve PRIORITY_MIN arasında geçiş yapmak için kullanılan O öncesinde. Kanallarla artık IMPORTANCE'ı dinamik olarak değiştiremeyiz ve bu özelliği kaldırmak zorunda kaldık.

+1

Çok teşekkürler! Çok benzer bir özelliği vardı, onu da kaldırmak zorunda kaldı. – Anax

+1

Sanırım cevap, yüksek öncelikli bilgiler için ayrı bir kanal kullanmak ve kullanıcıya, ana bildirimin görünürlüğünü manuel olarak nasıl azaltacağı konusunda yönlendirmektir. –

İlgili konular