Mulai menggunakan Firebase Cloud Messaging


Panduan memulai ini menjelaskan cara menyiapkan Firebase Cloud Messaging di aplikasi klien seluler dan web Anda sehingga Anda dapat mengirim pesan dengan andal. Untuk lingkungan server, lihat Lingkungan server Anda dan FCM.

Menyiapkan aplikasi klien Firebase Cloud Messaging di platform Apple

Untuk aplikasi klien Apple, Anda dapat menerima payload notifikasi dan payload data hingga 4.096 byte melalui antarmuka APN Firebase Cloud Messaging.

Untuk menulis kode klien di Objective-C atau Swift, sebaiknya gunakan FIRMessaging API. Contoh panduan memulai menyediakan contoh kode untuk kedua bahasa.

Sebelum memulai, tambahkan Firebase ke project Apple Anda.

Method swizzling di Firebase Cloud Messaging

FCM SDK menjalankan method swizzling pada dua area utama: memetakan token APNs ke token pendaftaran FCM dan mencatat data analisis selama penanganan callback pesan downstream. Developer yang memilih untuk tidak menggunakan swizzling dapat menonaktifkannya dengan menambahkan tanda FirebaseAppDelegateProxyEnabled di file Info.plist aplikasi dan menyetelnya ke NO (nilai boolean). Area terkait dalam panduan ini menyediakan contoh kode dengan method swizzling yang diaktifkan maupun tidak diaktifkan.

Mengupload kunci autentikasi APNs

Upload kunci autentikasi APN Anda ke Firebase. Jika Anda belum memiliki kunci autentikasi APN, pastikan untuk membuatnya 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. Di APNs authentication key di bagian iOS app configuration, klik tombol Upload untuk mengupload kunci autentikasi pengembangan, kunci autentikasi produksi, atau keduanya. Anda harus memilih setidaknya satu dari keduanya.

  3. Buka lokasi tempat Anda menyimpan kunci, pilih kunci tersebut, lalu klik Buka. Tambahkan ID kunci tersebut (tersedia di Apple Developer Member Center) dan klik Upload.

Mendaftar untuk notifikasi jarak jauh

Saat aplikasi dimulai, atau pada waktu lain yang diinginkan dalam alur aplikasi, daftarkan aplikasi Anda untuk mengaktifkan notifikasi jarak jauh. Panggil registerForRemoteNotifications seperti yang ditunjukkan berikut:

Swift

UNUserNotificationCenter.current().delegate = self

let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
UNUserNotificationCenter.current().requestAuthorization(
  options: authOptions,
  completionHandler: { _, _ in }
)

application.registerForRemoteNotifications()

Objective-C

[UNUserNotificationCenter currentNotificationCenter].delegate = self;
UNAuthorizationOptions authOptions = UNAuthorizationOptionAlert |
    UNAuthorizationOptionSound | UNAuthorizationOptionBadge;
[[UNUserNotificationCenter currentNotificationCenter]
    requestAuthorizationWithOptions:authOptions
    completionHandler:^(BOOL granted, NSError * _Nullable error) {
      // ...
    }];

[application registerForRemoteNotifications];

Mengakses token pendaftaran

Secara default, FCM SDK membuat token pendaftaran untuk instance aplikasi klien saat peluncuran aplikasi. Serupa dengan token perangkat APNs, token ini dapat Anda gunakan untuk mengirimkan notifikasi bertarget ke instance tertentu dari aplikasi ini.

Dengan cara yang sama seperti ketika platform Apple mengirimkan token perangkat APN pada saat aplikasi dimulai, FCM akan menyediakan token pendaftaran melalui metode messaging:didReceiveRegistrationToken: dari FIRMessagingDelegate. FCM SDK mengambil token baru atau yang ada saat peluncuran awal aplikasi dan setiap kali token diperbarui atau dibatalkan validasinya. Dalam semua kasus, FCM SDK memanggil messaging:didReceiveRegistrationToken: dengan token yang valid.

Token pendaftaran dapat berubah jika:

  • Aplikasi dipulihkan di perangkat baru
  • Pengguna melakukan uninstal/instal ulang aplikasi
  • Pengguna menghapus data aplikasi.

Menetapkan delegasi pesan

Untuk menerima token pendaftaran, terapkan protokol delegasi pesan dan tetapkan properti delegate dari FIRMessaging setelah memanggil [FIRApp configure]. Misalnya, jika delegasi aplikasi Anda sesuai dengan protokol delegasi pesan, Anda dapat menetapkan delegasi di application:didFinishLaunchingWithOptions: ke properti itu sendiri.

Swift

Messaging.messaging().delegate = self

Objective-C

[FIRMessaging messaging].delegate = self;

Mengambil token pendaftaran saat ini

Token pendaftaran dikirimkan melalui metode messaging:didReceiveRegistrationToken:. Biasanya metode ini dipanggil sekali pada saat aplikasi dimulai dengan token pendaftaran. Saat metode ini dipanggil, inilah saat yang tepat untuk:

  • Mengirim token pendaftaran ke server aplikasi jika token itu masih baru.
  • Mengatur token pendaftaran agar berlangganan topik. Ini hanya diperlukan untuk langganan baru atau untuk situasi saat pengguna menginstal ulang aplikasi.

Anda dapat mengambil token secara langsung menggunakan token(completion:). Error yang bukan null diberikan jika pengambilan token gagal dengan cara apa pun.

Swift

Messaging.messaging().token { token, error in
  if let error = error {
    print("Error fetching FCM registration token: \(error)")
  } else if let token = token {
    print("FCM registration token: \(token)")
    self.fcmRegTokenMessage.text  = "Remote FCM registration token: \(token)"
  }
}

Objective-C

[[FIRMessaging messaging] tokenWithCompletion:^(NSString *token, NSError *error) {
  if (error != nil) {
    NSLog(@"Error getting FCM registration token: %@", error);
  } else {
    NSLog(@"FCM registration token: %@", token);
    self.fcmRegTokenMessage.text = token;
  }
}];

Anda dapat menggunakan metode ini kapan saja untuk mengakses token, sehingga Anda tidak perlu menyimpannya.

Memantau refresh pada token

Agar mendapatkan notifikasi setiap kali token diperbarui, berikan delegasi yang sesuai dengan protokol delegasi pesan. Berikut ini contoh pendaftaran delegasi dan penambahan metode delegasi yang tepat:

Swift

func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String?) {
  print("Firebase registration token: \(String(describing: fcmToken))")

  let dataDict: [String: String] = ["token": fcmToken ?? ""]
  NotificationCenter.default.post(
    name: Notification.Name("FCMToken"),
    object: nil,
    userInfo: dataDict
  )
  // TODO: If necessary send token to application server.
  // Note: This callback is fired at each app startup and whenever a new token is generated.
}

Objective-C

- (void)messaging:(FIRMessaging *)messaging didReceiveRegistrationToken:(NSString *)fcmToken {
    NSLog(@"FCM registration token: %@", fcmToken);
    // Notify about received token.
    NSDictionary *dataDict = [NSDictionary dictionaryWithObject:fcmToken forKey:@"token"];
    [[NSNotificationCenter defaultCenter] postNotificationName:
     @"FCMToken" object:nil userInfo:dataDict];
    // TODO: If necessary send token to application server.
    // Note: This callback is fired at each app startup and whenever a new token is generated.
}

Atau, Anda dapat memproses NSNotification yang bernama kFIRMessagingRegistrationTokenRefreshNotification, daripada memberikan metode delegasi. Properti token selalu memiliki nilai token saat ini.

Swizzling dinonaktifkan: memetakan token APNs dan token pendaftaran

Jika Anda telah menonaktifkan method swizzling atau membuat aplikasi SwiftUI, Anda harus memetakan token APN ke token pendaftaran FCM secara eksplisit. Terapkan metode application(_:didRegisterForRemoteNotificationsWithDeviceToken:) untuk mengambil token APN, lalu tetapkan properti apnsToken dari Messaging:

Swift

func application(application: UIApplication,
                 didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
  Messaging.messaging().apnsToken = deviceToken
}

Objective-C

// With "FirebaseAppDelegateProxyEnabled": NO
- (void)application:(UIApplication *)application
    didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    [FIRMessaging messaging].APNSToken = deviceToken;
}

Setelah token pendaftaran FCM dibuat, Anda dapat mengaksesnya dan memproses peristiwa refresh menggunakan metode yang sama dengan yang mengaktifkan swizzling.

Mencegah inisialisasi otomatis

Saat token pendaftaran FCM dibuat, library mengupload data konfigurasi dan ID ke Firebase. Jika ingin mendapatkan keikutsertaan eksplisit dari pengguna terlebih dahulu, Anda dapat mencegah pembuatan token pada saat konfigurasi dengan menonaktifkan FCM. Untuk melakukan ini, tambahkan nilai metadata ke Info.plist (bukan GoogleService-Info.plist):

FirebaseMessagingAutoInitEnabled = NO

Untuk mengaktifkan kembali FCM, Anda dapat membuat panggilan runtime:

Swift

Messaging.messaging().autoInitEnabled = true

Objective-C

[FIRMessaging messaging].autoInitEnabled = YES;

Nilai ini akan tetap sama setiap kali aplikasi dimulai ulang.

Mengirim pesan notifikasi

  1. Instal dan jalankan aplikasi pada perangkat target. Di perangkat Apple, setujui 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 Buat kampanye pertama Anda.
    1. Pilih Firebase Notification messages, lalu pilih Create.
  5. Atau, di tab Campaigns, pilih New campaign, lalu Notifications.
  6. Masukkan teks pesan.
  7. Pilih Send test message dari panel kanan.
  8. Di kolom yang berlabel Add an FCM registration token, masukkan token pendaftaran Anda.
  9. Pilih Test.

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

Untuk melihat data terkait pengiriman pesan ke aplikasi Anda, lihat dasbor pelaporan FCM, yang mencatat jumlah pesan yang terkirim dan dibuka di perangkat Apple dan Android.

Langkah berikutnya

Setelah menyiapkan klien Apple, Anda dapat mulai menerima dan mengirim pesan kepada pengguna: