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 .
Di dalam proyek Anda di Firebase console, pilih ikon roda gigi, pilih Project Settings , lalu pilih tab Cloud Messaging .
Di kunci autentikasi APN di bawah konfigurasi aplikasi iOS , klik tombol Unggah .
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. PanggilregisterForRemoteNotifications
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 metode 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: