Ikuti semua informasi yang diumumkan di Firebase Summit, dan pelajari bagaimana Firebase dapat membantu Anda mempercepat pengembangan aplikasi dan menjalankan aplikasi dengan percaya diri. Pelajari Lebih Lanjut

Siapkan aplikasi klien Firebase Cloud Messaging di platform Apple

Untuk aplikasi klien Apple, Anda dapat menerima notifikasi dan muatan data hingga 4000 byte melalui antarmuka Firebase Cloud Messaging APNs.

Untuk menulis kode klien Anda di Objective-C atau Swift, kami menyarankan Anda menggunakan FIRMessaging API . Contoh quickstart memberikan contoh kode untuk kedua bahasa.

Metode swizzling di Firebase Cloud Messaging

FCM SDK menjalankan metode swizzling di dua area utama: memetakan token APN Anda ke token pendaftaran FCM dan mengambil data analitik selama penanganan callback pesan downstream . Pengembang yang memilih untuk tidak menggunakan swizzling dapat menonaktifkannya dengan menambahkan flag FirebaseAppDelegateProxyEnabled di file Info.plist aplikasi dan menyetelnya ke NO (nilai boolean). Area panduan yang relevan memberikan contoh kode, baik dengan dan tanpa mengaktifkan metode swizzling.

Tambahkan Firebase ke proyek Apple Anda

Jika Anda belum melakukannya, tambahkan Firebase ke proyek Apple Anda .

Unggah kunci autentikasi APN Anda

Unggah kunci autentikasi APN Anda ke Firebase. Jika Anda belum memiliki kunci autentikasi APN, pastikan untuk membuatnya di Apple Developer Member Center .

  1. Di dalam proyek Anda di Firebase console, pilih ikon roda gigi, pilih Project Settings , lalu pilih tab Cloud Messaging .

  2. Di kunci autentikasi APN di bawah konfigurasi aplikasi iOS , klik tombol Unggah .

  3. Telusuri ke lokasi tempat Anda menyimpan kunci, pilih, dan klik Buka . Tambahkan ID kunci untuk kunci tersebut (tersedia di Pusat Anggota Pengembang Apple ) dan klik Unggah .

Mendaftar untuk notifikasi jarak jauh

Baik saat startup, atau pada titik yang diinginkan dalam alur aplikasi Anda, daftarkan aplikasi Anda untuk notifikasi jarak jauh. Panggil registerForRemoteNotifications seperti yang ditunjukkan:

Cepat


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];

Akses token pendaftaran

Secara default, FCM SDK membuat token pendaftaran untuk instance aplikasi klien saat peluncuran aplikasi. Mirip dengan token perangkat APN, token ini memungkinkan Anda mengirim notifikasi yang ditargetkan ke instance tertentu dari aplikasi Anda.

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

Token pendaftaran dapat berubah ketika:

  • Aplikasi dipulihkan di perangkat baru
  • Pengguna mencopot pemasangan/memasang ulang aplikasi
  • Pengguna menghapus data aplikasi.

Atur delegasi perpesanan

Untuk menerima token pendaftaran, implementasikan protokol delegasi perpesanan dan setel properti delegate FIRMessaging setelah memanggil [FIRApp configure] . Misalnya, jika delegasi aplikasi Anda sesuai dengan protokol delegasi perpesanan, Anda dapat menyetel delegasi pada application:didFinishLaunchingWithOptions: ke dirinya sendiri.

Cepat

Messaging.messaging().delegate = self

Objective-C

[FIRMessaging messaging].delegate = self;

Mengambil token pendaftaran saat ini

Token pendaftaran dikirimkan melalui metode messaging:didReceiveRegistrationToken: . Metode ini umumnya dipanggil sekali per aplikasi dimulai dengan token pendaftaran. Saat metode ini dipanggil, ini adalah waktu yang ideal untuk:

  • Jika token pendaftaran baru, kirimkan ke server aplikasi Anda.
  • Berlangganan token pendaftaran ke topik. Ini diperlukan hanya untuk langganan baru atau untuk situasi di mana pengguna menginstal ulang aplikasi.

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

Cepat

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 alih-alih menyimpannya.

Pantau penyegaran token

Untuk diberi tahu setiap kali token diperbarui, berikan delegasi yang sesuai dengan protokol delegasi perpesanan. Contoh berikut mendaftarkan delegasi dan menambahkan metode delegasi yang tepat:

Cepat

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.
}

Alternatifnya, Anda dapat mendengarkan NSNotification bernama kFIRMessagingRegistrationTokenRefreshNotification daripada menyediakan metode delegasi. Properti token selalu memiliki nilai token saat ini.

Swizzling dinonaktifkan: memetakan token APN dan token pendaftaran Anda

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

Cepat

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 mendengarkan acara penyegaran menggunakan metode yang sama dengan mengaktifkan swizzling.

Cegah inisialisasi otomatis

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

FirebaseMessagingAutoInitEnabled = NO

Untuk mengaktifkan kembali FCM, Anda dapat melakukan panggilan runtime:

Cepat

Messaging.messaging().autoInitEnabled = true

Objective-C

[FIRMessaging messaging].autoInitEnabled = YES;

Nilai ini tetap ada saat aplikasi dimulai ulang setelah ditetapkan.

Langkah selanjutnya

Setelah menyiapkan klien Apple, Anda siap menambahkan penanganan pesan dan perilaku lain yang lebih canggih ke aplikasi Anda. Lihat panduan ini untuk informasi lebih lanjut: