Android Academy · Pelajaran

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.

Pelajaran 4 daripada 613 langkah

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):

  1. Aplikasi mendaftar dengan FCM pada pelancaran pertama → menerima token peranti
  2. Aplikasi menghantar token kepada pelayan anda
  3. Apabila anda ingin menghantar pemberitahuan tolak, pelayan anda menghantar mesej kepada FCM
  4. FCM menghantarnya kepada peranti

FCM adalah percuma, boleh dipercayai dan berfungsi walaupun aplikasi telah ditamatkan.

Menambahkan Firebase pada Projek

Langkah untuk menambahkan Firebase:

  1. Pergi ke Firebase Console → Add project → Add Android app
  2. Daftarkan aplikasi anda dengan nama pakej
  3. Muat turun google-services.json dan letakkannya dalam app/
  4. 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; onMessageReceived TIDAK 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.json dan firebase-messaging-ktx
  • Minta POST_NOTIFICATIONS pada Android 13+
  • Cipta FirebaseMessagingService → onNewToken + onMessageReceived
  • Cipta NotificationChannel untuk Android 8+
  • Bina pemberitahuan dengan NotificationCompat.Builder
  • Gunakan muatan data supaya sentiasa menerimanya dalam onMessageReceived

Seterusnya: jadualkan kerja latar belakang dengan WorkManager.

Percuma untuk bermula

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

  1. Retrofit & API REST
  2. Memuatkan Imej dengan Coil
  3. Pengendalian Ralat & UX
  4. Pemberitahuan Tolak
  5. WorkManager & Tugasan Latar Belakang
  6. Menerbitkan ke Play Store
← Kembali ke Android Academy