Buka konsol

Mengirim pesan pengujian ke aplikasi iOS di background

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 dapat mencakup langkah-langkah yang telah Anda selesaikan jika Anda telah menyiapkan aplikasi klien iOS untuk FCM.

Menambahkan Firebase ke Project iOS Anda

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

Prasyarat

Sebelum mulai, ada beberapa hal perlu yang disiapkan di lingkungan Anda:

  • Xcode 10.1 atau yang lebih baru
  • Sebuah project Xcode dengan target iOS 8 atau yang lebih baru
  • Project Swift harus menggunakan Swift 3.0 atau yang lebih baru
  • ID paket dari aplikasi Anda
  • CocoaPods 1.4.0 atau yang lebih baru
  • Untuk Cloud Messaging:
    • Perangkat iOS fisik
    • Kunci Autentikasi Apple Push Notification untuk akun Developer Apple
    • Di Xcode, aktifkan Push Notifications di App > Capabilities

Jika belum memiliki project Xcode, download salah satu sampel quickstart jika Anda hanya ingin mencoba sebuah fitur Firebase. Jika Anda menggunakan quickstart, ingatlah untuk mendapatkan ID paket dari setelan project. Anda akan memerlukannya untuk langkah selanjutnya.

Menambahkan Firebase ke aplikasi

Waktunya menambahkan Firebase ke aplikasi Anda. Untuk melakukannya, Anda memerlukan project Firebase dan file konfigurasi Firebase untuk aplikasi Anda. Buka bagian Memahami Project Firebase untuk mempelajari lebih lanjut project Firebase.

Setelah memiliki project, Anda dapat menambahkan aplikasi iOS ke dalamnya:

  1. Klik Tambahkan Firebase ke aplikasi iOS dan ikuti langkah penyiapannya. Jika Anda mengimpor project Google yang sudah ada, prosesnya dapat terjadi secara otomatis dan Anda dapat langsung mendownload file konfigurasi.

  2. Saat diminta, masukkan ID paket aplikasi Anda. Anda harus memasukkan ID paket yang digunakan aplikasi. Hal ini hanya dapat dilakukan saat Anda menambahkan aplikasi tersebut ke project Firebase.

  3. Tambahkan file konfigurasi iOS Firebase ke aplikasi Anda:

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

      Anda dapat mendownload file konfigurasi iOS Firebase lagi kapan saja.

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

  4. Setelah Anda menambahkan kode inisialisasi, jalankan aplikasi untuk mengirimkan verifikasi ke Firebase console bahwa Anda telah berhasil menginstal Firebase.

Buka bagian Memahami Project Firebase untuk mempelajari lebih lanjut praktik terbaik dan pertimbangan dalam menambahkan aplikasi ke project Firebase, termasuk cara menangani beberapa variasi build.

Menambahkan SDK

Jika Anda menyiapkan project baru, Anda harus menginstal SDK. Anda mungkin sudah melakukannya sebagai bagian dari pembuatan project Firebase.

Sebaiknya, gunakan CocoaPods untuk menginstal library. Anda bisa menginstal Cocoapods dengan mengikuti petunjuk penginstalan. Jika tidak ingin menggunakan CocoaPods, Anda bisa mengintegrasikan framework SDK secara langsung tanpa menggunakan CocoaPods.

Jika Anda berencana untuk mendownload dan menjalankan salah satu sampel quickstart, project Xcode dan Podfile sudah tersedia, tetapi Anda perlu menginstal pod dan mendownload file GoogleService-Info.plist. Jika ingin mengintegrasikan library Firebase ke dalam salah satu project, Anda perlu menambahkan pod untuk library yang ingin digunakan.

  1. Jika Anda belum memiliki project Xcode, buatlah sekarang.

  2. Buat Podfile jika Anda belum memilikinya:

    $ cd your-project directory
    $ pod init
    
  3. Tambahkan pod yang ingin Anda instal. Anda bisa menyertakan Pod di Podfile seperti ini:

    pod 'Firebase/Core'
    pod 'Firebase/Messaging'
    

    Ini akan menambah library prasyarat yang diperlukan untuk mengaktifkan dan menjalankan Firebase dalam aplikasi iOS Anda, bersama dengan Google Analytics for Firebase. Daftar pod dan subspec yang saat ini tersedia bisa dilihat di bawah. Ini juga dihubungkan dalam panduan penyiapan fitur tertentu.

  4. Instal pod dan buka file .xcworkspace untuk melihat project di Xcode.

    $ pod install
    $ open your-project.xcworkspace
    
  5. Download file GoogleService-Info.plist dari Firebase console, lalu sertakan file tersebut ke dalam aplikasi.

Mengupload kunci autentikasi APN Anda

Upload kunci autentikasi APN Anda ke Firebase. Jika Anda belum memiliki kunci autentikasi APN, baca cara Mengonfigurasi APN dengan FCM.

  1. Pada project Anda di Firebase console, pilih ikon roda gigi, pilih Setelan Project, kemudian pilih tab Cloud Messaging.

  2. Di kunci autentikasi APN di bagian konfigurasi aplikasi iOS, klik tombol Upload.

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

Menginisialisasi Firebase di aplikasi Anda

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

  1. Impor modul Firebase di UIApplicationDelegate Anda:

    Swift

    import Firebase
    

    Objective-C

    @import Firebase;
    
  2. Konfigurasikan instance bersama FirebaseApp, biasanya dalam metode application:didFinishLaunchingWithOptions: aplikasi Anda:

    Swift

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

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];

Mendaftar untuk notifikasi jarak jauh

Baik saat startup maupun pada titik lain yang Anda inginkan dalam alur proses aplikasi, daftarkan aplikasi Anda untuk mendapatkan notifikasi jarak jauh. Panggil registerForRemoteNotifications seperti yang ditunjukkan berikut:

Swift

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

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 yang ditargetkan ke instance tertentu dari aplikasi ini.

Dengan cara yang sama seperti ketika iOS mengirimkan token perangkat APN pada saat aplikasi dimulai, FCM menyediakan token pendaftaran melalui FIRMessagingDelegate, yaitu metode messaging:didReceiveRegistrationToken:. 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 diaktifkan kembali di perangkat baru
  • Pengguna melakukan uninstal/instal ulang aplikasi
  • Pengguna menghapus data aplikasi.

Menyetel delegasi messaging

Untuk menerima token pendaftaran, gunakan protokol delegasi messaging, dan tetapkan properti delegate milik FIRMessaging setelah memanggil [FIRApp configure]. Misalnya, jika delegasi aplikasi Anda sesuai dengan protokol delegasi messaging, Anda dapat menetapkan delegasi di application:didFinishLaunchingWithOptions: untuk dirinya 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:

  • Jika token pendaftaran masih baru, kirim token tersebut ke server aplikasi.
  • Mengatur token pendaftaran agar berlangganan topik. Cara ini hanya diperlukan untuk langganan baru atau untuk situasi saat pengguna menginstal ulang aplikasi.

Anda dapat mengambil token secara langsung menggunakan instanceIDWithHandler:. Callback ini memberikan InstanceIDResult, yang berisi token. Error yang bukan null diberikan jika pengambilan InstanceID gagal dengan cara apa pun.

Swift

InstanceID.instanceID().instanceID { (result, error) in
  if let error = error {
    print("Error fetching remote instance ID: \(error)")
  } else if let result = result {
    print("Remote instance ID token: \(result.token)")
    self.instanceIDTokenMessage.text  = "Remote InstanceID token: \(result.token)"
  }
}

Objective-C

[[FIRInstanceID instanceID] instanceIDWithHandler:^(FIRInstanceIDResult * _Nullable result,
                                                    NSError * _Nullable error) {
  if (error != nil) {
    NSLog(@"Error fetching remote instance ID: %@", error);
  } else {
    NSLog(@"Remote instance ID token: %@", result.token);
    NSString* message =
      [NSString stringWithFormat:@"Remote InstanceID token: %@", result.token];
    self.instanceIDTokenMessage.text = message;
  }
}];

Umumnya, token tersedia secara lokal, sehingga metode ini tidak membuka koneksi jaringan. Anda dapat menggunakan metode ini kapan saja untuk mengakses token, dan bukan menyimpannya.

Memantau refresh pada token

Agar mendapatkan pemberitahuan setiap kali token diupdate, masukkan delegasi yang sesuai dengan protokol delegasi messaging. Berikut ini contoh pendaftaran delegasi dan penambahan metode delegasi yang tepat:

Swift

func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String) {
  print("Firebase registration token: \(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 mendeteksi NSNotification yang bernama kFIRMessagingRegistrationTokenRefreshNotification, bukan memasukkan metode delegasi. Properti token selalu memiliki nilai token saat ini.

Mengirim pesan notifikasi

  1. Instal dan jalankan aplikasi pada perangkat target. Anda harus menyetujui permintaan izin untuk menerima notifikasi jarak jauh.

  2. Pastikan aplikasi tersebut berada di latar belakang pada perangkat.

  3. Buka Notifications composer, lalu pilih Pesan Baru.

  4. Masukkan teks pesan.

  5. Klik Uji di Perangkat Anda.

  6. Dalam kolom yang berlabel Tambahkan token pendaftaran FCM, masukkan token pendaftaran yang diperoleh di bagian sebelumnya pada panduan ini.

  7. Klik Uji.

Setelah mengklik Uji, perangkat klien yang ditargetkan (dengan aplikasi berada di latar belakang) akan menerima notifikasi dalam pusat notifikasi.

Untuk insight tentang pengiriman pesan ke aplikasi Anda, lihat dasbor pelaporan FCM, yang mencatat jumlah pesan yang dikirim dan dibuka di perangkat iOS dan Android, beserta data untuk "tayangan" (notifikasi yang dilihat oleh pengguna) untuk aplikasi Android.

Langkah berikutnya

Untuk mengetahui lebih lanjut tentang pesan notifikasi dan menambahkan perilaku lainnya yang lebih canggih pada aplikasi Anda, lihat: