Menyiapkan Aplikasi Klien Firebase Cloud Messaging dengan Unity

Untuk menulis aplikasi klien Firebase Cloud Messaging lintas platform dengan Unity, gunakan API Firebase Cloud Messaging. Unity SDK dapat digunakan di Android dan iOS, dengan beberapa penyiapan tambahan untuk masing-masing platform.

Sebelum memulai

Sebelum dapat menggunakan Firebase Cloud Messaging, Anda harus membuat project Firebase dan menambahkan paket Firebase Unity SDK ke project Unity Anda.

Penyiapan:

Prasyarat

Android

  • Unity 5.0 atau yang lebih baru
  • Android NDK versi 10d atau yang lebih baru

iOS

  • Unity 5.0 atau yang lebih baru
  • Xcode 8.0 atau yang lebih baru
  • Perangkat iOS fisik
  • Sertifikat APN dengan Notifikasi Push aktif

Jika Anda belum memiliki project Unity, download salah satu sampel panduan mulai cepat kami dan cobalah dengan fitur Firebase tertentu. Jika Anda menggunakan quickstart, ingatlah untuk mendapatkan ID paket dari setelan project karena akan diperlukan untuk langkah selanjutnya.

Menyiapkan aplikasi di Firebase console

Untuk menambahkan Firebase ke aplikasi, Anda memerlukan project Firebase dan file konfigurasi Firebase untuk aplikasi Anda.

Buat project Firebase di Firebase console jika Anda belum memilikinya. Jika Anda sudah memiliki project Google yang terhubung dengan aplikasi seluler, klik Impor Project Google. Jika belum, klik Tambahkan project.

Android

  1. Klik Tambahkan Firebase ke aplikasi Android dan ikuti langkah-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 nama paket aplikasi Anda. Anda harus memasukkan nama paket yang digunakan oleh aplikasi. Hal ini hanya dapat dilakukan saat Anda menambahkan aplikasi tersebut ke project Firebase.
  3. Download file google-services.json saat diminta. Anda dapat mendownload kembali file ini kapan saja.
  4. Salin file ini ke sembarang tempat dalam folder aset project Anda.

iOS

  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. Download file GoogleService-Info.plist saat diminta. Anda dapat mendownload kembali file ini kapan saja.
  4. Tambahkan file GoogleService-Info.plist ke project.

  5. Pindahkan GoogleService-Info.plist yang didownload dari Firebase console ke folder mana pun di project Unity.

Menambahkan Firebase Unity SDK ke aplikasi

  1. Download Firebase Unity SDK.
  2. Pilih item menu Assets > Import Package > Custom Package.
  3. Impor package FirebaseMessaging.unitypackage dari yang telah didownload sebelumnya.
  4. Saat jendela Import Unity Package muncul, klik tombol Import.

Membuat aplikasi

Android

  1. Pilih opsi menu File > Build Settings.
  2. Pilih Android di daftar Platform.
  3. Klik Switch Platform untuk memilih Android sebagai platform target.
  4. Tunggu hingga ikon pemutar (mengompilasi) yang ada di sudut kanan bawah status bar Unity berhenti.
  5. Klik Build and Run.

iOS

  1. Pilih opsi menu File > Build Settings.
  2. Pilih iOS di daftar Platform.
  3. Klik Switch Platform untuk memilih iOS sebagai platform target.
  4. Tunggu hingga ikon pemutar (mengompilasi) yang ada di sudut kanan bawah status bar Unity berhenti.
  5. Klik Build and Run.

  6. Setelah Xcode terbuka, tambahkan UserNotifications.framework.

    1. Klik project di Xcode dan pilih tab General dari Editor area.
    2. Scroll ke bawah ke Linked Frameworks and Libraries dan klik tombol + untuk menambahkan framework.
    3. Di jendela yang muncul, scroll ke UserNotifications.framework dan klik entri tersebut, lalu klik Add.

Menginisialisasi Firebase Cloud Messaging

Pustaka Firebase Cloud Messaging akan diinisialisasi saat menambahkan penangan untuk peristiwa TokenReceived atau MessageReceived.

Setelah inisialisasi, token pendaftaran diminta untuk instance aplikasi klien. Aplikasi akan menerima token tersebut dengan peristiwa OnTokenReceived, yang harus di-cache untuk digunakan nanti. Anda memerlukan token ini jika ingin menargetkan perangkat khusus ini untuk pesan.

Selain itu, Anda harus mendaftar ke peristiwa OnMessageReceived jika ingin dapat menerima pesan masuk.

Seluruh penyiapan ini akan tampak seperti berikut:

public void Start() {
  Firebase.Messaging.FirebaseMessaging.TokenReceived += OnTokenReceived;
  Firebase.Messaging.FirebaseMessaging.MessageReceived += OnMessageReceived;
}

public void OnTokenReceived(object sender, Firebase.Messaging.TokenReceivedEventArgs token) {
  UnityEngine.Debug.Log("Received Registration Token: " + token.Token);
}

public void OnMessageReceived(object sender, Firebase.Messaging.MessageReceivedEventArgs e) {
  UnityEngine.Debug.Log("Received a new message from: " + e.Message.From);
}

Mengonfigurasi Activity titik masuk Android

Di Android, Firebase Cloud Messaging dilengkapi dengan aktivitas titik masuk khusus yang menggantikan UnityPlayerActivity default. Jika Anda tidak menggunakan titik masuk khusus, penggantian ini terjadi secara otomatis dan Anda tidak perlu melakukan tindakan tambahan. Aplikasi yang tidak menggunakan Activity titik masuk default atau yang menyuplai Assets/Plugins/AndroidManifest.xml mereka sendiri akan memerlukan konfigurasi ekstra.

Plugin Unity Firebase Cloud Messaging di Android sudah sepaket dengan 2 file tambahan:

  • Assets/Plugins/Android/libmessaging_unity_player_activity.jar berisi peristiwa yang disebut MessagingUnityPlayerActivity, yang menggantikan UnityPlayerActivity standar.
  • Assets/Plugins/Android/AndroidManifest.xml memerintahkan aplikasi untuk menggunakan MessagingUnityPlayerActivity sebagai titik masuk ke aplikasi.

File ini disediakan karena UnityPlayerActivity default tidak menangani transisi siklus proses aktivitas onStop, onRestart, atau menerapkan onNewIntent yang diperlukan agar Firebase Cloud Messaging mampu menangani pesan masuk dengan benar.

Mengonfigurasi Activity titik masuk khusus

Jika aplikasi Anda tidak menggunakan UnityPlayerActivity default, Anda harus menghapus AndroidManifest.xml yang disediakan dan memastikan bahwa activity kustom Anda menangani semua transisi dari Android Activity Lifecycle dengan benar (contoh cara melakukannya ditunjukkan di bawah ini). Jika activity kustom Anda merupakan ekstensi UnityPlayerActivity, Anda dapat menggunakan com.google.firebase.MessagingUnityPlayerActivity sebagai ekstensi yang menerapkan semua metode yang diperlukan.

Jika Anda menggunakan Activity kustom dan tidak menggunakan ekstensi com.google.firebase.MessagingUnityPlayerActivity, Anda harus menyertakan cuplikan berikut dalam Activity Anda.

/**
 * Workaround for when a message is sent containing both a Data and Notification payload.
 *
 * When the app is in the background, if a message with both a data and notification payload is
 * receieved the data payload is stored on the Intent passed to onNewIntent. By default, that
 * intent does not get set as the Intent that started the app, so when the app comes back online
 * it doesn't see a new FCM message to respond to. As a workaround, we override onNewIntent so
 * that it sends the intent to the MessageForwardingService which forwards the message to the
 * FirebaseMessagingService which in turn sends the message to the application.
 */
@Override
protected void onNewIntent(Intent intent) {
  Intent message = new Intent(this, MessageForwardingService.class);
  message.setAction(MessageForwardingService.ACTION_REMOTE_INTENT);
  message.putExtras(intent);
  message.setData(intent.getData());
  startService(message);
}

/**
 * Dispose of the mUnityPlayer when restarting the app.
 *
 * This ensures that when the app starts up again it does not start with stale data.
 */
@Override
protected void onCreate(Bundle savedInstanceState) {
  if (mUnityPlayer != null) {
    mUnityPlayer.quit();
    mUnityPlayer = null;
  }
  super.onCreate(savedInstanceState);
}

Catatan tentang pengiriman pesan di Android

Saat aplikasi tidak berjalan sama sekali dan pengguna menge-tap sebuah notification, secara default pesannya tidak dirutekan melalui FCM yang dibuat dalam callback. Dalam kasus ini, payload pesan diterima melalui Intent yang digunakan untuk memulai aplikasi.

Untuk pesan yang diterima saat aplikasi berada di latar belakang, isinya akan diambil dari kolom notifikasi dan digunakan untuk mengisi notifikasi baki sistem, namun isi notifikasi tersebut tidak akan disampaikan ke FCM. Artinya, FirebaseMessage.Notification akan kosong.

Rangkuman:

Status Aplikasi Notification Data Keduanya
Latar depan Firebase.Messaging.FirebaseMessaging.MessageReceived Firebase.Messaging.FirebaseMessaging.MessageReceived Firebase.Messaging.FirebaseMessaging.MessageReceived
Latar Belakang Baki sistem Firebase.Messaging.FirebaseMessaging.MessageReceived Notification: baki sistem
Data: di bagian tambahan dari intent.

Langkah berikutnya

Setelah menyiapkan aplikasi klien, Anda siap mengirimkan pesan downstream dan topik dengan Firebase. Untuk mempelajari lebih lanjut, lihat sampel panduan mulai cepat yang mendemonstrasikan fungsi ini.

Untuk menambahkan perilaku lain yang lebih canggih ke aplikasi Anda, lihat panduan mengenai cara mengirimkan pesan dari server aplikasi:

Perlu diingat bahwa Anda memerlukan implementasi server untuk menggunakan fitur ini.

Kirim masukan tentang...

Butuh bantuan? Kunjungi halaman dukungan kami.