Pemberitahuan Tolak
Hantar pemberitahuan tolak melalui Firebase Cloud Messaging. Sediakan FCM, cipta saluran pemberitahuan, bina pemberitahuan dengan tindakan, dan kendalikan penghantaran ketika latar depan berbanding latar belakang.
Pemberitahuan Tolak ialah pelajaran Android Academy percuma di CoddyKit. Ini ialah pelajaran 4 daripada 6. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Android Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Android Academy merangkumi sejumlah 6 pelajaran.
Apakah Pemberitahuan Tolak?
Pemberitahuan tolak membolehkan pelayan anda menghantar mesej kepada pengguna walaupun aplikasi tidak berada di latar depan. Kegunaan biasa:
- Makluman mesej baharu
- Kemas kini status pesanan
- Berita tergempar
- Peringatan dan promosi
Pada Android, Firebase Cloud Messaging (FCM) ialah perkhidmatan penghantaran tolak standard.
Gambaran Keseluruhan FCM
Aliran Firebase Cloud Messaging (FCM):
- Aplikasi mendaftar dengan FCM pada pelancaran pertama → menerima token peranti
- Aplikasi menghantar token kepada pelayan anda
- Apabila anda ingin menghantar pemberitahuan tolak, pelayan anda menghantar mesej kepada FCM
- FCM menghantarnya kepada peranti
FCM adalah percuma, boleh dipercayai dan berfungsi walaupun aplikasi telah ditamatkan.
Menambahkan Firebase pada Projek
Langkah untuk menambahkan Firebase:
- Pergi ke Firebase Console → Add project → Add Android app
- Daftarkan aplikasi anda dengan nama pakej
- Muat turun
google-services.jsondan letakkannya dalamapp/ - Tambahkan pemalam dan kebergantungan
// project/build.gradle:
buildscript {
dependencies { classpath 'com.google.gms:google-services:4.4.1' }
}
// app/build.gradle:
plugins { id 'com.google.gms.google-services' }
dependencies {
implementation platform('com.google.firebase:firebase-bom:32.7.4')
implementation 'com.google.firebase:firebase-messaging-ktx'
}Kebenaran FCM (Android 13+)
Bermula dengan Android 13 (API 33), anda mesti meminta kebenaran POST_NOTIFICATIONS semasa masa jalan — sama seperti kebenaran berisiko:
<!-- AndroidManifest.xml -->
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
// In Activity (Android 13+):
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
requestPermissionLauncher.launch(android.Manifest.permission.POST_NOTIFICATIONS)
}FirebaseMessagingService
Cipta perkhidmatan yang mengendalikan mesej FCM masuk dan penyegaran token:
class MyFirebaseService : FirebaseMessagingService() {
override fun onNewToken(token: String) {
// Send token to your backend to enable push delivery
sendTokenToServer(token)
}
override fun onMessageReceived(message: RemoteMessage) {
val title = message.notification?.title ?: "New Message"
val body = message.notification?.body ?: ""
showNotification(title, body)
}
}Mendaftarkan Perkhidmatan dalam Manifest
Isytiharkan perkhidmatan dalam AndroidManifest.xml:
<service
android:name=".MyFirebaseService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>Saluran Pemberitahuan (Android 8+)
Sejak Android 8 (Oreo), pemberitahuan mesti ditetapkan kepada satu saluran. Pengguna boleh mengawal bunyi, getaran dan kepentingan bagi setiap saluran:
fun createNotificationChannel(context: Context) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val channel = NotificationChannel(
"messages_channel", // channel ID
"Messages", // user-visible name
NotificationManager.IMPORTANCE_HIGH
).apply {
description = "Incoming message notifications"
enableVibration(true)
}
val manager = context.getSystemService(NotificationManager::class.java)
manager.createNotificationChannel(channel)
}
}Membina & Memaparkan Pemberitahuan
Gunakan NotificationCompat.Builder untuk keserasian merentas versi Android:
fun showNotification(context: Context, title: String, body: String) {
val intent = Intent(context, MainActivity::class.java)
val pendingIntent = PendingIntent.getActivity(
context, 0, intent,
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
)
val notification = NotificationCompat.Builder(context, "messages_channel")
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle(title)
.setContentText(body)
.setPriority(NotificationCompat.PRIORITY_HIGH)
.setAutoCancel(true) // dismiss on tap
.setContentIntent(pendingIntent) // open app on tap
.build()
NotificationManagerCompat.from(context)
.notify(System.currentTimeMillis().toInt(), notification)
}Pemberitahuan dengan Tindakan
Tambahkan butang tindakan pada pemberitahuan supaya pengguna boleh bertindak tanpa membuka aplikasi:
val replyIntent = Intent(context, ReplyReceiver::class.java)
val replyPending = PendingIntent.getBroadcast(
context, 1, replyIntent,
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
)
val notification = NotificationCompat.Builder(context, "messages_channel")
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle("New message from Alice")
.setContentText("Hey, are you coming?")
.addAction(R.drawable.ic_reply, "Reply", replyPending)
.addAction(R.drawable.ic_dismiss, "Dismiss", null)
.build()Pengendalian Latar Depan berbanding Latar Belakang
FCM berkelakuan berbeza bergantung pada keadaan aplikasi:
- Aplikasi di latar depan —
onMessageReceived()dipanggil; anda membina dan memaparkan pemberitahuan sendiri - Aplikasi di latar belakang/ditamatkan — FCM memaparkan pemberitahuan secara automatik daripada muatan
notification;onMessageReceivedTIDAK dipanggil
Letakkan data tambahan dalam muatan data (bukan notification) supaya anda sentiasa menerimanya dalam onMessageReceived.
Mendapatkan Token FCM
Dapatkan token FCM semasa untuk dihantar kepada pelayan anda:
FirebaseMessaging.getInstance().token.addOnCompleteListener { task ->
if (!task.isSuccessful) {
Log.w("FCM", "Fetching token failed", task.exception)
return@addOnCompleteListener
}
val token = task.result
Log.d("FCM", "Token: $token")
// Send token to your server
sendTokenToServer(token)
}Semakan Pantas
Apakah yang berlaku apabila aplikasi anda berada di latar belakang dan FCM menghantar mesej dengan muatan 'notification'?
Ulang Kaji: Pemberitahuan Tolak
Pemberitahuan tolak dengan FCM pada Android:
- Tambahkan Firebase,
google-services.jsondanfirebase-messaging-ktx - Minta
POST_NOTIFICATIONSpada Android 13+ - Cipta
FirebaseMessagingService→onNewToken+onMessageReceived - Cipta
NotificationChanneluntuk Android 8+ - Bina pemberitahuan dengan
NotificationCompat.Builder - Gunakan muatan data supaya sentiasa menerimanya dalam
onMessageReceived
Seterusnya: jadualkan kerja latar belakang dengan WorkManager.
Pelajari Kotlin dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 36
- Pelajaran
- 152
Soalan Lazim
Adakah pelajaran “Pemberitahuan Tolak” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Android Academy, termasuk “Pemberitahuan Tolak”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Android Academy merangkumi sejumlah 6 pelajaran.
Apakah yang akan saya pelajari dalam “Pemberitahuan Tolak”?
Hantar pemberitahuan tolak melalui Firebase Cloud Messaging. Sediakan FCM, cipta saluran pemberitahuan, bina pemberitahuan dengan tindakan, dan kendalikan penghantaran ketika latar depan berbanding l… Anda berlatih Android Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Android Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Android Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 6.
Berapa lamakah pelajaran “Pemberitahuan Tolak” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Android Academy ini?
Ya. Setiap pelajaran Android Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Retrofit & API REST
- Memuatkan Imej dengan Coil
- Pengendalian Ralat & UX
- Pemberitahuan Tolak
- WorkManager & Tugasan Latar Belakang
- Menerbitkan ke Play Store