Tạo đường liên kết động bằng C++

Bạn có thể tạo Dynamic Links ngắn hoặc dài bằng API Firebase Dynamic Links. API này sử dụng một số cấu trúc tham số không bắt buộc để tạo các đường liên kết. Bạn cũng có thể tạo đường liên kết ngắn từ một đường liên kết dài đã tạo trước đó. Firebase Dynamic Links tạo một URL như sau:

https://example.page.link/WXYZ

SDK C++ hoạt động cho cả Android và iOS, với một số bước thiết lập bổ sung cần thiết cho từng nền tảng.

Trước khi bắt đầu

Trước khi có thể sử dụng Firebase Dynamic Links, bạn cần:

  • Đăng ký dự án C++ và định cấu hình dự án đó để sử dụng Firebase.

    Nếu dự án C++ của bạn đã sử dụng Firebase, thì dự án đó đã được đăng ký và định cấu hình cho Firebase.

  • Thêm SDK Firebase C++ vào dự án C++.

Xin lưu ý rằng việc thêm Firebase vào dự án C++ liên quan đến các tác vụ trong cả bảng điều khiển Firebase và trong dự án C++ đang mở (ví dụ: bạn tải tệp cấu hình Firebase xuống từ bảng điều khiển, sau đó di chuyển các tệp đó vào dự án C++).

Android

  1. Trong bảng điều khiển Firebase, hãy mở phần Dynamic Links.
  2. Nếu bạn chưa chấp nhận điều khoản dịch vụ và đặt tiền tố URI cho Dynamic Links, hãy thực hiện khi được nhắc.

    Nếu bạn đã có tiền tố URI Dynamic Links, hãy ghi lại tiền tố đó. Bạn cần cung cấp tiền tố URI Dynamic Links khi tạo Dynamic Links theo phương thức lập trình.

  3. Nên dùng: Chỉ định các mẫu URL được phép trong đường liên kết sâu và đường liên kết dự phòng. Bằng cách đó, bạn sẽ ngăn các bên trái phép tạo Dynamic Links chuyển hướng từ miền của bạn đến các trang web mà bạn không kiểm soát. Xem Mẫu URL danh sách cho phép.

iOS

  1. Trong bảng điều khiển Firebase, hãy mở phần Dynamic Links.
  2. Nếu bạn chưa chấp nhận điều khoản dịch vụ và đặt tiền tố URI cho Dynamic Links, hãy thực hiện khi được nhắc.

    Nếu bạn đã có tiền tố URI Dynamic Links, hãy ghi lại tiền tố đó. Bạn cần cung cấp miền Dynamic Links khi tạo Dynamic Links theo phương thức lập trình.

  3. Thư viện ứng dụng C++ Firebase Dynamic Links sử dụng lược đồ URL tuỳ chỉnh trên iOS để xử lý các đường liên kết. Bạn phải thêm lược đồ URL tuỳ chỉnh vào ứng dụng để hỗ trợ nhận Dynamic Links:
    1. Để mở cấu hình dự án, hãy nhấp đúp vào tên dự án trong chế độ xem cây ở bên trái. Chọn ứng dụng của bạn trong mục TARGETS (MỤC TIÊU), sau đó chọn thẻ Info (Thông tin) rồi mở rộng mục URL Types (Loại URL).
    2. Nhấp vào nút + và thêm lược đồ URL cho mã ứng dụng khách bị đảo ngược của bạn. Để tìm giá trị này, hãy mở tệp cấu hình GoogleService-Info.plist rồi tìm khoá REVERSED_CLIENT_ID. Sao chép giá trị của khoá đó rồi dán vào hộp URL Schemes (Sơ đồ URL) trên trang cấu hình. Để trống các trường khác.
    3. Nhấp vào nút + rồi thêm lược đồ URL thứ hai. Mã này giống với mã nhận dạng gói của ứng dụng. Ví dụ: nếu mã nhận dạng gói của bạn là com.example.ios, hãy nhập giá trị đó vào hộp URL Schemes (Lược đồ URL). Bạn có thể tìm thấy mã nhận dạng gói của ứng dụng trong thẻ General (Chung) của cấu hình dự án (Identity > Bundle Identifier (Giá trị nhận dạng > Mã nhận dạng gói)).

Sử dụng bảng điều khiển Firebase

Nếu bạn muốn tạo một Dynamic Link duy nhất, cho mục đích kiểm thử hoặc để nhóm tiếp thị của bạn dễ dàng tạo một đường liên kết có thể dùng trong một bài đăng trên mạng xã hội, thì cách đơn giản nhất là truy cập vào bảng điều khiển Firebase và tạo một đường liên kết theo cách thủ công theo biểu mẫu từng bước.

Miền tuỳ chỉnh

Bạn có thể kiểm soát tốt hơn hoạt động xây dựng thương hiệu của Dynamic Link bằng cách sử dụng miền của riêng mình thay vì miền con goo.gl hoặc page.link. Hãy làm theo các hướng dẫn này để thiết lập một miền tuỳ chỉnh cho dự án của bạn.

Sử dụng API Firebase Dynamic Links

Tạo và khởi chạy ứng dụng

Trước khi có thể tạo Dynamic Links, bạn cần tạo và khởi chạy đối tượng firebase::App.

Bao gồm tệp tiêu đề cho firebase::App:

#include "firebase/app.h"

Phần tiếp theo sẽ khác nhau tuỳ theo nền tảng của bạn:

Android

Tạo firebase::App, truyền môi trường JNI và tham chiếu jobject đến Hoạt động Java làm đối số:

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

iOS

Tạo firebase::App:

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

Khởi chạy thư viện Dynamic Links

Trước khi tạo Dynamic Link, trước tiên, bạn phải khởi động thư viện Dynamic Links:

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

Tạo Dynamic Link dài từ các tham số

Để tạo Đường liên kết động, hãy tạo một đối tượng DynamicLinkComponents, thiết lập bất kỳ thành viên không bắt buộc nào để định cấu hình bổ sung và truyền đối tượng đó đến dynamic_links::GetShortLink hoặc dynamic_links::GetLongLink.

Ví dụ tối giản sau đây tạo một Đường liên kết động dài đến https://www.example.com/. Đường liên kết này sẽ mở bằng ứng dụng Android com.example.android.package_name và ứng dụng iOS com.example.ios:

firebase::dynamic_links::IOSParameters ios_parameters("com.example.ios");

firebase::dynamic_links::AndroidParameters android_parameters(
    "com.example.android.package_name");

firebase::dynamic_links::DynamicLinkComponents components(
    "https://www.example.com/", "example.page.link");
components.android_parameters = &android_parameters;
components.ios_parameters = &ios_parameters;

firebase::dynamic_links::GeneratedDynamicLink long_link =
    firebase::dynamic_links::GetLongLink(components);

Tạo Dynamic Link ngắn

Để tạo một Đường liên kết động ngắn, hãy truyền một đường liên kết dài đã tạo trước đó đến GetShortLink hoặc tạo DynamicLinkComponents theo cách tương tự như trên.

GetShortLink không bắt buộc lấy thêm một tham số cấu hình DynamicLinkOptions bằng PathLength; điều này cho phép bạn kiểm soát cách tạo đường liên kết. Để tạo đường liên kết ngắn, bạn cần có một yêu cầu mạng đến phần phụ trợ Firebase, vì vậy, GetShortLink là không đồng bộ, trả về một Future<GeneratedLink>.

Ví dụ:

firebase::dynamic_links::DynamicLinkOptions short_link_options;
short_link_options.path_length = firebase::dynamic_links::kPathLengthShort;

firebase::Future<firebase::dynamic_links::GeneratedDynamicLink> result =
    firebase::dynamic_links::GetShortLink(components, short_link_options);

Nếu chương trình của bạn có một vòng lặp cập nhật chạy thường xuyên (ví dụ: 30 hoặc 60 lần mỗi giây), bạn có thể kiểm tra kết quả một lần mỗi lần cập nhật:

if (result.status() == firebase::kFutureStatusComplete) {
  if (result.error() == firebase::dynamic_links::kErrorCodeSuccess) {
    firebase::dynamic_links::GeneratedDynamicLink link = *result.result();
    printf("Create short link succeeded: %s\n", link.url.c_str());
  } else {
    printf("Created short link failed with error '%s'\n",
           result.error_message());
  }
}