Engage SDK Dating: Hướng dẫn tích hợp kỹ thuật của bên thứ ba

Google đang xây dựng một nền tảng trên thiết bị giúp sắp xếp các ứng dụng của người dùng theo ngành dọc, đồng thời đem lại trải nghiệm mới mẻ và chân thực để người dùng khám phá và xem nội dung ứng dụng được cá nhân hoá. Trải nghiệm toàn màn hình này cung cấp cho các đối tác nhà phát triển cơ hội giới thiệu nội dung đa dạng thức hay nhất của mình trong một kênh riêng bên ngoài của ứng dụng.Hướng dẫn này cung cấp hướng dẫn cho các đối tác nhà phát triển tích hợp nội dung hẹn hò của họ, bằng cách sử dụng Engage SDK để điền diện tích bề mặt.

Thông tin chi tiết về quy trình tích hợp

Thuật ngữ

Quy trình tích hợp bao gồm 3 loại cụm sau: Đề xuất, Nổi bậtTiếp tục.

  • Cụm Đề xuất hiển thị các đề xuất hẹn hò được cá nhân hoá từ một đối tác nhà phát triển. Những đề xuất này có thể được cá nhân hoá cho người dùng.

    • Cụm Đề xuất có thể được tạo từ ArticleEntity, PersonEntity, hoặc EventEntity nhưng không kết hợp các loại thực thể khác nhau.

    Các đề xuất của bạn có cấu trúc sau:

    • Cụm Đề xuất: Khung hiển thị giao diện người dùng chứa một nhóm các đề xuất từ cùng một đối tác nhà phát triển.

    • Thực thể: Một đối tượng đại diện cho mỗi nội dung trong một cụm. Chiến dịch này tiện ích tích hợp cung cấp một số thực thể sẽ xuất hiện bằng cách sử dụng Cụm Đề xuất:

      • ArticleEntity: ArticleEntity đề xuất cho nội dung dạng văn bản có liên quan đến việc hẹn hò. Mục ArticleEntity cho phép nhà phát triển cung cấp nhiều nội dung văn bản và hình ảnh có nhiều siêu dữ liệu hơn để trình bày rõ ràng thông tin cho người dùng.

        Hình 1: Giao diện người dùng cho thấy một ArticleEntity duy nhất trong cụm Đề xuất.
      • PersonEntity: PersonEntity đại diện cho một người. Chiến lược phát hành đĩa đơn có thể là làm nổi bật một người trong cuộc hẹn hò khách hàng tiềm năng.

        Hình 2: Giao diện người dùng cho thấy một PersonEntity duy nhất trong Cụm Đề xuất.
      • EventEntity: EventEntity đại diện cho một sự kiện xảy ra trong tương lai. Thời gian bắt đầu sự kiện là một thông tin quan trọng cần được truyền tải đến người dùng.

        Hình 3: Giao diện người dùng cho thấy một EventEntity duy nhất trong cụm Đề xuất.
  • Cụm Tiếp tục hiển thị nội dung mà người dùng đã tương tác gần đây trên nhiều đối tác nhà phát triển trong một nhóm giao diện người dùng. Từng đối tác nhà phát triển sẽ được phép thông báo về tối đa 10 thực thể trong phần Tiếp tục cụm.

    Nội dung nối tiếp có thể có cấu trúc như sau:

    • ArticleEntity: ArticleEntity đề xuất cho nội dung dạng văn bản có liên quan đến việc hẹn hò. Bạn có thể dùng mục này để trình bày các tin bài đang đọc dở hoặc nội dung khác mà người dùng sẽ muốn tiếp tục thưởng thức từ nơi họ dừng lại.

      Hình 6. Giao diện người dùng cho thấy một ArticleEntity duy nhất trong cụm Tiếp tục.
    • EventResetEntity: Event ReserveEntity đại diện đặt trước cho một sự kiện và giúp người dùng theo dõi sự kiện sắp diễn ra hoặc đang diễn ra đặt chỗ cho sự kiện hẹn hò và gặp mặt.

      Hình 8. Giao diện người dùng cho thấy một EventĐặt trướcEntity trong cụm Tiếp tục.
  • Cụm Nổi bật là một khung hiển thị giao diện người dùng giới thiệu nhân vật chính được chọn GenericFeaturedEntity của nhiều đối tác nhà phát triển trong một nhóm giao diện người dùng. Có một cụm Nổi bật duy nhất xuất hiện gần đầu của Giao diện người dùng, có vị trí ưu tiên phía trên tất cả các cụm Đề xuất. Một đối tác nhà phát triển được phép thông báo về một thực thể duy nhất của loại trong mục Nổi bật, với nhiều thực thể (có thể thuộc các loại khác nhau) từ nhiều nhà phát triển ứng dụng trong cụm Nổi bật.

    • GenericFeatureEntity: GenericFeaturedEntity khác với Mục đề xuất trong Mục nổi bật đó nên được dùng cho một mục duy nhất là nội dung hàng đầu của các nhà phát triển và nên đại diện cho nội dung quan trọng thú vị và phù hợp với người dùng.

      Hình 12: Giao diện người dùng hiển thị một FeaturedCluster có danh sách GenericFeaturedEntity

Chuẩn bị trước

Cấp độ API tối thiểu: 19

Thêm thư viện com.google.android.engage:engage-core vào ứng dụng của bạn:

dependencies {
    // Make sure you also include that repository in your project's build.gradle file.
    implementation 'com.google.android.engage:engage-core:1.5.2'
}

Tóm tắt

Thiết kế này dựa trên việc triển khai một dịch vụ ràng buộc.

Dữ liệu mà ứng dụng có thể phát hành phải tuân theo các giới hạn sau cho các loại cụm khác nhau:

Loại cụm Giới hạn về cụm Giới hạn số lượng thực thể tối thiểu trong một cụm Giới hạn số lượng thực thể tối đa trong một cụm
Cụm Đề xuất Tối đa 5 Ít nhất là 5 Tối đa 25 (ArticleEntity, PersonEntity hoặc EventEntity)
Cụm Tiếp tục Tối đa 1 Ít nhất 1 Tối đa 10 (ArticleEntity hoặc EventReservationEntity)
Cụm Nổi bật Tối đa 1 Ít nhất 1 Tối đa 10 (GenericFeaturedEntity)

Bước 1: Cung cấp dữ liệu về thực thể

SDK đã xác định các thực thể khác nhau để đại diện cho từng loại mục. Chúng tôi hỗ trợ các đối tượng sau cho danh mục Hẹn hò:

  1. GenericFeaturedEntity
  2. ArticleEntity
  3. PersonEntity
  4. EventEntity
  5. EventReservationEntity

Các biểu đồ bên dưới nêu ra các thuộc tính có sẵn và yêu cầu cho từng loại.

GenericFeaturedEntity

Thuộc tính Yêu cầu Nội dung mô tả Định dạng
URI hành động Bắt buộc

Đường liên kết sâu đến thực thể trong ứng dụng của nhà cung cấp.

Lưu ý: Bạn có thể sử dụng đường liên kết sâu để phân bổ. Tham khảo phần Câu hỏi thường gặp này

URI
Hình ảnh áp phích Bắt buộc

Chúng tôi sẽ chỉ hiển thị 1 hình ảnh khi bạn cung cấp nhiều hình ảnh. Tỷ lệ khung hình đề xuất là 16:9

Lưu ý: Nếu bạn cung cấp huy hiệu, hãy đảm bảo không gian an toàn là 24 ký tự dps ở cả phần đầu và cuối hình ảnh

Hãy xem Thông số kỹ thuật của hình ảnh để biết hướng dẫn.
Tiêu đề Không bắt buộc Tiêu đề của thực thể.

Văn bản tự do

Kích thước văn bản nên dùng: 50 ký tự

Mô tả Không bắt buộc

Một đoạn văn bản để mô tả đối tượng.

Lưu ý: Nội dung mô tả hoặc danh sách phụ đề sẽ được hiển thị cho người dùng, không phải cả hai.

Văn bản tự do

Kích thước văn bản nên dùng: 180 ký tự

Danh sách phụ đề Không bắt buộc

Tối đa 3 phụ đề, mỗi phụ đề có một dòng văn bản.

Lưu ý: Nội dung mô tả hoặc danh sách phụ đề sẽ được hiển thị cho người dùng, không phải cả hai.

Văn bản tự do

Kích thước văn bản được đề xuất cho mỗi phụ đề: tối đa 50 ký tự

Huy hiệu Không bắt buộc

Mỗi huy hiệu là văn bản tự do (tối đa 15 ký tự) hoặc hình ảnh nhỏ.

Cách xử lý đặc biệt về trải nghiệm người dùng trên hình ảnh/video, ví dụ như huy hiệu lớp phủ trên hình ảnh

  • "Live update" (Cập nhật trực tiếp)
  • Thời lượng đọc bài viết
Huy hiệu - Văn bản Không bắt buộc

Tiêu đề của huy hiệu

Lưu ý: Bạn phải cung cấp văn bản hoặc hình ảnh cho huy hiệu

Văn bản tự do

Kích thước văn bản nên dùng: tối đa 15 ký tự

Huy hiệu - Hình ảnh Không bắt buộc

Hình ảnh nhỏ

Cách xử lý đặc biệt về trải nghiệm người dùng, chẳng hạn như lớp phủ huy hiệu trên hình ảnh/video hình thu nhỏ.

Lưu ý: Bạn phải cung cấp văn bản hoặc hình ảnh cho huy hiệu

Hãy xem Thông số kỹ thuật của hình ảnh để biết hướng dẫn.
Danh mục nội dung Không bắt buộc Mô tả danh mục nội dung của đối tượng.

Danh sách Enum

Xem phần Danh mục nội dung để được hướng dẫn.

ArticleEntity

Thuộc tính Yêu cầu Nội dung mô tả Định dạng
URI hành động Bắt buộc

Đường liên kết sâu đến thực thể trong ứng dụng của nhà cung cấp.

Lưu ý: Bạn có thể sử dụng đường liên kết sâu để phân bổ. Tham khảo phần Câu hỏi thường gặp này

URI
Tiêu đề Bắt buộc Tiêu đề của thực thể.

Văn bản tự do

Kích thước văn bản nên dùng: Tối đa 50 ký tự

Hình ảnh áp phích Không bắt buộc

Chúng tôi sẽ chỉ hiển thị 1 hình ảnh khi bạn cung cấp nhiều hình ảnh. Tỷ lệ khung hình đề xuất là 16:9

Lưu ý: Bạn nên sử dụng hình ảnh. Nếu huy hiệu là phải đảm bảo không gian an toàn là 24 dps ở cả đầu và cuối hình ảnh

Hãy xem Thông số kỹ thuật của hình ảnh để biết hướng dẫn.
Nguồn – Tiêu đề Không bắt buộc Tên của tác giả, tổ chức hoặc phóng viên

Văn bản tự do

Kích thước văn bản nên dùng: Dưới 25 ký tự

Nguồn – Hình ảnh Không bắt buộc Hình ảnh của nguồn tin, chẳng hạn như tác giả, tổ chức, phóng viên Hãy xem Thông số kỹ thuật của hình ảnh để biết hướng dẫn.
Mô tả Không bắt buộc

Một đoạn văn bản để mô tả đối tượng.

Lưu ý: Nội dung mô tả hoặc danh sách phụ đề sẽ được hiển thị cho người dùng, không phải cả hai.

Văn bản tự do

Kích thước văn bản nên dùng: 180 ký tự

Danh sách phụ đề Không bắt buộc

Tối đa 3 phụ đề, mỗi phụ đề có một dòng văn bản.

Lưu ý: Nội dung mô tả hoặc danh sách phụ đề sẽ được hiển thị cho người dùng, không phải cả hai.

Văn bản tự do

Kích thước văn bản được đề xuất cho mỗi phụ đề: tối đa 50 ký tự

Huy hiệu Không bắt buộc

Mỗi huy hiệu là văn bản tự do (tối đa 15 ký tự) hoặc hình ảnh nhỏ.

Cách xử lý đặc biệt về trải nghiệm người dùng trên hình ảnh/video, ví dụ như huy hiệu lớp phủ trên hình ảnh

  • Ví dụ: "Cập nhật trực tiếp"
  • Ví dụ: Thời lượng đọc bài viết
Huy hiệu - Văn bản Không bắt buộc

Tiêu đề của huy hiệu

Lưu ý: Bạn phải cung cấp văn bản hoặc hình ảnh cho huy hiệu

Văn bản tự do

Kích thước văn bản nên dùng: tối đa 15 ký tự

Huy hiệu - Hình ảnh Không bắt buộc

Hình ảnh nhỏ

Cách xử lý đặc biệt về trải nghiệm người dùng, chẳng hạn như lớp phủ huy hiệu trên hình ảnh/video hình thu nhỏ.

Lưu ý: Bạn phải cung cấp văn bản hoặc hình ảnh cho huy hiệu

Hãy xem Thông số kỹ thuật của hình ảnh để biết hướng dẫn.
Thời gian xuất bản nội dung Không bắt buộc Đây là dấu thời gian bắt đầu của hệ thống (tính bằng mili giây) khi nội dung được xuất bản / cập nhật trong ứng dụng. Dấu thời gian bắt đầu của hệ thống (tính bằng mili giây)
Thời gian tương tác gần đây nhất Bắt buộc có điều kiện

Dấu thời gian bắt đầu của hệ thống (tính bằng mili giây) khi người dùng tương tác mục này lần cuối.

Lưu ý: Đây là trường bắt buộc nếu thực thể này thuộc cụm tiếp tục.

Dấu thời gian bắt đầu của hệ thống (tính bằng mili giây)
Tỷ lệ phần trăm tiến trình Bắt buộc có điều kiện

Tỷ lệ phần trăm toàn bộ nội dung mà người dùng đã xem cho đến nay.

Lưu ý: Đây là trường bắt buộc nếu thực thể này thuộc cụm tiếp tục.

Một giá trị int nằm trong khoảng từ 0 đến 100.
Danh mục nội dung Không bắt buộc Mô tả danh mục nội dung của đối tượng.

Danh sách Enum

Xem phần Danh mục nội dung để được hướng dẫn.

PersonEntity

Thuộc tính Yêu cầu Nội dung mô tả Định dạng
URI hành động Bắt buộc

Đường liên kết sâu đến thực thể trong ứng dụng của nhà cung cấp.

Lưu ý: Bạn có thể sử dụng đường liên kết sâu để phân bổ. Tham khảo phần Câu hỏi thường gặp này

URI
Hồ sơ - Tên Bắt buộc Tên trên hồ sơ/tên nhận dạng hoặc tên người dùng, ví dụ: "John Doe", "@TeamPixel", v.v.

Chuỗi

Kích thước văn bản nên dùng: Tối đa 50 ký tự

Hồ sơ – Hình đại diện Bắt buộc

Ảnh hồ sơ hoặc hình đại diện của người dùng.

Lưu ý: Phải là ảnh vuông có tỷ lệ 1:1.

Hãy xem Thông số kỹ thuật của hình ảnh để biết hướng dẫn.
Hồ sơ – Văn bản bổ sung Không bắt buộc Văn bản tự do, chẳng hạn như tên người dùng hồ sơ.

Văn bản tự do

Kích thước văn bản nên dùng: Tối đa 15 ký tự

Hồ sơ - Hình ảnh bổ sung Không bắt buộc Hình ảnh nhỏ như huy hiệu xác minh. Hãy xem Thông số kỹ thuật của hình ảnh để biết hướng dẫn.
Hình ảnh tiêu đề Không bắt buộc

Đại diện cho hình ảnh Tiêu đề. Phải khác với ảnh hồ sơ. Hình ảnh này có thể dùng nếu có hình ảnh bổ sung giúp làm nổi bật thích công việc của họ.

Lưu ý: Phải là hình ảnh có tỷ lệ 16:9. Nếu có huy hiệu, đảm bảo không gian an toàn là 24 dp ở cả đầu và cuối hình ảnh

Hãy xem Thông số kỹ thuật của hình ảnh để biết hướng dẫn.
Mức độ phổ biến – Số lượng Không bắt buộc

Cho biết số người theo dõi hoặc giá trị về mức độ phổ biến, ví dụ: "3,7 Tr.".

Lưu ý: Nếu bạn cung cấp cả giá trị count và count, Số lượng sẽ được sử dụng

Chuỗi

Kích thước văn bản nên dùng: Tối đa 20 ký tự cho số lượng + nhãn kết hợp

Mức độ phổ biến – Số lượng giá trị Không bắt buộc

Số lượng người theo dõi hoặc giá trị về mức độ phổ biến.

Lưu ý: Cung cấp giá trị lượt nếu ứng dụng của bạn không muốn xử lý logic về cách tối ưu hoá một số lượng lớn cho kích thước màn hình khác nhau. Nếu cả giá trị Đếm và Giá trị được cung cấp, Người dùng sẽ thấy số lượng.

Dài
Mức độ phổ biến - Nhãn Không bắt buộc Cho biết nhãn mức độ phổ biến là gì. Ví dụ: "Thích".

Chuỗi

Kích thước văn bản nên dùng: Tối đa 20 ký tự cho số lượng + nhãn kết hợp

Mức độ phổ biến – Hình ảnh Không bắt buộc

Cho biết mục đích tương tác. Ví dụ: Hình ảnh hiển thị Biểu tượng thích, biểu tượng cảm xúc.

Có thể cung cấp nhiều hình ảnh, mặc dù không phải hình ảnh nào cũng hiện hết kiểu dáng thiết bị.

Lưu ý: Phải là ảnh hình vuông có tỷ lệ 1:1

Hãy xem Thông số kỹ thuật của hình ảnh để biết hướng dẫn.
Điểm xếp hạng – Giá trị tối đa Bắt buộc

Giá trị tối đa của thang điểm xếp hạng.

Phải cung cấp nếu bạn cũng cung cấp giá trị hiện tại của điểm xếp hạng.

Số >= 0,0
Điểm xếp hạng – Giá trị hiện tại Bắt buộc

Giá trị hiện tại của thang điểm xếp hạng.

Phải cung cấp nếu bạn cũng cung cấp giá trị tối đa của điểm xếp hạng.

Số >= 0,0
Điểm xếp hạng – Tổng số Không bắt buộc

Tổng số điểm xếp hạng cho thực thể.

Lưu ý: Hãy cung cấp trường này nếu ứng dụng của bạn muốn kiểm soát cách thông tin này được hiển thị cho người dùng. Cung cấp chuỗi ngắn gọn có thể hiển thị cho người dùng. Ví dụ: nếu số lượng là 1.000.000, hãy cân nhắc sử dụng những chữ viết tắt như 1M để nó không bị bị cắt bớt trên kích thước hiển thị nhỏ hơn.

Chuỗi
Điểm xếp hạng – Giá trị tổng số Không bắt buộc

Tổng số điểm xếp hạng cho thực thể.

Lưu ý: Hãy cung cấp trường này nếu bạn không muốn xử lý tự logic viết tắt hiển thị. Nếu cả giá trị đếm và giá trị đếm hiển thị, chúng tôi sẽ sử dụng Số lượng để hiển thị cho người dùng

Dài
Vị trí – Quốc gia Không bắt buộc Quốc gia nơi người đó sinh sống hoặc phục vụ.

Văn bản tự do

Kích thước văn bản nên dùng: tối đa ~20 ký tự

Vị trí – Thành phố Không bắt buộc Thành phố nơi người đó sinh sống hoặc phục vụ.

Văn bản tự do

Kích thước văn bản nên dùng: tối đa ~20 ký tự

Vị trí - Địa chỉ hiển thị Không bắt buộc Địa chỉ nơi người đó ở hoặc đang phục vụ sẽ được hiển thị cho người dùng.

Văn bản tự do

Kích thước văn bản nên dùng: tối đa ~20 ký tự

Vị trí – Địa chỉ đường phố Không bắt buộc Địa chỉ đường phố (nếu có) nơi người đó đang ở hoặc đầu cuối.

Văn bản tự do

Kích thước văn bản nên dùng: tối đa ~20 ký tự

Vị trí – Tiểu bang Không bắt buộc Tiểu bang (nếu có) nơi người đó ở hoặc đang hoạt động.

Văn bản tự do

Kích thước văn bản nên dùng: tối đa ~20 ký tự

Vị trí – Mã bưu chính Không bắt buộc Mã bưu chính (nếu có) nơi người đó sinh sống hoặc phục vụ.

Văn bản tự do

Kích thước văn bản nên dùng: tối đa ~20 ký tự

Vị trí - Vùng lân cận Không bắt buộc Vùng lân cận (nếu có) nơi người đó ở hoặc đang phục vụ.

Văn bản tự do

Kích thước văn bản nên dùng: tối đa ~20 ký tự

Huy hiệu Không bắt buộc

Mỗi huy hiệu là văn bản tự do (tối đa 15 ký tự) hoặc hình ảnh nhỏ.

Huy hiệu - Văn bản Không bắt buộc

Tiêu đề của huy hiệu

Lưu ý: Bạn phải cung cấp văn bản hoặc hình ảnh cho huy hiệu

Văn bản tự do

Kích thước văn bản nên dùng: tối đa 15 ký tự

Huy hiệu - Hình ảnh Không bắt buộc

Hình ảnh nhỏ

Cách xử lý đặc biệt về trải nghiệm người dùng, chẳng hạn như lớp phủ huy hiệu trên hình ảnh/video hình thu nhỏ.

Lưu ý: Bạn phải cung cấp văn bản hoặc hình ảnh cho huy hiệu

Hãy xem Thông số kỹ thuật của hình ảnh để biết hướng dẫn.
Mô tả Không bắt buộc

Một đoạn văn bản để mô tả đối tượng.

Lưu ý: Nội dung mô tả hoặc danh sách phụ đề sẽ được hiển thị cho người dùng, không phải cả hai.

Văn bản tự do

Kích thước văn bản nên dùng: 180 ký tự

Danh sách phụ đề Không bắt buộc

Tối đa 3 phụ đề, mỗi phụ đề có một dòng văn bản.

Lưu ý: Nội dung mô tả hoặc danh sách phụ đề sẽ được hiển thị cho người dùng, không phải cả hai.

Văn bản tự do

Kích thước văn bản được đề xuất cho mỗi phụ đề: tối đa 50 ký tự

Danh mục nội dung Không bắt buộc Mô tả danh mục nội dung của đối tượng.

Danh sách Enum đủ điều kiện

  • TYPE_HEALTH_AND_FITENESS (Ví dụ – Huấn luyện viên yoga/thể dục)
  • TYPE_HOME_AND_auto (Ví dụ - Thợ sửa ống nước)
  • TYPE_SPORTS (Ví dụ - Người chơi)
  • TYPE_DATING

Xem phần Danh mục nội dung để được hướng dẫn.

EventEntity

Thuộc tính Yêu cầu Nội dung mô tả Định dạng
URI hành động Bắt buộc

Đường liên kết sâu đến thực thể trong ứng dụng của nhà cung cấp.

Lưu ý: Bạn có thể sử dụng đường liên kết sâu để phân bổ. Tham khảo phần Câu hỏi thường gặp này

URI
Tiêu đề Bắt buộc Tiêu đề của thực thể.

Chuỗi

Kích thước văn bản nên dùng: Tối đa 50 ký tự

Thời gian bắt đầu Bắt buộc

Dấu thời gian bắt đầu của hệ thống khi sự kiện dự kiến bắt đầu.

Lưu ý: Tham số này sẽ được biểu thị bằng mili giây.

Dấu thời gian bắt đầu của hệ thống (tính bằng mili giây)
Chế độ sự kiện Bắt buộc

Một trường để cho biết sự kiện sẽ diễn ra trên mạng, trực tiếp hay cả hai.

Enum: VIRTUAL, IN_PERSON hoặc HYBRID
Hình ảnh áp phích Bắt buộc

Chúng tôi sẽ chỉ hiển thị 1 hình ảnh khi bạn cung cấp nhiều hình ảnh. Tỷ lệ khung hình đề xuất là 16:9

Lưu ý: Bạn nên sử dụng hình ảnh. Nếu huy hiệu là phải đảm bảo không gian an toàn là 24 dps ở cả đầu và cuối hình ảnh

Hãy xem Thông số kỹ thuật của hình ảnh để biết hướng dẫn.
Vị trí – Quốc gia Bắt buộc có điều kiện

Quốc gia nơi sự kiện đang diễn ra.

Lưu ý: Đây là yêu cầu bắt buộc cho các sự kiện có IN_PERSON hoặc LỐI

Văn bản tự do

Kích thước văn bản nên dùng: tối đa ~20 ký tự

Vị trí – Thành phố Bắt buộc có điều kiện

Thành phố nơi sự kiện đang diễn ra.

Lưu ý: Đây là yêu cầu bắt buộc cho các sự kiện có IN_PERSON hoặc LỐI

Văn bản tự do

Kích thước văn bản nên dùng: tối đa ~20 ký tự

Vị trí - Địa chỉ hiển thị Bắt buộc có điều kiện

Địa chỉ hoặc tên địa điểm nơi sự kiện sẽ diễn ra hiển thị với người dùng.

Lưu ý: Đây là yêu cầu bắt buộc cho các sự kiện có IN_PERSON hoặc LỐI

Văn bản tự do

Kích thước văn bản nên dùng: tối đa ~20 ký tự

Vị trí – Địa chỉ đường phố Không bắt buộc Địa chỉ đường phố (nếu có) của địa điểm diễn ra sự kiện đang được lưu trữ.

Văn bản tự do

Kích thước văn bản nên dùng: tối đa ~20 ký tự

Vị trí – Tiểu bang Không bắt buộc Tiểu bang hoặc tỉnh (nếu có) nơi sự kiện đang diễn ra máy chủ lưu trữ.

Văn bản tự do

Kích thước văn bản nên dùng: tối đa ~20 ký tự

Vị trí – Mã bưu chính Không bắt buộc Mã bưu chính (nếu có) của địa điểm diễn ra sự kiện máy chủ lưu trữ.

Văn bản tự do

Kích thước văn bản nên dùng: tối đa ~20 ký tự

Vị trí - Vùng lân cận Không bắt buộc Vùng lân cận (nếu có) nơi sự kiện đang được tổ chức.

Văn bản tự do

Kích thước văn bản nên dùng: tối đa ~20 ký tự

Thời gian kết thúc Không bắt buộc

Dấu thời gian bắt đầu của hệ thống khi sự kiện dự kiến sẽ kết thúc.

Lưu ý: Tham số này sẽ được biểu thị bằng mili giây.

Dấu thời gian bắt đầu của hệ thống (tính bằng mili giây)
Mô tả Không bắt buộc

Một đoạn văn bản để mô tả đối tượng.

Lưu ý: Nội dung mô tả hoặc danh sách phụ đề sẽ được hiển thị cho người dùng, không phải cả hai.

Văn bản tự do

Kích thước văn bản nên dùng: 180 ký tự

Danh sách phụ đề Không bắt buộc

Tối đa 3 phụ đề, mỗi phụ đề có một dòng văn bản.

Lưu ý: Nội dung mô tả hoặc danh sách phụ đề sẽ được hiển thị cho người dùng, không phải cả hai.

Văn bản tự do

Kích thước văn bản được đề xuất cho mỗi phụ đề: tối đa 50 ký tự

Huy hiệu Không bắt buộc

Mỗi huy hiệu là văn bản tự do (tối đa 15 ký tự) hoặc hình ảnh nhỏ.

Huy hiệu - Văn bản Không bắt buộc

Tiêu đề của huy hiệu

Lưu ý: Bạn phải cung cấp văn bản hoặc hình ảnh cho huy hiệu

Văn bản tự do

Kích thước văn bản nên dùng: tối đa 15 ký tự

Huy hiệu - Hình ảnh Không bắt buộc

Hình ảnh nhỏ

Cách xử lý đặc biệt về trải nghiệm người dùng, chẳng hạn như lớp phủ huy hiệu trên hình ảnh/video hình thu nhỏ.

Lưu ý: Bạn phải cung cấp văn bản hoặc hình ảnh cho huy hiệu

Hãy xem Thông số kỹ thuật của hình ảnh để biết hướng dẫn.
Giá – Giá hiện tại Bắt buộc có điều kiện

Giá hiện tại của vé/vé tham dự sự kiện.

Bạn phải cung cấp nếu cung cấp giá được gạch ngang.

Văn bản tự do
Giá - Giá gạch ngang Không bắt buộc Giá gốc của vé/vé tham dự sự kiện. Văn bản tự do
Chú thích giá Không bắt buộc Chú thích giá để giới thiệu một chương trình khuyến mãi, sự kiện, chiết khấu dành cho thành viên (nếu có).

Văn bản tự do

Kích thước văn bản nên dùng: dưới 45 ký tự (Văn bản quá dài có thể hiện dấu ba chấm)

Danh mục nội dung Không bắt buộc Mô tả danh mục nội dung của đối tượng.

Danh sách Enum đủ điều kiện

  • TYPE_MOVIES_AND_TV_SHOWS (Ví dụ – Rạp chiếu phim)
  • TYPE_DIGITAL_GAMES (Ví dụ – Thể thao điện tử)
  • TYPE_MUSIC (Ví dụ - Buổi hoà nhạc)
  • TYPE_CUSTOMER_AND_LOCAL (Ví dụ – Chuyến tham quan, lễ hội)
  • TYPE_HEALTH_AND_FITENESS (Ví dụ – Lớp học yoga)
  • TYPE_EDUCATION (Ví dụ - Lớp)
  • TYPE_SPORTS (Ví dụ – Trò chơi bóng đá)
  • TYPE_DATING (Ví dụ - buổi gặp mặt)

Xem phần Danh mục nội dung để được hướng dẫn.

EventReservationEntity

Thuộc tính Yêu cầu Nội dung mô tả Định dạng
URI hành động Bắt buộc

Đường liên kết sâu đến thực thể trong ứng dụng của nhà cung cấp.

Lưu ý: Bạn có thể sử dụng đường liên kết sâu để phân bổ. Tham khảo phần Câu hỏi thường gặp này

URI
Tiêu đề Bắt buộc Tiêu đề của thực thể.

Chuỗi

Kích thước văn bản nên dùng: Tối đa 50 ký tự

Thời gian bắt đầu Bắt buộc

Dấu thời gian bắt đầu của hệ thống khi sự kiện dự kiến bắt đầu.

Lưu ý: Tham số này sẽ được biểu thị bằng mili giây.

Dấu thời gian bắt đầu của hệ thống (tính bằng mili giây)
Chế độ sự kiện Bắt buộc

Một trường để cho biết sự kiện sẽ diễn ra trên mạng, trực tiếp hay cả hai.

Enum: VIRTUAL, IN_PERSON hoặc HYBRID
Vị trí – Quốc gia Bắt buộc có điều kiện

Quốc gia nơi sự kiện đang diễn ra.

Lưu ý: Đây là yêu cầu bắt buộc cho các sự kiện có IN_PERSON hoặc LỐI

Văn bản tự do

Kích thước văn bản nên dùng: tối đa ~20 ký tự

Vị trí – Thành phố Bắt buộc có điều kiện

Thành phố nơi sự kiện đang diễn ra.

Lưu ý: Đây là yêu cầu bắt buộc cho các sự kiện có IN_PERSON hoặc LỐI

Văn bản tự do

Kích thước văn bản nên dùng: tối đa ~20 ký tự

Vị trí - Địa chỉ hiển thị Bắt buộc có điều kiện

Địa chỉ hoặc tên địa điểm nơi sự kiện sẽ diễn ra hiển thị với người dùng.

Lưu ý: Đây là yêu cầu bắt buộc cho các sự kiện có IN_PERSON hoặc LỐI

Văn bản tự do

Kích thước văn bản nên dùng: tối đa ~20 ký tự

Vị trí – Địa chỉ đường phố Không bắt buộc Địa chỉ đường phố (nếu có) của địa điểm diễn ra sự kiện đang được lưu trữ.

Văn bản tự do

Kích thước văn bản nên dùng: tối đa ~20 ký tự

Vị trí – Tiểu bang Không bắt buộc Tiểu bang hoặc tỉnh (nếu có) nơi sự kiện đang diễn ra máy chủ lưu trữ.

Văn bản tự do

Kích thước văn bản nên dùng: tối đa ~20 ký tự

Vị trí – Mã bưu chính Không bắt buộc Mã bưu chính (nếu có) của địa điểm diễn ra sự kiện máy chủ lưu trữ.

Văn bản tự do

Kích thước văn bản nên dùng: tối đa ~20 ký tự

Vị trí - Vùng lân cận Không bắt buộc Vùng lân cận (nếu có) nơi sự kiện đang được tổ chức.

Văn bản tự do

Kích thước văn bản nên dùng: tối đa ~20 ký tự

Hình ảnh áp phích Không bắt buộc

Chúng tôi sẽ chỉ hiển thị 1 hình ảnh khi bạn cung cấp nhiều hình ảnh. Tỷ lệ khung hình đề xuất là 16:9

Lưu ý: Bạn nên sử dụng hình ảnh. Nếu huy hiệu là phải đảm bảo không gian an toàn là 24 dps ở cả đầu và cuối hình ảnh

Hãy xem Thông số kỹ thuật của hình ảnh để biết hướng dẫn.
Thời gian kết thúc Không bắt buộc

Dấu thời gian bắt đầu của hệ thống khi sự kiện dự kiến sẽ kết thúc.

Lưu ý: Tham số này sẽ được biểu thị bằng mili giây.

Dấu thời gian bắt đầu của hệ thống (tính bằng mili giây)
Nhà cung cấp dịch vụ – Tên Không bắt buộc

Tên của nhà cung cấp dịch vụ.

Lưu ý:Bạn phải sử dụng văn bản hoặc hình ảnh cho dịch vụ Google Cloud.

Văn bản tự do. Ví dụ: tên của người tổ chức/chuyến tham quan sự kiện
Nhà cung cấp dịch vụ – Hình ảnh Không bắt buộc

Biểu trưng/hình ảnh của nhà cung cấp dịch vụ.

Lưu ý:Bạn phải sử dụng văn bản hoặc hình ảnh cho dịch vụ Google Cloud.

Hãy xem Thông số kỹ thuật của hình ảnh để biết hướng dẫn.
Mô tả Không bắt buộc

Một đoạn văn bản để mô tả đối tượng.

Lưu ý: Nội dung mô tả hoặc danh sách phụ đề sẽ được hiển thị cho người dùng, không phải cả hai.

Văn bản tự do

Kích thước văn bản nên dùng: 180 ký tự

Danh sách phụ đề Không bắt buộc

Tối đa 3 phụ đề, mỗi phụ đề có một dòng văn bản.

Lưu ý: Nội dung mô tả hoặc danh sách phụ đề sẽ được hiển thị cho người dùng, không phải cả hai.

Văn bản tự do

Kích thước văn bản được đề xuất cho mỗi phụ đề: tối đa 50 ký tự

Huy hiệu Không bắt buộc

Mỗi huy hiệu là văn bản tự do (tối đa 15 ký tự) hoặc hình ảnh nhỏ.

Huy hiệu - Văn bản Không bắt buộc

Tiêu đề của huy hiệu

Lưu ý: Bạn phải cung cấp văn bản hoặc hình ảnh cho huy hiệu

Văn bản tự do

Kích thước văn bản nên dùng: tối đa 15 ký tự

Huy hiệu - Hình ảnh Không bắt buộc

Hình ảnh nhỏ

Cách xử lý đặc biệt về trải nghiệm người dùng, chẳng hạn như lớp phủ huy hiệu trên hình ảnh/video hình thu nhỏ.

Lưu ý: Bạn phải cung cấp văn bản hoặc hình ảnh cho huy hiệu

Hãy xem Thông số kỹ thuật của hình ảnh để biết hướng dẫn.
Mã đặt trước Không bắt buộc Mã đặt chỗ cho yêu cầu đặt chỗ trước sự kiện. Văn bản tự do
Giá – Giá hiện tại Bắt buộc có điều kiện

Giá hiện tại của vé/vé tham dự sự kiện.

Bạn phải cung cấp nếu cung cấp giá được gạch ngang.

Văn bản tự do
Giá - Giá gạch ngang Không bắt buộc Giá gốc của vé/vé tham dự sự kiện. Văn bản tự do
Chú thích giá Không bắt buộc Chú thích giá để giới thiệu một chương trình khuyến mãi, sự kiện, chiết khấu dành cho thành viên (nếu có).

Văn bản tự do

Kích thước văn bản nên dùng: dưới 45 ký tự (Văn bản quá dài có thể hiện dấu ba chấm)

Điểm xếp hạng – Giá trị tối đa Không bắt buộc

Giá trị tối đa của thang điểm xếp hạng.

Phải cung cấp nếu bạn cũng cung cấp giá trị hiện tại của điểm xếp hạng.

Số >= 0,0
Điểm xếp hạng – Giá trị hiện tại Không bắt buộc

Giá trị hiện tại của thang điểm xếp hạng.

Phải cung cấp nếu bạn cũng cung cấp giá trị tối đa của điểm xếp hạng.

Số >= 0,0
Điểm xếp hạng – Tổng số Không bắt buộc

Tổng số lượt xếp hạng cho sự kiện.

Lưu ý: Hãy cung cấp trường này nếu ứng dụng của bạn muốn kiểm soát cách thông tin này được hiển thị cho người dùng. Cung cấp chuỗi ngắn gọn có thể hiển thị cho người dùng. Ví dụ: nếu số lượng là 1.000.000, hãy cân nhắc sử dụng những chữ viết tắt như 1M để nó không bị bị cắt bớt trên kích thước hiển thị nhỏ hơn.

Chuỗi
Điểm xếp hạng – Giá trị tổng số Không bắt buộc

Tổng số lượt xếp hạng cho sự kiện.

Lưu ý: Hãy cung cấp trường này nếu bạn không muốn xử lý tự logic viết tắt hiển thị. Nếu cả giá trị đếm và giá trị đếm hiển thị, chúng tôi sẽ sử dụng Số lượng để hiển thị cho người dùng

Dài
Danh mục nội dung Không bắt buộc Mô tả danh mục nội dung của đối tượng.

Danh sách Enum đủ điều kiện

  • TYPE_MOVIES_AND_TV_SHOWS (Ví dụ – Rạp chiếu phim)
  • TYPE_DIGITAL_GAMES (Ví dụ – Thể thao điện tử)
  • TYPE_MUSIC (Ví dụ - Buổi hoà nhạc)
  • TYPE_CUSTOMER_AND_LOCAL (Ví dụ – Chuyến tham quan, lễ hội)
  • TYPE_HEALTH_AND_FITENESS (Ví dụ – Lớp học yoga)
  • TYPE_EDUCATION (Ví dụ - Lớp)
  • TYPE_SPORTS (Ví dụ – Trò chơi bóng đá)
  • TYPE_DATING (Ví dụ - buổi gặp mặt)

Xem phần Danh mục nội dung để được hướng dẫn.

Thông số kỹ thuật của hình ảnh

Bảng này liệt kê thông số kỹ thuật bắt buộc cho thành phần hình ảnh:

Tỷ lệ khung hình Số điểm ảnh tối thiểu Số điểm ảnh đề xuất

Vuông (1 x 1)

Ưa thích

300 x 300 1200 x 1200
Ngang (1,91 x 1) 600 x 314 1200 x 628
Dọc (4 x 5) 480 x 600 960 x 1200

Hình ảnh phải được lưu trữ trên CDN công khai để Google có thể truy cập.

Định dạng tệp

PNG, JPG, GIF tĩnh, WebP

Kích thước tệp tối đa

5120 KB

Đề xuất khác

  • Khu vực an toàn cho hình ảnh: Đặt nội dung quan trọng của bạn vào phần chiếm 80% trung tâm của hình ảnh.
  • Sử dụng nền trong suốt để hình ảnh có thể hiển thị chính xác trong phần cài đặt Giao diện sáng và tối.

Danh mục nội dung

Danh mục nội dung cho phép ứng dụng xuất bản nội dung thuộc về nhiều danh mục. Thao tác này sẽ liên kết nội dung với một số danh mục được xác định trước, cụ thể là:

  • TYPE_EDUCATION
  • TYPE_SPORTS
  • TYPE_MOVIES_AND_TV_SHOWS
  • TYPE_BOOKS
  • TYPE_AUDIOBOOKS
  • TYPE_MUSIC
  • TYPE_DIGITAL_GAMES
  • TYPE_TRAVEL_AND_LOCAL
  • TYPE_HOME_AND_AUTO
  • TYPE_BUSINESS
  • TYPE_NEWS
  • TYPE_FOOD_AND_DRINK
  • TYPE_SHOPPING
  • TYPE_HEALTH_AND_FITENESS
  • TYPE_MEDICAL
  • TYPE_PARENTING
  • TYPE_DATING

Hình ảnh phải được lưu trữ trên CDN công khai để Google có thể truy cập.

Nguyên tắc sử dụng danh mục nội dung

  1. Một số thực thể như ArticleEntityGenericFeaturedEntity là đủ điều kiện để sử dụng bất kỳ danh mục nội dung nào. Đối với các pháp nhân khác như EventEntity, EventResetEntity, PersonEntity, chỉ một tập hợp con trong số các danh mục này đủ điều kiện. Xem danh sách các danh mục đủ điều kiện loại thực thể trước khi điền danh sách.
  2. Sử dụng loại thực thể cụ thể cho một số danh mục nội dung thay vì kết hợp của thực thể Chung và ContentCategory:

    • TYPE_MOVIES_AND_TV_SHOWS – Xem các thực thể từ Xem hướng dẫn tích hợp trước khi sử dụng thực thể chung.
    • TYPE_BOOKS - Xem EbookEntity trước khi sử dụng thực thể chung.
    • TYPE_AUDIOBOOKS – Xem Sách nóiEntity trước đây bằng cách sử dụng các thực thể chung.
    • TYPE_SHOPPING – Thanh toán ShoppingEntity trước đây bằng cách sử dụng các thực thể chung.
    • TYPE_FOOD_AND_DRINK - Kiểm tra các thực thể từ Hướng dẫn tích hợp thực phẩm trước khi sử dụng thực thể chung.
  3. Trường ContentCategory là trường không bắt buộc và nên được để trống nếu nội dung không thuộc bất kỳ danh mục nào được đề cập trước đó.

  4. Trong trường hợp cung cấp nhiều danh mục nội dung, hãy cung cấp các danh mục đó theo thứ tự mức độ phù hợp với nội dung có danh mục nội dung phù hợp nhất được đặt đầu tiên trong danh sách.

Bước 2: Cung cấp dữ liệu Cụm

Bạn nên thực hiện tác vụ xuất bản nội dung trong nền (ví dụ: sử dụng WorkManager) và lên lịch thường xuyên hoặc theo sự kiện (ví dụ: mỗi khi người dùng mở ứng dụng hoặc khi người dùng vừa thêm mặt hàng nào vào giỏ hàng).

AppEngagePublishClient chịu trách nhiệm xuất bản cụm.

Các API dưới dây dùng để xuất bản cụm trong ứng dụng:

  • isServiceAvailable
  • publishRecommendationClusters
  • publishFeaturedCluster
  • publishContinuationCluster
  • publishUserAccountManagementRequest
  • updatePublishStatus
  • deleteRecommendationsClusters
  • deleteFeaturedCluster
  • deleteContinuationCluster
  • deleteUserManagementCluster
  • deleteClusters

isServiceAvailable

API này dùng để kiểm tra xem dịch vụ có thể tích hợp và nội dung có xuất hiện trên thiết bị hay không.

Kotlin


client.isServiceAvailable.addOnCompleteListener { task ->
    if (task.isSuccessful) {
        // Handle IPC call success
        if(task.result) {
          // Service is available on the device, proceed with content publish
          // calls.
        } else {
          // Service is not available, no further action is needed.
        }
    } else {
      // The IPC call itself fails, proceed with error handling logic here,
      // such as retry.
    }
}

Java


client.isServiceAvailable().addOnCompleteListener(task - > {
    if (task.isSuccessful()) {
        // Handle success
        if(task.getResult()) {
          // Service is available on the device, proceed with content publish
          // calls.
        } else {
          // Service is not available, no further action is needed.
        }
    } else {
      // The IPC call itself fails, proceed with error handling logic here,
      // such as retry.
    }
});

publishRecommendationClusters

API này được dùng để phát hành danh sách đối tượng RecommendationCluster.

Kotlin


client.publishRecommendationClusters(
      PublishRecommendationClustersRequest.Builder()
        .addRecommendationCluster(
          RecommendationCluster.Builder()
            .addEntity(entity1)
            .addEntity(entity2)
            .setTitle("Top Picks For You")
            .build()
        )
        .build()
    )

Java


client.publishRecommendationClusters(
            new PublishRecommendationClustersRequest.Builder()
                .addRecommendationCluster(
                    new RecommendationCluster.Builder()
                        .addEntity(entity1)
                        .addEntity(entity2)
                        .setTitle("Top Picks For You")
                        .build())
                .build());

Khi dịch vụ nhận được yêu cầu, các hành động sau đây sẽ diễn ra trong một giao dịch:

  • Dữ liệu RecommendationCluster hiện có của đối tác nhà phát triển sẽ bị xoá.
  • Dữ liệu của yêu cầu được phân tích cú pháp và lưu trữ trong cụm Đề xuất đã cập nhật.

Trong trường hợp xảy ra lỗi, toàn bộ yêu cầu sẽ bị từ chối và trạng thái hiện tại sẽ được duy trì.

publishFeaturedCluster

API này được dùng để phát hành danh sách đối tượng FeaturedCluster.

Kotlin


client.publishFeaturedCluster(
    PublishFeaturedClusterRequest.Builder()
      .setFeaturedCluster(
        FeaturedCluster.Builder()
          .addEntity(entity1)
          .addEntity(entity2)
          .build())
      .build())

Java


client.publishFeaturedCluster(
            new PublishFeaturedClustersRequest.Builder()
                .addFeaturedCluster(
                    new FeaturedCluster.Builder()
                        .addEntity(entity1)
                        .addEntity(entity2)
                        .build())
                .build());

Khi dịch vụ nhận được yêu cầu, các hành động sau đây sẽ diễn ra trong một giao dịch:

  • Dữ liệu FeaturedCluster hiện có của đối tác nhà phát triển sẽ bị xoá.
  • Dữ liệu của yêu cầu được phân tích cú pháp và lưu trữ trong cụm Nổi bật đã cập nhật.

Trong trường hợp xảy ra lỗi, toàn bộ yêu cầu sẽ bị từ chối và trạng thái hiện tại sẽ được duy trì.

publishContinuationCluster

API này được dùng để phát hành đối tượng ContinuationCluster.

Kotlin


client.publishContinuationCluster(
    PublishContinuationClusterRequest.Builder()
      .setContinuationCluster(
        ContinuationCluster.Builder()
          .addEntity(entity1)
          .addEntity(entity2)
          .build())
      .build())

Java


client.publishContinuationCluster(
            new PublishContinuationClusterRequest.Builder()
                .setContinuationCluster(
                    new ContinuationCluster.Builder()
                        .addEntity(entity1)
                        .addEntity(entity2)
                        .build())
                .build());

Khi dịch vụ nhận được yêu cầu, các hành động sau đây sẽ diễn ra trong một giao dịch:

  • Dữ liệu ContinuationCluster hiện có của đối tác nhà phát triển sẽ bị xoá.
  • Dữ liệu của yêu cầu được phân tích cú pháp và lưu trữ trong cụm Tiếp tục đã cập nhật.

Trong trường hợp xảy ra lỗi, toàn bộ yêu cầu sẽ bị từ chối và trạng thái hiện tại sẽ được duy trì.

publishUserAccountManagementRequest

API này dùng để xuất bản thẻ Đăng nhập. Thao tác đăng nhập sẽ đưa người dùng đến trang đăng nhập của ứng dụng để ứng dụng có thể xuất bản nội dung (hoặc cung cấp nội dung phù hợp hơn cho cá nhân)

Siêu dữ liệu sau đây là một phần của Thẻ đăng nhập –

Thuộc tính Yêu cầu Nội dung mô tả
URI hành động Bắt buộc Đường liên kết sâu đến hành động (chẳng hạn như điều hướng đến trang đăng nhập ứng dụng)
Hình ảnh Không bắt buộc – Nếu không cung cấp thì bạn phải cung cấp Tiêu đề

Hình ảnh hiện trên thẻ

Hình ảnh có tỷ lệ khung hình 16x9 với độ phân giải 1264x712

Tiêu đề Không bắt buộc – Nếu không cung cấp thì bạn phải cung cấp Hình ảnh Tiêu đề trên thẻ
Văn bản hành động Không bắt buộc Văn bản hiện trên CTA (chẳng hạn như Đăng nhập)
Phụ đề Không bắt buộc Phụ đề không bắt buộc trên thẻ

Kotlin


var SIGN_IN_CARD_ENTITY =
      SignInCardEntity.Builder()
          .addPosterImage(
              Image.Builder()
                  .setImageUri(Uri.parse("http://www.x.com/image.png"))
                  .setImageHeightInPixel(500)
                  .setImageWidthInPixel(500)
                  .build())
          .setActionText("Sign In")
          .setActionUri(Uri.parse("http://xx.com/signin"))
          .build()

client.publishUserAccountManagementRequest(
            PublishUserAccountManagementRequest.Builder()
                .setSignInCardEntity(SIGN_IN_CARD_ENTITY)
                .build());

Java


SignInCardEntity SIGN_IN_CARD_ENTITY =
      new SignInCardEntity.Builder()
          .addPosterImage(
              new Image.Builder()
                  .setImageUri(Uri.parse("http://www.x.com/image.png"))
                  .setImageHeightInPixel(500)
                  .setImageWidthInPixel(500)
                  .build())
          .setActionText("Sign In")
          .setActionUri(Uri.parse("http://xx.com/signin"))
          .build();

client.publishUserAccountManagementRequest(
            new PublishUserAccountManagementRequest.Builder()
                .setSignInCardEntity(SIGN_IN_CARD_ENTITY)
                .build());

Khi dịch vụ nhận được yêu cầu, các hành động sau đây sẽ diễn ra trong một giao dịch:

  • Dữ liệu UserAccountManagementCluster hiện có của đối tác nhà phát triển sẽ bị xoá.
  • Dữ liệu của yêu cầu được phân tích cú pháp và lưu trữ trong cụm UserAccountManagementCluster đã cập nhật.

Trong trường hợp xảy ra lỗi, toàn bộ yêu cầu sẽ bị từ chối và trạng thái hiện tại sẽ được duy trì.

updatePublishStatus

Nếu vì bất kỳ lý do kinh doanh nội bộ nào mà không có cụm nào được xuất bản, chúng tôi bạn nên cập nhật trạng thái xuất bản bằng cách sử dụng updatePublishStatus API. Việc này quan trọng vì:

  • Trong mọi trường hợp, ngay cả khi nội dung được xuất bản (STATUS == PUBLISHED), bạn phải cho biết trạng thái để điền trang tổng quan. Trạng thái rõ ràng này sẽ được trang tổng quan sử dụng để truyền tải tình trạng và các chỉ số khác của quá trình tích hợp.
  • Nếu không có nội dung nào được xuất bản nhưng trạng thái tích hợp không phải là bị lỗi (STATUS == NOT_PUBLISHED), Google có thể tránh kích hoạt cảnh báo trong trang tổng quan về tình trạng của ứng dụng. Phương thức này xác nhận rằng nội dung chưa được xuất bản do tình huống dự kiến theo quan điểm của nhà cung cấp.
  • Giúp nhà phát triển cung cấp thông tin chi tiết về thời điểm công bố dữ liệu so với thì không.
  • Google có thể sử dụng các mã trạng thái để nhắc người dùng thực hiện một số thao tác trong ứng dụng để họ có thể xem hoặc bỏ qua nội dung ứng dụng.

Dưới đây là danh sách mã trạng thái xuất bản đủ điều kiện:

// Content is published
AppEngagePublishStatusCode.PUBLISHED,

// Content is not published as user is not signed in
AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN,

// Content is not published as user is not subscribed
AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SUBSCRIPTION,

// Content is not published as user location is ineligible
AppEngagePublishStatusCode.NOT_PUBLISHED_INELIGIBLE_LOCATION,

// Content is not published as there is no eligible content
AppEngagePublishStatusCode.NOT_PUBLISHED_NO_ELIGIBLE_CONTENT,

// Content is not published as the feature is disabled by the client
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_FEATURE_DISABLED_BY_CLIENT,

// Content is not published as the feature due to a client error
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_CLIENT_ERROR,

// Content is not published as the feature due to a service error
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_SERVICE_ERROR,

// Content is not published due to some other reason
// Reach out to engage-developers@ before using this enum.
AppEngagePublishStatusCode.NOT_PUBLISHED_OTHER

Nếu nội dung không được xuất bản do người dùng chưa đăng nhập, Google sẽ bạn nên xuất bản Thẻ đăng nhập. Nếu vì bất kỳ lý do gì nhà cung cấp không thể để xuất bản Thẻ đăng nhập, thì bạn nên gọi API updatePublishStatus kèm theo mã trạng thái NOT_PUBLISHED_REQUIRES_SIGN_IN

Kotlin


client.updatePublishStatus(
   PublishStatusRequest.Builder()
     .setStatusCode(AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN)
     .build())

Java


client.updatePublishStatus(
    new PublishStatusRequest.Builder()
        .setStatusCode(AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN)
        .build());

deleteRecommendationClusters

API này dùng để xoá nội dung của cụm Recommendation (Đề xuất).

Kotlin


client.deleteRecommendationClusters()

Java


client.deleteRecommendationClusters();

Khi nhận được yêu cầu, dịch vụ sẽ xoá dữ liệu hiện có khỏi cụm Đề xuất. Trong trường hợp xảy ra lỗi, toàn bộ yêu cầu sẽ bị từ chối và trạng thái hiện tại vẫn giữ nguyên.

deleteFeaturedCluster

API này dùng để xoá nội dung của cụm Featured (Nổi bật).

Kotlin


client.deleteFeaturedCluster()

Java


client.deleteFeaturedCluster();

Khi nhận được yêu cầu, dịch vụ sẽ xoá dữ liệu hiện có khỏi cụm Nổi bật. Trong trường hợp xảy ra lỗi, toàn bộ yêu cầu sẽ bị từ chối và trạng thái hiện tại sẽ được duy trì.

deleteContinuationCluster

API này dùng để xoá nội dung của cụm Continuation (Tiếp tục).

Kotlin


client.deleteContinuationCluster()

Java


client.deleteContinuationCluster();

Khi nhận được yêu cầu, dịch vụ sẽ xoá dữ liệu hiện có khỏi cụm Tiếp tục. Trong trường hợp xảy ra lỗi, toàn bộ yêu cầu sẽ bị từ chối và trạng thái hiện tại vẫn giữ nguyên.

deleteUserManagementCluster

API này dùng để xoá nội dung của cụm UserAccountManagement.

Kotlin


client.deleteUserManagementCluster()

Java


client.deleteUserManagementCluster();

Khi nhận được yêu cầu, dịch vụ sẽ xoá dữ liệu hiện có khỏi cụm UserAccountManagement. Trong trường hợp xảy ra lỗi, toàn bộ yêu cầu sẽ bị từ chối và trạng thái hiện tại vẫn giữ nguyên.

deleteClusters

API này dùng để xoá nội dung của một loại cụm cụ thể.

Kotlin


client.deleteClusters(
    DeleteClustersRequest.Builder()
      .addClusterType(ClusterType.TYPE_CONTINUATION)
      .addClusterType(ClusterType.TYPE_FEATURED)
      .addClusterType(ClusterType.TYPE_RECOMMENDATION)
      .build())

Java


client.deleteClusters(
            new DeleteClustersRequest.Builder()
                .addClusterType(ClusterType.TYPE_CONTINUATION)
                .addClusterType(ClusterType.TYPE_FEATURED)
                .addClusterType(ClusterType.TYPE_RECOMMENDATION)
                .build());

Khi nhận được yêu cầu, dịch vụ sẽ xoá dữ liệu hiện có khỏi tất cả các cụm khớp với loại cụm đã chỉ định. Ứng dụng có thể chọn truyền một hoặc nhiều loại cụm. Trong trường hợp xảy ra lỗi, toàn bộ yêu cầu sẽ bị từ chối và trạng thái hiện tại sẽ được duy trì.

Xử lý lỗi

Bạn nên nghe kết quả tác vụ từ các API phát hành để có thể thực hiện thao tác tiếp theo nhằm khôi phục và gửi lại tác vụ thành công.

Kotlin


client.publishRecommendationClusters(
        PublishRecommendationClustersRequest.Builder()
          .addRecommendationCluster(..)
          .build())
      .addOnCompleteListener { task ->
        if (task.isSuccessful) {
          // do something
        } else {
          val exception = task.exception
          if (exception is AppEngageException) {
            @AppEngageErrorCode val errorCode = exception.errorCode
            if (errorCode == AppEngageErrorCode.SERVICE_NOT_FOUND) {
              // do something
            }
          }
        }
      }

Java


client.publishRecommendationClusters(
              new PublishRecommendationClustersRequest.Builder()
                  .addRecommendationCluster(...)
                  .build())
          .addOnCompleteListener(
              task -> {
                if (task.isSuccessful()) {
                  // do something
                } else {
                  Exception exception = task.getException();
                  if (exception instanceof AppEngageException) {
                    @AppEngageErrorCode
                    int errorCode = ((AppEngageException) exception).getErrorCode();
                    if (errorCode == AppEngageErrorCode.SERVICE_NOT_FOUND) {
                      // do something
                    }
                  }
                }
              });

Lỗi được trả về dưới dạng AppEngageException với nguyên nhân được đưa vào dưới dạng mã lỗi.

Mã lỗi Lưu ý
SERVICE_NOT_FOUND Dịch vụ này không dùng được trên thiết bị đã cho.
SERVICE_NOT_AVAILABLE Dịch vụ này hoạt động trên thiết bị đã cho, nhưng không hoạt động tại thời điểm gọi (ví dụ: dịch vụ bị vô hiệu hoá một cách rõ ràng).
SERVICE_CALL_EXECUTION_FAILURE Không thực hiện được tác vụ do có vấn đề về luồng. Trong trường hợp này, bạn có thể thử lại.
SERVICE_CALL_PERMISSION_DENIED Trình gọi không được phép thực hiện cuộc gọi dịch vụ.
SERVICE_CALL_INVALID_ARGUMENT Yêu cầu chứa dữ liệu không hợp lệ (ví dụ: nhiều hơn số cụm được phép).
SERVICE_CALL_INTERNAL Đã xảy ra lỗi bên phía dịch vụ.
SERVICE_CALL_RESOURCE_EXHAUSTED Cuộc gọi dịch vụ được thực hiện quá thường xuyên.

Bước 3: Xử lý ý định truyền tin

Ngoài việc thực hiện lệnh gọi API nội dung phát hành thông qua một công việc, bạn cũng phải thiết lập BroadcastReceiver để nhận yêu cầu phát hành nội dung.

Mục tiêu của ý định truyền tin chủ yếu là để kích hoạt lại ứng dụng và buộc đồng bộ hoá dữ liệu. Ý định truyền tin không được thiết kế để gửi quá thường xuyên. Lệnh này chỉ được kích hoạt khi Dịch vụ Engage xác định nội dung có thể đã lỗi thời (ví dụ: một tuần trước). Bằng cách đó, bạn có thể yên tâm hơn rằng người dùng sẽ có trải nghiệm nội dung mới mẻ, ngay cả khi ứng dụng không được sử dụng trong một thời gian dài.

Bạn phải thiết lập BroadcastReceiver theo 2 cách sau:

  • Tự động đăng ký một thực thể của lớp BroadcastReceiver bằng cách sử dụng Context.registerReceiver(). Điều này cho phép giao tiếp từ các ứng dụng vẫn còn trong bộ nhớ.

Kotlin

class AppEngageBroadcastReceiver : BroadcastReceiver(){
  // Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION broadcast
  // is received
  // Trigger featured cluster publish when PUBLISH_FEATURED broadcast is received
  // Trigger continuation cluster publish when PUBLISH_CONTINUATION broadcast is
  // received
}

fun registerBroadcastReceivers(context: Context){
  var  context = context
  context = context.applicationContext

// Register Recommendation Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(Intents.ACTION_PUBLISH_RECOMMENDATION))

// Register Featured Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(Intents.ACTION_PUBLISH_FEATURED))

// Register Continuation Cluster Publish Intent
  context.registerReceiver(AppEngageBroadcastReceiver(),
                           IntentFilter(Intents.ACTION_PUBLISH_CONTINUATION))
}

Java

class AppEngageBroadcastReceiver extends BroadcastReceiver {
// Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION broadcast
// is received

// Trigger featured cluster publish when PUBLISH_FEATURED broadcast is received

// Trigger continuation cluster publish when PUBLISH_CONTINUATION broadcast is
// received
}

public static void registerBroadcastReceivers(Context context) {

context = context.getApplicationContext();

// Register Recommendation Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_RECOMMENDATION));

// Register Featured Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_FEATURED));

// Register Continuation Cluster Publish Intent
context.registerReceiver(new AppEngageBroadcastReceiver(),
new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_CONTINUATION));

}
  • Khai báo tĩnh quá trình triển khai bằng thẻ <receiver> trong tệp AndroidManifest.xml. Điều này cho phép ứng dụng nhận được ý định truyền tin khi ứng dụng không chạy, đồng thời cho phép ứng dụng phát hành nội dung đó.
<application>
   <receiver
      android:name=".AppEngageBroadcastReceiver"
      android:exported="true"
      android:enabled="true">
      <intent-filter>
         <action android:name="com.google.android.engage.action.PUBLISH_RECOMMENDATION" />
      </intent-filter>
      <intent-filter>
         <action android:name="com.google.android.engage.action.PUBLISH_FEATURED" />
      </intent-filter>
      <intent-filter>
         <action android:name="com.google.android.engage.action.PUBLISH_CONTINUATION" />
      </intent-filter>
   </receiver>
</application>

Dịch vụ sẽ gửi các ý định sau:

  • com.google.android.engage.action.PUBLISH_RECOMMENDATION Nên để bắt đầu lệnh gọi publishRecommendationClusters khi nhận được ý định này.
  • com.google.android.engage.action.PUBLISH_FEATURED Bạn nên bắt đầu lệnh gọi publishFeaturedCluster khi nhận được ý định này.
  • com.google.android.engage.action.PUBLISH_CONTINUATION Bạn nên bắt đầu lệnh gọi publishContinuationCluster khi nhận được ý định này.

Quy trình tích hợp

Để được hướng dẫn từng bước về cách xác minh quy trình tích hợp sau khi hoàn tất, hãy xem Quy trình tích hợp dành cho nhà phát triển Engage.

Câu hỏi thường gặp

Hãy xem mục Câu hỏi thường gặp về Engage SDK để biết các câu hỏi thường gặp.

Liên hệ

Thông tin liên hệ engage-developers@google.com nếu có trong quá trình tích hợp.

Các bước tiếp theo

Sau khi bạn hoàn tất quá trình tích hợp này, các bước tiếp theo sẽ như sau:

  • Gửi email đến engage-developers@google.com và đính kèm APK tích hợp sẵn sàng để Google kiểm tra.
  • Google sẽ xác minh và xem xét trong phạm vi nội bộ để đảm bảo quá trình tích hợp diễn ra như mong đợi. Nếu cần thay đổi, Google sẽ liên hệ với bạn để yêu cầu bạn cung cấp mọi thông tin chi tiết cần thiết.
  • Khi quá trình thử nghiệm hoàn tất và bạn không cần thay đổi gì, Google sẽ liên hệ với bạn để thông báo cho bạn rằng bạn có thể bắt đầu xuất bản APK tích hợp và đã cập nhật lên Cửa hàng Play.
  • Sau khi Google xác nhận rằng APK mới nhất của bạn đã được xuất bản lên Cửa hàng Play, các cụm Đề xuất, Nổi bậtTiếp tục sẽ được xuất bản và hiển thị cho người dùng.