Saya membutuhkan program yang akan menambahkan notifikasi di Android. Dan ketika seseorang mengklik notifikasi, itu akan mengarahkan mereka ke aktivitas kedua saya.
Saya telah membuat kode. Notifikasi seharusnya berfungsi, tetapi karena alasan tertentu tidak berfungsi. Tidak Notification
muncul sama sekali. Saya tidak tahu apa yang saya lewatkan.
Kode file-file itu:
Notification n = new Notification.Builder(this)
.setContentTitle("New mail from " + "[email protected]")
.setContentText("Subject")
.setContentIntent(pIntent).setAutoCancel(true)
.setStyle(new Notification.BigTextStyle().bigText(longText))
.build();
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
// Hide the notification after it's selected
notificationManager.notify(0, n);
android
notifications
Choudhury AM
sumber
sumber
Activity
tidak diluncurkan? ApakahNotification
tidak ditayangkan?Jawaban:
Kode tidak akan berfungsi tanpa ikon. Jadi, tambahkan
setSmallIcon
panggilan ke builder chain seperti ini agar berfungsi:Android Oreo (8.0) dan yang lebih baru
Android 8 memperkenalkan persyaratan baru untuk menyetel
channelId
properti dengan menggunakan fileNotificationChannel
.sumber
setChannelId
diperlukan. Sebelum saya menambahkan itu, pemberitahuan muncul di perangkat SONY saya tetapi tidak di perangkat SAMSUNG.Android.OS.BuildVersionCodes.O
sama dengan 26?if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){ mBuilder.setChannelId(channelId); }
karena tanpa pemeriksaan ini, pemberitahuan tidak akan muncul, bahkan jika API perangkat Anda> = 26.Sebenarnya jawaban ƒernando Valle sepertinya tidak benar. Kemudian lagi, pertanyaan Anda terlalu kabur karena Anda gagal menyebutkan apa yang salah atau tidak berhasil.
Melihat kode Anda, saya berasumsi bahwa
Notification
itu tidak ditampilkan.Notifikasi Anda tidak muncul, karena Anda tidak memberikan ikon. Meskipun dokumentasi SDK tidak menyebutkan bahwa itu diperlukan, pada kenyataannya sangat banyak dan Anda
Notification
tidak akan tampil tanpanya.addAction
hanya tersedia sejak 4.1. Sebelum itu, Anda akan menggunakanPendingIntent
untuk meluncurkan fileActivity
. Anda sepertinya menentukan aPendingIntent
, jadi masalah Anda ada di tempat lain. Logikanya, seseorang harus menyimpulkan bahwa itu adalah ikon yang hilang.sumber
Notification.Builder
, bukanNotificationCompat.Builder
, seperti yang Anda sarankan. Hanya karena ada pustaka kompatibilitas dan dapat digunakan, tidak berarti fungsinya tersedia di API normal. Tautan yang Anda berikan sebenarnya menetapkan ini. Pertanyaan ini jelas terkait denganNotification.Builder
, seperti yang ditunjukkan dalam contoh. Dan pustaka kompatibilitas mungkin hanya menyertakan fungsi ini setelah 4.1 tersedia. Jawaban Anda menyesatkan, karena sekarang Anda menyarankan itu telah tersedia sejak 2.3.Anda kehilangan ikon kecil. Saya melakukan kesalahan yang sama dan langkah di atas menyelesaikannya.
Sesuai dokumentasi resmi: Objek Notification harus berisi yang berikut:
Ikon kecil, ditetapkan oleh setSmallIcon ()
Judul, ditetapkan oleh setContentTitle ()
Teks detail, disetel oleh setContentText ()
Pada Android 8.0 (API level 26) dan yang lebih tinggi , ID saluran notifikasi yang valid, ditetapkan oleh setChannelId () atau disediakan dalam konstruktor NotificationCompat.Builder saat membuat saluran.
Lihat http://developer.android.com/guide/topics/ui/notifiers/notifications.html
sumber
Ini membuat saya tersandung hari ini, tetapi saya menyadari itu karena di Android 9.0 (Pie), Jangan Ganggu secara default juga menyembunyikan semua notifikasi, bukan hanya membungkamnya seperti di Android 8.1 (Oreo) dan sebelumnya. Ini tidak berlaku untuk notifikasi.
Saya suka mengaktifkan DND untuk perangkat pengembangan saya, jadi masuk ke pengaturan DND dan mengubah pengaturan untuk hanya membungkam pemberitahuan (tetapi tidak menyembunyikannya) memperbaikinya untuk saya.
sumber
Pembuatan saluran notifikasi adalah wajib untuk versi Android setelah Android 8.1 (Oreo) untuk membuat notifikasi terlihat. Jika notifikasi tidak terlihat di aplikasi Anda untuk Oreo + Android, Anda perlu memanggil fungsi berikut saat aplikasi Anda dimulai -
sumber
Saya pikir Anda melupakan
Lihat di sini: Tambahkan Tindakan
sumber
addAction()
ini tidak tersedia diNotification.Builder
.Action
instance yang dapat Anda buat denganNotification.Action.Builder
. PS, Selalu gunakan alternatif Compat (yaitu, NotificationCompat), karena Google cenderung menambal bug dan memberikan kompatibilitas yang lebih baik dengannya.setContentIntent(null)
dengan pembuatnya.Saya memiliki masalah yang sama dengan aplikasi Android saya. Saya mencoba notifikasi dan menemukan bahwa notifikasi muncul di emulator Android saya yang menjalankan sistem Android 7.0 (Nougat), sedangkan itu tidak berjalan di ponsel saya yang menjalankan Android 8.1 (Oreo).
Setelah membaca dokumentasi, saya menemukan bahwa Android memiliki fitur yang disebut saluran notifikasi, yang tanpanya notifikasi tidak akan muncul di perangkat Oreo. Di bawah ini adalah tautan ke dokumentasi Android resmi di saluran notifikasi.
sumber
Bagi saya itu adalah masalah dengan
deviceToken
. Harap periksa apakah token perangkat penerima dan pengirim diperbarui dengan benar dalam database Anda atau di mana pun Anda mengaksesnya untuk mengirim pemberitahuan.Misalnya, gunakan yang berikut ini untuk memperbarui token perangkat pada peluncuran aplikasi. Oleh karena itu akan selalu terupdate dengan baik.
sumber
deviceToken
dideklarasikan?onSuccess
kosong?onSuccess
s - saya mengacu pada bagian dalam (yang kosong))Anda juga perlu mengubah file build.gradle, dan menambahkan versi Android SDK yang digunakan ke dalamnya:
Ini bekerja seperti pesona dalam kasus saya.
sumber
Notifikasi mungkin tidak ditampilkan jika Anda menampilkan notifikasi dengan cepat satu demi satu atau membatalkan yang sudah ada, lalu langsung menampilkannya lagi (misalnya untuk memicu notifikasi pendahuluan untuk memberi tahu pengguna tentang perubahan dalam notifikasi yang sedang berlangsung). Dalam kasus ini, sistem dapat memutuskan untuk memblokir notifikasi jika dirasa terlalu berlebihan / berisi spam bagi pengguna.
Harap dicatat, bahwa setidaknya pada stok Android (diuji dengan 10) dari luar perilaku ini terlihat agak acak: terkadang terjadi dan terkadang tidak. Dugaan saya, ada ambang waktu yang sangat singkat di mana Anda tidak boleh mengirim terlalu banyak notifikasi. Menelepon
NotificationManager.cancel()
dan kemudianNotificationManager.notify()
terkadang menyebabkan perilaku ini.Jika Anda memiliki opsi, saat memperbarui pemberitahuan jangan membatalkannya sebelumnya, tetapi panggil saja
NotificationManager.notify()
dengan pemberitahuan yang diperbarui. Ini sepertinya tidak memicu pemblokiran yang disebutkan di atas oleh sistem.sumber
Jika Anda menggunakan versi> = Android 8.1 (Oreo) saat menggunakan saluran Pemberitahuan, atur kepentingannya ke tinggi:
sumber