Buka konsol

Memulai Firebase Invites untuk C++

Untuk menulis aplikasi klien Firebase Invites lintas platform dengan C++, gunakan Firebase Invites API. C++ SDK dapat digunakan di Android dan iOS, dengan sejumlah penyiapan tambahan di tiap platform.

Sebelum memulai

Sebelum dapat menggunakan Firebase Invites, Anda harus:

  • Mendaftarkan project C++ Anda dan mengonfigurasikannya untuk menggunakan Firebase.

    Jika project C++ Anda telah menggunakan Firebase, berarti project tersebut telah terdaftar dan dikonfigurasikan untuk Firebase.

  • Pada file build.gradle level project, pastikan untuk menyertakan repositori Maven Google di bagian buildscript Anda dan allprojects.

  • Tambahkan Firebase C++ SDK ke project C++ Anda.

Perlu diperhatikan bahwa menambahkan Firebase ke project C++ Anda melibatkan tugas di Firebase console dan di project C++ yang terbuka (misalnya, Anda mendownload file konfigurasi Firebase dari konsol, lalu memindahkannya ke project C++.

Mengaktifkan Firebase Dynamic Links

Firebase Invites dibuat pada Firebase Dynamic Links, jadi Anda harus mengaktifkan Firebase Dynamic Links agar dapat menggunakan Firebase Invites.

  1. Di Firebase console, buka bagian Dynamic Links.

  2. Jika Anda belum menyetujui persyaratan layanan, lakukanlah saat diminta.

Menambahkan skema URL kustom (khusus iOS)

Library klien C++ Firebase Invites menggunakan Login dengan Google di iOS. Pengguna harus login untuk mengirimkan undangan, dan Anda harus menambahkan skema URL kustom ke aplikasi untuk mendukung hal ini:

  1. Untuk membuka konfigurasi project Anda, klik dua kali nama project dalam tampilan hierarki di sebelah kiri.

  2. Pilih aplikasi Anda dari bagian TARGET, pilih tab Info, lalu perluas bagian Jenis URL.

  3. Klik tombol +, lalu tambahkan skema URL untuk ID klien terbalik. Untuk menemukan nilai ini:

    1. Buka file konfigurasi GoogleService-Info.plist, lalu cari kunci REVERSED_CLIENT_ID.

    2. Salin nilai kunci tersebut, lalu tempelkan ke kotak Skema URL di halaman konfigurasi.

    3. Biarkan kolom lainnya kosong.

  4. Klik tombol +, lalu tambahkan skema URL kedua. Skema ini sama dengan ID paket aplikasi Anda.

    Misalnya, jika ID paket Anda adalah com.example.app, tuliskan nilai tersebut ke kotak Skema URL.

    Anda dapat menemukan ID paket aplikasi dalam tab Umum di konfigurasi project (Identitas > ID Paket).

Mengirim undangan

Membuat dan menginisialisasi Aplikasi

Agar dapat mengirim undangan, Anda harus membuat dan menginisialisasi objek firebase::App.

Sertakan file header untuk firebase::App:

#include "firebase/app.h"

Bagian berikutnya bervariasi, bergantung pada platform Anda:

Android

Buat firebase::App dengan meneruskan lingkungan JNI dan referensi jobject ke Java Activity sebagai argumen:

app = ::firebase::App::Create(::firebase::AppOptions("APPLICATION NAME"), jni_env, activity);

iOS

Buat firebase::App:

app = ::firebase::App::Create(::firebase::AppOptions("APPLICATION NAME"));

Membuat dan mengonfigurasi Undangan

Sertakan file header untuk mengirimkan Invites:

#include "firebase/invites.h"

Inisialisasi library Invites:

::firebase::invites::Initialize(app);

Buat instance firebase::invites::Invite baru, lalu konfigurasikan dengan setelan undangan Anda:

firebase::invites::Invite invite;
invite.title_text = "Invite Friends";
invite.message_text = "Try my app today, and get 200 free coins!";
invite.call_to_action_text = "Download now!";

Lihat di sini untuk mengetahui daftar lengkap setelan undangan, termasuk undangan yang didukung di setiap platform.

Untuk mengetahui informasi lebih lanjut mengenai cara menyesuaikan undangan, lihat Firebase Invites: Praktik Terbaik.

Mengirim undangan

Setelah Anda siap menampilkan undangan, panggil SendInvite():

firebase::invites::SendInvite(invite);

Panggilan ini akan menampilkan UI klien Invites, sehingga pengguna dapat memilih penerima dan mengubah pesan, jika mau. UI ini akan tetap berada di layar hingga pengguna memilih untuk mengirimkan atau membatalkan undangan.

SendInvite() segera ditunjukkan dan menampilkan UI secara asinkron. Panggilan ini akan menampilkan hasilnya melalui firebase::Future, yang dapat Anda kueri untuk mengetahui apakah undangan terkirim atau tidak, dan menentukan kapan UI tidak lagi berada di layar.

Anda juga dapat memperoleh firebase::Future terbaru dengan memanggil SendInviteLastResult(). Ini akan menampilkan hasil yang sama seperti panggilan terbaru ke SendInvite().

auto future_result = firebase::invites::SendInviteLastResult();
if (future_result.status() == future::kFutureStatusComplete) {
    if (future_result.error() == 0) {
        auto result = *future.result();
        if (result.invitation_ids.size() > 0) {
            // One or more invitations were sent. You can log the invitation IDs here for
            // analytics purposes, as they will be the same on the receiving side.
        }
        else {
            // Zero invitations were sent. This tells us that the user canceled sending
            // invitations.
        }
    } else {
        // error() is nonzero, which means an error occurred. You can check
        // future_result.error_message() for more information.
    }
} else {
    // The SendInvite() operation has not completed yet, which means the Invites
    // client UI is still on screen. Check the status() again soon.
}

Anda juga dapat menggunakan OnCompletion() untuk menetapkan callback yang akan diberi tahu saat SendInvite() selesai (yang memberitahukan bahwa UI Invites selesai), bukannya memeriksa status(). Baca dokumentasi firebase::Future untuk mengetahui detail lebih lanjut.

Undangan lintas platform

Jika project di Firebase console memuat persis satu aplikasi untuk setiap platform, Firebase Invites akan mengaitkan aplikasi satu sama lain secara otomatis sehingga (misalnya) pengguna iOS yang mengklik undangan yang dikirim oleh pengguna Android akan diarahkan ke tempat yang tepat untuk menginstal aplikasi Anda pada platformnya.

Jika memiliki lebih dari satu aplikasi di setiap platform, Anda dapat menetapkan ios_platform_client_id atau android_platform_client_id dengan meneruskan ID klien Firebase platform alternatif.

Menerima undangan

Saat menerima undangan dan jika belum menginstal aplikasi, pengguna dapat memilih untuk menginstal aplikasi itu dari toko aplikasi platformnya.

Selanjutnya, setelah terinstal, aplikasi akan berjalan dan menerima URL ke konten yang Anda kirimkan. Aplikasi ini juga akan menerima ID undangan yang akan dicocokkan dengan ID undangan di sisi pengirim.

Umumnya, aplikasi Anda akan memeriksa undangan yang masuk, yaitu pada saat dimulai.

Membuat dan menginisialisasi Aplikasi

Agar dapat memeriksa undangan yang diterima, Anda harus membuat dan menginisialisasi objek firebase::App.

Sertakan file header untuk firebase::App:

#include "firebase/app.h"

Bagian berikutnya bervariasi, bergantung pada platform Anda:

Android

Buat firebase::App dengan meneruskan lingkungan JNI dan referensi jobject ke Java Activity sebagai argumen:

app = ::firebase::App::Create(::firebase::AppOptions("APPLICATION NAME"), jni_env, activity);

iOS

Buat firebase::App:

app = ::firebase::App::Create(::firebase::AppOptions("APPLICATION NAME"));

Menerapkan Listener dan memeriksa undangan masuk

Sertakan file header untuk menerima Invites:

#include "firebase/invites.h"

Inisialisasi library Invites:

::firebase::invites::Initialize(app);

Buat objek yang menerapkan firebase::invites::Listener dan kirimkan ke library Invites dengan SetListener().

Untuk menerima undangan, class Listener Anda harus menerapkan fungsi virtual OnInviteReceived. Dengan mengganti metode ini, Anda dapat menerima ID undangan jika telah menerima salah satu undangan.

void OnInviteReceived(const char* invitation_id, const char* deep_link,
                      bool is_strong_match) override {
  // Fetch succeeded, let's find out what we received.
  if (invitation_id != nullptr) {
    // The app received an invitation ID. This will match the invitation ID
    // that the sender got when they sent the invitation, so you can use this
    // to track when invitations are completed.
  }
  if (deep_link != nullptr) {
    // The app received a Dynamic Link. This may have come from an invitation
    // (if invite.invitation_id is set), or it might have been sent using
    // Firebase Dynamic Links.
    // In any event, the app can now act on this link as you see fit.
  }
}