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

Android

  1. Jika Anda belum menghubungkan aplikasi dengan project Firebase, lakukanlah dari Firebase console.
  2. Jika Anda belum mengaktifkan Firebase Dynamic Links, lakukanlah dari Firebase console dengan membuka bagian Dynamic Links, lalu menyetujui persyaratan layanan jika diminta. Karena Firebase Invites dibangun pada Firebase Dynamic Links, Anda harus mengaktifkan Firebase Dynamic Links agar dapat menggunakan Firebase Invites.
  3. Tambahkan Firebase ke project Android Anda.
  4. Tambahkan dependensi untuk Firebase Invites ke file build.gradle tingkat aplikasi:

    dependencies {
         implementation 'com.google.firebase:firebase-invites:16.1.0'
    }
    
  5. Hubungkan library statis libapp.a dan libinvites.a dari C++ SDK.

iOS

  1. Jika Anda belum menghubungkan aplikasi dengan project Firebase, lakukanlah dari Firebase console.
  2. Jika Anda belum mengaktifkan Firebase Dynamic Links, lakukanlah dari Firebase console dengan membuka bagian Dynamic Links, lalu menyetujui persyaratan layanan jika diminta. Karena Firebase Invites dibangun pada Firebase Dynamic Links, Anda harus mengaktifkan Firebase Dynamic Links agar dapat menggunakan Firebase Invites.
  3. Tambahkan Firebase ke project iOS Anda.
  4. Library klien Firebase Invites C++ menggunakan Login dengan Google di iOS. Pengguna harus login untuk mengirimkan undangan, dan Anda harus menambahkan skema URL khusus ke aplikasi untuk mendukung hal ini:
    1. Untuk membuka konfigurasi project Anda, klik 2 kali nama project dalam tampilan hierarki di sebelah kiri. Pilih aplikasi dari bagian TARGET, kemudian pilih tab Info dan perluas bagian Jenis URL.
    2. Klik tombol +, lalu tambahkan skema URL untuk ID klien terbalik Anda. Untuk menemukan nilai ini, buka file konfigurasi GoogleService-Info.plist lalu cari kunci REVERSED_CLIENT_ID. Salin nilai kunci tersebut dan tempelkan ke dalam kotak Skema URL pada halaman konfigurasi. Biarkan kolom lainnya kosong.
    3. Klik tombol + dan 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).
  5. Sertakan Pod berikut dalam Podfile:

    pod 'Firebase/Invites'
    
  6. Jalankan pod install

  7. Tambahkan firebase.framework dan firebase_invites.framework dari C++ SDK ke project Xcode Anda.

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 ketika SendInvite() selesai (yang memberi tahu Anda bahwa UI Invites sudah selesai), dan bukan memeriksa status(). Baca dokumentasi firebase::Future untuk mengetahui detail lebih lanjut.

Undangan lintas platform

Jika project di Firebase console berisi persis satu aplikasi untuk setiap platform, Firebase Invites otomatis akan mengaitkan aplikasi satu sama lain, 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.
  }
}