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

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

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

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

Metode swizzling di Firebase Cloud Messaging

FCM SDK melakukan metode swizzling di dua area utama: memetakan token APN Anda ke token pendaftaran FCM dan menangkap data analitik selama penanganan panggilan balik 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 otentikasi APN Anda

Unggah kunci autentikasi APN Anda ke Firebase. Jika Anda belum memiliki kunci autentikasi APN, pastikan untuk membuatnya di Pusat Anggota Pengembang Apple .

  1. Di dalam proyek Anda di Firebase console, pilih ikon roda gigi, pilih Pengaturan Proyek , lalu pilih tab Pesan Awan .

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

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

Daftar untuk pemberitahuan jarak jauh

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

Cepat

if #available(iOS 10.0, *) {
  // For iOS 10 display notification (sent via APNS)
  UNUserNotificationCenter.current().delegate = self

  let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
  UNUserNotificationCenter.current().requestAuthorization(
    options: authOptions,
    completionHandler: { _, _ in }
  )
} else {
  let settings: UIUserNotificationSettings =
    UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
  application.registerUserNotificationSettings(settings)
}

application.registerForRemoteNotifications()

Objective-C

if ([UNUserNotificationCenter class] != nil) {
  // iOS 10 or later
  // For iOS 10 display notification (sent via APNS)
  [UNUserNotificationCenter currentNotificationCenter].delegate = self;
  UNAuthorizationOptions authOptions = UNAuthorizationOptionAlert |
      UNAuthorizationOptionSound | UNAuthorizationOptionBadge;
  [[UNUserNotificationCenter currentNotificationCenter]
      requestAuthorizationWithOptions:authOptions
      completionHandler:^(BOOL granted, NSError * _Nullable error) {
        // ...
      }];
} else {
  // iOS 10 notifications aren't available; fall back to iOS 8-9 notifications.
  UIUserNotificationType allNotificationTypes =
  (UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge);
  UIUserNotificationSettings *settings =
  [UIUserNotificationSettings settingsForTypes:allNotificationTypes categories:nil];
  [application registerUserNotificationSettings:settings];
}

[application registerForRemoteNotifications];

Akses token pendaftaran

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

Dengan cara yang sama seperti platform Apple yang 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 aplikasi awal dan setiap kali token diperbarui atau tidak valid. Dalam semua kasus, FCM SDK memanggil messaging:didReceiveRegistrationToken: dengan token yang valid.

Token pendaftaran dapat berubah ketika:

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

Setel delegasi perpesanan

Untuk menerima token pendaftaran, terapkan protokol delegasi pesan dan setel properti delegate FIRMessaging setelah memanggil [FIRApp configure] . Misalnya, jika delegasi aplikasi Anda sesuai dengan protokol delegasi perpesanan, Anda dapat menyetel delegasi di 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 biasanya dipanggil sekali per aplikasi dimulai dengan token pendaftaran. Ketika 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 telah 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 pengiriman pesan. 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.
}

Atau, 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 metode swizzling, atau Anda sedang membangun aplikasi SwiftUI, Anda harus secara eksplisit memetakan token APN Anda ke token pendaftaran FCM. Terapkan metode application(_:didRegisterForRemoteNotificationsWithDeviceToken:) untuk mengambil token APN, lalu setel 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 seperti mengaktifkan swizzling.

Cegah inisialisasi otomatis

Saat token pendaftaran FCM dibuat, library akan mengupload ID dan data konfigurasi ke Firebase. Jika Anda ingin mendapatkan persetujuan 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 ):

FirebaseMessagingAutoInitEnabled = NO

Untuk mengaktifkan kembali FCM, Anda dapat melakukan panggilan waktu proses:

Cepat

Messaging.messaging().autoInitEnabled = true

Objective-C

[FIRMessaging messaging].autoInitEnabled = YES;

Nilai ini tetap ada selama aplikasi dimulai ulang setelah disetel.

Langkah selanjutnya

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