รับลิงก์แบบไดนามิกด้วย C++

วิธีรับลิงก์แบบไดนามิกของ Firebase ที่คุณสร้าง คุณต้องรวม SDK ลิงก์แบบไดนามิกไว้ในแอปและสร้าง firebase::dynamic_links::Listener ที่นำพารามิเตอร์ OnDynamicLinkReceived ฟังก์ชันเสมือนจริง

C++ SDK ทำงานได้กับทั้ง Android และ iOS โดยต้องมีการตั้งค่าเพิ่มเติม สำหรับแต่ละแพลตฟอร์ม

ก่อนเริ่มต้น

ก่อนที่จะใช้งานได้ ลิงก์แบบไดนามิกของ Firebase คุณต้องทำดังนี้

  • ลงทะเบียนโปรเจ็กต์ C++ และกําหนดค่าเพื่อใช้ Firebase

    หากโปรเจ็กต์ C++ ของคุณใช้ Firebase อยู่แล้ว แสดงว่ามีการลงทะเบียนโปรเจ็กต์แล้วและ กำหนดค่าสำหรับ Firebase แล้ว

  • เพิ่ม Firebase C++ SDK ในโปรเจ็กต์ C++

โปรดทราบว่าการเพิ่ม Firebase ไปยังโปรเจ็กต์ C++ จะเกี่ยวข้องกับงานทั้งใน คอนโซล Firebase และในโปรเจ็กต์ C++ ที่เปิดอยู่ (เช่น เมื่อคุณดาวน์โหลด ไฟล์การกำหนดค่า Firebase จากคอนโซล แล้วย้ายไฟล์ไปยังโปรเจ็กต์ C++)

เพิ่มรูปแบบ URL ที่กำหนดเอง (สำหรับ iOS เท่านั้น)

ไลบรารีของไคลเอ็นต์ลิงก์แบบไดนามิก C++ ของ Firebase ใช้รูปแบบ URL ที่กำหนดเองบน iOS เพื่อทำสิ่งต่อไปนี้ ประมวลผลลิงก์ คุณต้องเพิ่มรูปแบบ URL ที่กำหนดเองลงในแอปเพื่อรองรับการรับ ลิงก์แบบไดนามิก

  1. หากต้องการเปิดการกำหนดค่าโปรเจ็กต์ ให้ดับเบิลคลิกชื่อโปรเจ็กต์ทางด้านซ้าย มุมมองแบบต้นไม้

  2. เลือกแอปจากส่วนเป้าหมาย แล้วเลือกแท็บข้อมูล ให้ขยายส่วนประเภท URL

  3. คลิกปุ่ม + แล้วเพิ่มรูปแบบ URL สำหรับรหัสไคลเอ็นต์ที่ย้อนกลับ ถึง ค้นหาค่านี้:

    1. เปิดไฟล์การกำหนดค่า GoogleService-Info.plist จากนั้นมองหา REVERSED_CLIENT_ID

    2. คัดลอกค่าของคีย์นั้น จากนั้นวางค่าลงในช่องรูปแบบ URL ใน หน้าการกำหนดค่า

    3. เว้นฟิลด์อื่นๆ ว่างไว้

  4. คลิกปุ่ม + แล้วเพิ่มรูปแบบ URL ที่ 2 อันนี้เหมือนกับ Bundle ID ของแอป

    ตัวอย่างเช่น หากรหัสชุดคือ com.example.ios ให้พิมพ์ค่านั้นลงใน รูปแบบ URL

    คุณสามารถดูรหัสชุดของแอปได้ในแท็บทั่วไปของโปรเจ็กต์ (Identity > Bundle Identifier)

การรับลิงก์แบบไดนามิก

สร้างและเริ่มต้นแอป

ก่อนที่คุณจะสามารถตรวจสอบลิงก์แบบไดนามิกที่ได้รับ คุณจะต้องสร้างและเริ่มต้น ออบเจ็กต์ firebase::App

รวมไฟล์ส่วนหัวสำหรับ firebase::App:

#include "firebase/app.h"

ส่วนถัดไปจะแตกต่างกันไปตามแพลตฟอร์ม ดังนี้

Android

สร้าง firebase::App ผ่านสภาพแวดล้อม JNI และ jobject อ้างอิงกิจกรรม Java เป็นอาร์กิวเมนต์

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

iOS

สร้าง firebase::App:

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

ใช้งาน Listener เพื่อตรวจสอบลิงก์แบบไดนามิก

หากต้องการตรวจสอบลิงก์แบบไดนามิกที่ได้รับ ให้ใช้และใช้ firebase::dynamic_links::Listener

รวมไฟล์ส่วนหัวสำหรับการรับลิงก์แบบไดนามิก:

#include "firebase/dynamic_links.h"

เริ่มต้นไลบรารีลิงก์แบบไดนามิก

::firebase::dynamic_links::Initialize(app, null);

สร้างออบเจ็กต์ที่ติดตั้งใช้งาน firebase::dynamic_links::Listener และส่งไปยังไลบรารีลิงก์แบบไดนามิกพร้อมกับ SetListener() หรือส่งต่อเป็นอาร์กิวเมนต์ที่ 2 เริ่มต้น

ในการรับลิงก์แบบไดนามิก คลาส Listener ของคุณต้องใช้ OnDynamicLinkReceived ฟังก์ชันเสมือนจริง เมื่อลบล้างเมธอดนี้ คุณจะได้รับ Deep Link หาก ได้รับ 1 ข้อความ

class Listener : public firebase::dynamic_links::Listener {
 public:
  // Called on the client when a dynamic link arrives.
  void OnDynamicLinkReceived(
      const firebase::dynamic_links::DynamicLink* dynamic_link) override {
    printf("Received link: %s", dynamic_link->url.c_str());
  }
};