Mengirim pesan pengujian ke aplikasi di latar belakang

Untuk mulai menggunakan FCM, buat kasus penggunaan yang paling sederhana: mengirim pesan notifikasi pengujian dari Notifications composer ke perangkat pengembangan saat aplikasi berjalan di latar belakang pada perangkat. Halaman ini membahas semua langkah untuk mencapainya, mulai dari penyiapan hingga verifikasi. Jadi, halaman ini mencakup langkah-langkah yang mungkin telah diselesaikan ketika menyiapkan aplikasi Flutter untuk FCM.

Menginstal plugin FCM

  1. Instal dan lakukan inisialisasi Firebase SDK untuk Flutter jika Anda belum melakukannya.

  2. Dari root project Flutter Anda, jalankan perintah berikut untuk menginstal plugin:

    flutter pub add firebase_messaging
    
  3. Setelah selesai, build ulang aplikasi Flutter Anda:

    flutter run
    

Mengakses token pendaftaran

Untuk mengirim pesan ke perangkat tertentu, Anda perlu mengetahui token pendaftaran perangkat tersebut. Karena Anda harus memasukkan token ke suatu kolom di konsol Notifications agar dapat menyelesaikan tutorial ini, pastikan Anda menyalin token tersebut atau menyimpannya dengan aman setelah mengambilnya.

Untuk mengambil token pendaftaran saat ini untuk instance aplikasi, panggil getToken(). Jika izin notifikasi belum diberikan, metode ini akan meminta izin notifikasi dari pengguna. Jika izin sudah diberikan, metode tersebut akan menampilkan token atau menolak future karena terjadi error.

final fcmToken = await FirebaseMessaging.instance.getToken();

Mengirim pesan notifikasi pengujian

  1. Instal dan jalankan aplikasi pada perangkat target. Pada perangkat Apple, Anda harus menyetujui permintaan izin untuk menerima notifikasi jarak jauh.

  2. Pastikan aplikasi berjalan di latar belakang pada perangkat.

  3. Di Firebase console, buka halaman Messaging.

  4. Jika ini adalah pesan pertama Anda, pilih Create your first campaign.

    1. Pilih Firebase Notification messages, lalu pilih Create.
  5. Atau, di tab Campaigns, pilih New campaign, lalu Notifications.

  6. Masukkan teks pesan. Semua kolom lainnya bersifat opsional.

  7. Pilih Send test message dari panel kanan.

  8. Dalam kolom yang berlabel Add an FCM registration token, masukkan token pendaftaran yang diperoleh di bagian sebelumnya pada panduan ini.

  9. Pilih Test.

Setelah Anda memilih Test, perangkat klien yang ditargetkan (dengan aplikasi berada di latar belakang) akan menerima notifikasi.

Untuk menganalisis pengiriman pesan ke aplikasi Anda, lihat dasbor pelaporan FCM, yang mencatat jumlah pesan yang terkirim dan dibuka di perangkat Apple dan Android, beserta data untuk "tayangan" (notifikasi yang dilihat oleh pengguna) untuk aplikasi Android.

Menangani interaksi

Saat pengguna mengetuk notifikasi, perilaku default di Android & iOS adalah membuka aplikasi. Jika dihentikan, aplikasi akan dimulai; dan jika berada di latar belakang, aplikasi akan dialihkan ke latar depan.

Bergantung pada konten notifikasi, Anda mungkin ingin menangani interaksi pengguna saat aplikasi terbuka. Misalnya, jika pesan chat baru dikirim menggunakan notifikasi dan pengguna memilihnya, sebaiknya Anda membuka percakapan tertentu saat aplikasi terbuka.

Paket firebase-messaging menyediakan dua cara untuk menangani interaksi ini:

  1. getInitialMessage(): Jika aplikasi dibuka dari status dihentikan, metode ini akan menampilkan Future yang berisi RemoteMessage. Setelah digunakan, RemoteMessage akan dihapus.
  2. onMessageOpenedApp: Stream yang memposting RemoteMessage saat aplikasi dibuka dari status latar belakang.

Untuk memastikan pengalaman yang lancar bagi pengguna, Anda harus menangani kedua skenario tersebut. Contoh kode di bawah ini menguraikan cara melakukannya:

class Application extends StatefulWidget {
  @override
  State<StatefulWidget> createState() => _Application();
}

class _Application extends State<Application> {
  // In this example, suppose that all messages contain a data field with the key 'type'.
  Future<void> setupInteractedMessage() async {
    // Get any messages which caused the application to open from
    // a terminated state.
    RemoteMessage? initialMessage =
        await FirebaseMessaging.instance.getInitialMessage();

    // If the message also contains a data property with a "type" of "chat",
    // navigate to a chat screen
    if (initialMessage != null) {
      _handleMessage(initialMessage);
    }

    // Also handle any interaction when the app is in the background via a
    // Stream listener
    FirebaseMessaging.onMessageOpenedApp.listen(_handleMessage);
  }

  void _handleMessage(RemoteMessage message) {
    if (message.data['type'] == 'chat') {
      Navigator.pushNamed(context, '/chat',
        arguments: ChatArguments(message),
      );
    }
  }

  @override
  void initState() {
    super.initState();

    // Run code required to handle interacted messages in an async function
    // as initState() must not be async
    setupInteractedMessage();
  }

  @override
  Widget build(BuildContext context) {
    return Text("...");
  }
}

Cara Anda menangani interaksi bergantung pada penyiapan aplikasi Anda. Contoh di atas menunjukkan contoh dasar penggunaan StatefulWidget.

Langkah berikutnya

Mengirim pesan ke aplikasi di latar depan

Setelah berhasil mengirim pesan notifikasi saat aplikasi berjalan di latar belakang, baca artikel Menerima Pesan di Aplikasi Flutter untuk memulai pengiriman ke aplikasi di latar depan.

Topik lanjutan tentang pesan notifikasi

Untuk menambahkan perilaku lain yang lebih canggih ke aplikasi, Anda memerlukan implementasi server.

Kemudian, di klien aplikasi Anda: