Menyiapkan aplikasi klien Firebase Cloud Messaging di Flutter

Ikuti langkah-langkah berikut untuk menyiapkan klien FCM di Flutter.

Penyiapan dan persyaratan khusus platform

Beberapa langkah yang diperlukan bergantung pada platform yang Anda targetkan.

iOS+

Mengaktifkan kemampuan aplikasi di Xcode

Sebelum aplikasi dapat mulai menerima pesan, Anda harus mengaktifkan notifikasi push dan mode latar belakang dalam project Xcode.

  1. Buka ruang kerja project Xcode (ios/Runner.xcworkspace).
  2. Aktifkan notifikasi push.
  3. Aktifkan Pengambilan latar belakang dan Mode eksekusi latar belakang pada notifikasi jarak jauh.

Mengupload kunci autentikasi APNs

Sebelum menggunakan FCM, upload sertifikat APNs Anda ke Firebase. Jika Anda belum memiliki sertifikat APNs, buat di Apple Developer Member Center.

  1. Pada project Anda di Firebase console, pilih ikon roda gigi, pilih Project Settings, lalu pilih tab Cloud Messaging.
  2. Pilih tombol Upload Certificate untuk sertifikat pengembangan, sertifikat produksi, atau keduanya. Anda harus memilih setidaknya satu dari keduanya.
  3. Untuk masing-masing sertifikat, pilih file .p12, dan masukkan sandi jika ada. Pastikan ID paket untuk sertifikat ini cocok dengan ID paket aplikasi Anda. Pilih Save.

Method swizzling

Untuk menggunakan plugin FCM Flutter di perangkat Apple, Anda tidak boleh menonaktifkan method swizzling. Swizzling diperlukan dan jika dinonaktifkan, fitur-fitur penting Firebase seperti penanganan token FCM tidak akan berfungsi dengan benar.

Android

Layanan Google Play

Klien FCM memerlukan perangkat yang menjalankan Android 4.4 atau versi lebih tinggi dan sudah menginstal layanan Google Play, atau emulator yang menjalankan Android 4.4 dengan Google API. Perlu diperhatikan bahwa aplikasi Android bisa di-deploy tidak hanya melalui Google Play Store.

Aplikasi yang mengandalkan SDK Layanan Play harus selalu memeriksa perangkat untuk memastikan adanya APK layanan Google Play yang kompatibel sebelum mengakses fitur layanan Google Play. Sebaiknya lakukan hal ini di dua tempat: di metode onCreate() aktivitas utama, dan di metode onResume()-nya. Pemeriksaan di onCreate() memastikan bahwa aplikasi tidak dapat digunakan jika pemeriksaan tidak berhasil. Pemeriksaan di onResume() memastikan bahwa jika pengguna kembali ke aplikasi yang sedang berjalan melalui cara lain, misalnya dengan tombol kembali, pemeriksaan akan tetap dilakukan.

Jika perangkat tidak memiliki versi layanan Google Play yang kompatibel, aplikasi Anda dapat memanggil GoogleApiAvailability.makeGooglePlayServicesAvailable() agar pengguna dapat mendownload layanan Google Play dari Play Store.

Web

Mengonfigurasi Kredensial Web dengan FCM

Antarmuka Web FCM menggunakan kredensial Web yang disebut kunci "Voluntary Application Server Identification", atau "VAPID", untuk mengizinkan permintaan kirim ke layanan web push yang didukung. Untuk membuat aplikasi Anda berlangganan notifikasi push, Anda perlu menautkan sepasang kunci ke project Firebase Anda. Anda dapat membuat pasangan kunci baru atau mengimpor pasangan kunci yang ada melalui Firebase console.

Membuat pasangan kunci baru
  1. Di panel Settings Firebase console, buka tab Cloud Messaging, lalu scroll ke bagian Web configuration.

  2. Di tab Web Push certificates, klik Generate Key Pair. Console akan menampilkan pemberitahuan bahwa pasangan kunci berhasil dibuat, serta menampilkan string kunci publik dan tanggal penambahannya.

Mengimpor pasangan kunci yang ada

Jika sudah memiliki pasangan kunci yang digunakan dengan aplikasi web, Anda dapat mengimpornya ke FCM. Dengan begitu, Anda dapat menjangkau instance aplikasi web yang ada melalui FCM API. Untuk mengimpor kunci, Anda harus memiliki akses level pemilik ke project Firebase. Impor kunci publik dan pribadi yang ada dalam format berenkode base64 yang aman untuk URL:

  1. Di panel Settings Firebase console, buka tab Cloud Messaging, lalu scroll ke bagian Web configuration.

  2. Di tab Web Push certificates, temukan dan pilih teks link, "import an existing key pair".

  3. Dalam dialog Import a key pair, berikan kunci publik dan pribadi Anda di kolom terkait dan klik Import. Console akan menampilkan string kunci publik dan tanggal penambahannya.

Untuk mengetahui informasi lebih lanjut tentang format kunci dan cara menghasilkannya, lihat Kunci server aplikasi.

Menginstal plugin FCM

  1. Instal dan lakukan inisialisasi plugin Firebase 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();

Di platform web, teruskan kunci publik VAPID Anda ke getToken():

final fcmToken = await FirebaseMessaging.instance.getToken(vapidKey: "BKagOny0KF_2pCJQ3m....moL0ewzQ8rZu");

Agar mendapatkan pemberitahuan setiap kali token diperbarui, berlanggananlah ke aliran data onTokenRefresh:

FirebaseMessaging.instance.onTokenRefresh
    .listen((fcmToken) {
      // TODO: If necessary send token to application server.

      // Note: This callback is fired at each app startup and whenever a new
      // token is generated.
    })
    .onError((err) {
      // Error getting token.
    });

Mencegah inisialisasi otomatis

Saat token pendaftaran FCM dibuat, library mengupload data konfigurasi dan ID ke Firebase. Jika Anda ingin mencegah pembuatan token secara otomatis, nonaktifkan inisialisasi otomatis pada waktu build.

iOS

Di iOS, tambahkan nilai metadata ke Info.plist:

FirebaseMessagingAutoInitEnabled = NO

Android

Di Android, nonaktifkan pengumpulan Analytics dan inisialisasi otomatis FCM (keduanya harus dinonaktifkan) dengan menambahkan nilai metadata ini ke AndroidManifest.xml:

<meta-data
    android:name="firebase_messaging_auto_init_enabled"
    android:value="false" />
<meta-data
    android:name="firebase_analytics_collection_enabled"
    android:value="false" />

Mengaktifkan kembali inisialisasi otomatis FCM saat runtime

Untuk mengaktifkan inisialisasi otomatis untuk instance aplikasi tertentu, panggil setAutoInitEnabled():

await FirebaseMessaging.instance.setAutoInitEnabled(true);

Nilai ini akan tetap sama setiap kali aplikasi dimulai ulang.

Langkah berikutnya

Setelah aplikasi klien disiapkan, Anda siap untuk mulai mengirim pesan downstream dengan Notifications Composer. Baca artikel Mengirim pesan pengujian ke aplikasi di latar belakang.

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

Kemudian, di klien aplikasi Anda: