Mengirim pesan pengujian ke aplikasi Apple di latar belakang

Untuk mulai menggunakan FCM, buat kasus penggunaan yang paling sederhana: mengirim pesan notifikasi pengujian dari Notifications composer ke perangkat pengembangan saat aplikasi berjalan di latar belakang pada perangkat. Halaman ini membahas semua langkah untuk mencapainya, dari penyiapan hingga verifikasi. Jadi, halaman ini mencakup langkah-langkah yang mungkin telah diselesaikan ketika menyiapkan aplikasi klien Apple untuk FCM.

Menambahkan Firebase ke project Apple

Bagian ini membahas tugas-tugas yang mungkin telah diselesaikan jika fitur Firebase lainnya telah diaktifkan untuk aplikasi Anda. Khusus untuk FCM, Anda harus mengupload kunci autentikasi APNs dan mendaftar untuk notifikasi jarak jauh.

Prasyarat

  • Instal yang berikut:

    • Xcode 14.1 atau yang lebih baru
  • Pastikan project Anda memenuhi persyaratan berikut:

    • Project Anda harus menarget versi platform berikut atau yang lebih baru:
      • iOS 11
      • macOS 10.13
      • tvOS 12
      • watchOS 6
  • Siapkan perangkat Apple fisik untuk menjalankan aplikasi Anda, dan selesaikan tugas-tugas berikut:

    • Dapatkan Kunci Autentikasi Apple Push Notification untuk akun Apple Developer.
    • Di XCode, aktifkan Notifikasi Push di App > Capabilities.

Jika Anda belum memiliki project Xcode dan hanya ingin mencoba produk Firebase, download salah satu contoh panduan memulai.

Membuat project Firebase

Agar dapat menambahkan Firebase ke aplikasi Apple, Anda perlu membuat project Firebase yang akan dihubungkan ke aplikasi Anda. Buka bagian Memahami Project Firebase untuk mempelajari project Firebase lebih lanjut.

Mendaftarkan aplikasi ke Firebase

Untuk menggunakan Firebase di aplikasi Apple, Anda perlu mendaftarkan aplikasi ke project Firebase. Mendaftarkan aplikasi sering kali disebut sebagai "menambahkan" aplikasi ke project Anda.

  1. Buka Firebase console.

  2. Di bagian tengah halaman ringkasan project, klik ikon iOS+ untuk meluncurkan alur kerja penyiapan.

    Jika Anda sudah menambahkan aplikasi ke project Firebase, klik Add app untuk menampilkan opsi platform.

  3. Masukkan ID paket aplikasi Anda di kolom bundle ID.

  4. (Opsional) Masukkan informasi lain aplikasi: App nickname dan App Store ID.

  5. Klik Register app.

Menambahkan file konfigurasi Firebase

  1. Klik Download GoogleService-Info.plist untuk mendapatkan file konfigurasi platform Apple Firebase Anda (GoogleService-Info.plist).

  2. Pindahkan file konfigurasi ke root project Xcode Anda. Jika diminta, pilih untuk menambahkan file konfigurasi ke semua target.

Jika ada beberapa ID paket dalam project, Anda harus mengaitkan setiap ID paket dengan aplikasi yang terdaftar di Firebase console, sehingga setiap aplikasi dapat memiliki file GoogleService-Info.plist sendiri.

Menambahkan Firebase SDK ke aplikasi

Gunakan Swift Package Manager untuk menginstal dan mengelola dependensi Firebase.

  1. Di Xcode, dengan project aplikasi Anda dalam keadaan terbuka, buka File > Add Packages.
  2. Saat diminta, tambahkan repositori SDK platform Apple Firebase:
  3.   https://github.com/firebase/firebase-ios-sdk
  4. Pilih library Firebase Cloud Messaging.
  5. Untuk mengoptimalkan penggunaan Firebase Cloud Messaging, sebaiknya aktifkan Google Analytics di project Firebase dan tambahkan Firebase SDK untuk Google Analytics ke aplikasi Anda. Anda dapat memilih library tanpa atau dengan pengumpulan IDFA.
  6. Setelah selesai, Xcode akan otomatis mulai me-resolve dan mendownload dependensi Anda di latar belakang.

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 bagian APNs authentication key pada iOS app configuration, klik tombol Upload.

  3. Cari lokasi penyimpanan kunci, pilih lokasi tersebut, lalu klik Open. Tambahkan ID kunci untuk kunci tersebut (tersedia di Apple Developer Member Center) dan klik Upload.

Melakukan inisialisasi Firebase di aplikasi

Anda harus menambahkan kode inisialisasi Firebase ke aplikasi. Impor modul Firebase dan konfigurasikan instance bersama seperti berikut ini:

  1. Impor modul FirebaseCore dalam UIApplicationDelegate Anda, serta semua modul Firebase lainnya yang digunakan oleh delegasi aplikasi Anda. Misalnya, untuk menggunakan Cloud Firestore dan Authentication:

    SwiftUI

    import SwiftUI
    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Swift

    import FirebaseCore
    import FirebaseFirestore
    import FirebaseAuth
    // ...
          

    Objective-C

    @import FirebaseCore;
    @import FirebaseFirestore;
    @import FirebaseAuth;
    // ...
          
  2. Konfigurasikan instance bersama FirebaseApp di metode application(_:didFinishLaunchingWithOptions:) delegasi aplikasi Anda:

    SwiftUI

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    Swift

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  3. Jika menggunakan SwiftUI, Anda harus membuat delegasi aplikasi dan menambahkannya ke struct App melalui UIApplicationDelegateAdaptor atau NSApplicationDelegateAdaptor. Anda juga harus menonaktifkan swizzling delegasi aplikasi. Untuk mengetahui informasi lebih lanjut, baca petunjuk SwiftUI.

    SwiftUI

    @main
    struct YourApp: App {
      // register app delegate for Firebase setup
      @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
    
      var body: some Scene {
        WindowGroup {
          NavigationView {
            ContentView()
          }
        }
      }
    }
          

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

Untuk mengirim pesan ke perangkat tertentu, Anda perlu mengetahui token pendaftaran perangkat tersebut. Karena Anda harus memasukkan token ke suatu kolom pada Notifications composer untuk menyelesaikan tutorial ini, pastikan Anda menyalin token atau menyimpannya dengan aman setelah mengambilnya.

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

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.

Mengirim pesan notifikasi

  1. Instal dan jalankan aplikasi pada perangkat target. Pada perangkat Apple, Anda harus menyetujui 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 Create your first campaign.

    1. Pilih Firebase Notification messages, lalu pilih Create.
  5. Atau, di tab Campaigns, pilih New campaign, lalu Notifications.

  6. Masukkan teks pesan. Semua kolom lainnya bersifat opsional.

  7. Pilih Send test message dari panel kanan.

  8. Dalam kolom yang berlabel Add an FCM registration token, masukkan token pendaftaran yang diperoleh di bagian sebelumnya pada panduan ini.

  9. Pilih Test.

Setelah Anda memilih Test, 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, beserta data untuk "tayangan" (notifikasi yang dilihat oleh pengguna) untuk aplikasi Android.

Langkah berikutnya

Untuk mempelajari topik selain pesan notifikasi dan menambahkan perilaku lanjutan lain pada aplikasi Anda, lihat: