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 mang đến 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 họ trên một kênh riêng bên ngoài ứng dụng họ thiết kế.
Tài liệu này chứa hướng dẫn dành cho các đối tác nhà phát triển về việc tích hợp nội dung xã hội của họ bằng cách dùng Engage SDK để điền dữ liệu cho khu vực nền tảng mới này.
Thông tin chi tiết về quy trình tích hợp
Phần sau đây trình bày chi tiết về quy trình tích hợp.
Thuật ngữ
Cụm Đề xuất hiện các đề xuất cho mỗi cá nhân từ từng đối tác nhà phát triển.
Các đề xuất của bạn có cấu trúc như 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.
Mỗi cụm Đề xuất bao gồm một trong hai loại thực thể sau:
- PortraitMediaEntity
- SocialPostEntity
PortraitMediaEntity phải chứa 1 hình ảnh dọc cho bài đăng. Không bắt buộc đối với siêu dữ liệu liên quan đến Hồ sơ và Tương tác.
Bài đăng
- Hình ảnh ở chế độ dọc và dấu thời gian, hoặc
- Hình ảnh ở chế độ dọc, nội dung văn bản và dấu thời gian
Hồ sơ
- Hình đại diện, tên hoặc tên người dùng, hình ảnh khác
Tương tác
- Chỉ cần số lượt và nhãn, hoặc
- Số lượt và hình ảnh (biểu tượng)
SocialPostEntity chứa siêu dữ liệu liên quan đến hồ sơ, bài đăng và tương tác.
Hồ sơ
- Hình đại diện, tên hoặc tên người dùng, văn bản và hình ảnh khác
Bài đăng
- Văn bản và dấu thời gian, hoặc
- Nội dung đa phương tiện (URL đa phương tiện hoặc hình ảnh) và dấu thời gian, hoặc
- Văn bản và nội dung đa phương tiện (URL đa phương tiện hoặc hình ảnh), dấu thời gian, hoặc
- Bản xem trước video (hình thu nhỏ và thời lượng) và dấu thời gian
Tương tác
- Chỉ cần số lượt và nhãn, hoặc
- Số lượt và hình ảnh (biểu tượng)
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 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 là 5 | Tối thiểu là 5 (PortraitMediaEntity hoặc SocialPostEntity ) |
Tối đa là 25 (PortraitMediaEntity hoặc SocialPostEntity ) |
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 để biểu thị cho từng loại mục. SDK hỗ trợ những thực thể sau cho danh mục Xã hội:
PortraitMediaEntity
SocialPostEntity
Các biểu đồ bên dưới cho thấy những thuộc tính có sẵn và yêu cầu cho từng loại.
PortraitMediaEntity
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 |
Siêu dữ liệu liên quan đến Bài đăng (Bắt buộc) | |||
Hình ảnh | Bắt buộc |
Hình ảnh phải ở tỷ lệ khung hình dọc. Giao diện người dùng chỉ hiện được 1 hình ảnh khi có nhiều hình ảnh. Tuy nhiên, giao diện người dùng có thể đưa ra chỉ báo trực quan rằng có nhiều hình ảnh khác trong ứng dụng. Nếu bài đăng là video, thì nhà cung cấp phải hiện hình thu nhỏ của video dưới dạng hình ảnh. |
Hãy xem Thông số kỹ thuật của hình ảnh để biết hướng dẫn. |
Nội dung văn bản | Không bắt buộc | Văn bản chính của bài đăng, nội dung cập nhật, v.v. | Chuỗi (nên dùng không quá 140 ký tự) |
Dấu thời gian | Không bắt buộc | Thời điểm đăng bài. | Dấu thời gian bắt đầu của hệ thống (tính bằng mili giây) |
Là nội dung video | Không bắt buộc | Bài đăng có phải là video không? | boolean |
Thời lượng video | Không bắt buộc | Thời lượng của video tính bằng mili giây. | Dài |
Siêu dữ liệu liên quan đến Hồ sơ (Không bắt buộc) | |||
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" | Chuỗi (nên dùng không quá 25 ký tự) |
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. Ảnh hình vuông 1:1 |
Hãy xem Thông số kỹ thuật của hình ảnh để biết hướng dẫn. |
Hình ảnh khác | Không bắt buộc |
Huy hiệu trên hồ sơ, ví dụ: huy hiệu xác minh Ảnh hình vuông 1:1 |
Hãy xem Thông số kỹ thuật của hình ảnh để biết hướng dẫn. |
Siêu dữ liệu liên quan đến lượt tương tác (Không bắt buộc) | |||
Số lượt | Không bắt buộc |
Cho biết số lượt tương tác, ví dụ: "3,7 triệu". Lưu ý: Nếu bạn cung cấp cả Số lượng và Giá trị số lượng, thì 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 cả số lượt và nhãn |
Giá trị đếm | Không bắt buộc | Số lượt tương tác dưới dạng giá trị. Lưu ý: Cung cấp Giá trị số lượng thay vì Số lượng nếu ứng dụng của bạn không xử lý logic về cách tối ưu hoá một số lượng lớn cho các kích thước màn hình khác nhau. Nếu bạn cung cấp cả giá trị Đếm và Giá trị đếm, thì giá trị Đếm sẽ được sử dụng. |
Dài |
Nhãn | Không bắt buộc | Cho biết mục đích của nhãn tương tác. Ví dụ: "Lượt thích". | Chuỗi Kích thước văn bản nên dùng: Tối đa 20 ký tự cho cả số lượt và nhã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 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 được trên mọi hệ số hình dạng. Lưu ý: Phải là ảnh hình vuông 1:1 |
Hãy xem Thông số kỹ thuật của hình ảnh để biết hướng dẫn. |
DisplayTimeWindow (Không bắt buộc) – Đặt khoảng thời gian hiện nội dung trên nền tảng | |||
Dấu thời gian bắt đầu | Không bắt buộc |
Dấu thời gian bắt đầu của hệ thống mà sau đó nội dung sẽ hiện trên nền tảng. Nếu bạn không đặt giá trị này, thì nội dung sẽ đủ điều kiện hiện trên nền tảng. |
Dấu thời gian bắt đầu của hệ thống (tính bằng mili giây) |
Dấu 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 mà sau đó nội dung không còn hiện trên nền tảng. Nếu bạn không đặt giá trị này, thì nội dung sẽ đủ điều kiện hiện trên nền tảng. |
Dấu thời gian bắt đầu của hệ thống (tính bằng mili giây) |
SocialPostEntity
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ổ. Hãy tham khảo phần Câu hỏi thường gặp này |
URI |
Siêu dữ liệu liên quan đến Bài đăng (Bắt buộc) Phải có ít nhất một trong số các siêu dữ liệu TextContent, Image hoặc WebContent |
|||
Hình ảnh | Không bắt buộc |
Hình ảnh phải ở tỷ lệ khung hình dọc. Giao diện người dùng chỉ hiện được 1 hình ảnh khi có nhiều hình ảnh. Tuy nhiên, giao diện người dùng có thể đưa ra chỉ báo trực quan rằng có nhiều hình ảnh khác trong ứng dụng. Nếu bài đăng là video, thì nhà cung cấp phải hiện hình thu nhỏ của video dưới dạng hình ảnh. |
Hãy xem Thông số kỹ thuật của hình ảnh để biết hướng dẫn. |
Nội dung văn bản | Không bắt buộc | Văn bản chính của bài đăng, nội dung cập nhật, v.v. | Chuỗi (nên dùng không quá 140 ký tự) |
Nội dung video (Không bắt buộc) | |||
Thời lượng | Bắt buộc | Thời lượng của video tính bằng mili giây. | Dài |
Hình ảnh | Bắt buộc | Hình ảnh xem trước nội dung video. | Hãy xem Thông số kỹ thuật của hình ảnh để biết hướng dẫn. |
Bản xem trước đường liên kết (Không bắt buộc) | |||
Bản xem trước đường liên kết – Tiêu đề | Bắt buộc | Văn bản cho biết tiêu đề của nội dung trang web | Chuỗi |
Bản xem trước đường liên kết – Tên máy chủ | Bắt buộc | Văn bản cho biết chủ sở hữu trang web, ví dụ: "INSIDER" | Chuỗi |
Bản xem trước đường liên kết – Hình ảnh | Không bắt buộc | Hình ảnh chính cho nội dung trên web | Hãy xem Thông số kỹ thuật của hình ảnh để biết hướng dẫn. |
Dấu thời gian | Không bắt buộc | Thời điểm đăng bài. | Dấu thời gian bắt đầu của hệ thống (tính bằng mili giây) |
Siêu dữ liệu liên quan đến Hồ sơ (Không bắt buộc) | |||
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". | Chuỗi (nên dùng không quá 25 ký tự) |
Văn bản bổ sung | Không bắt buộc |
Có thể được dùng làm tên nhận dạng, tên người dùng hoặc siêu dữ liệu bổ sung Ví dụ: "@John-Doe", "5 triệu người theo dõi", "Bạn có thể thích", "Thịnh hành", "5 bài đăng mới" |
Chuỗi (nên dùng không quá 40 ký tự) |
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. Ảnh hình vuông 1:1 |
Hãy xem Thông số kỹ thuật của hình ảnh để biết hướng dẫn. |
Hình ảnh khác | Không bắt buộc |
Huy hiệu trên hồ sơ, ví dụ: huy hiệu xác minh Ảnh hình vuông 1:1 |
Hãy xem Thông số kỹ thuật của hình ảnh để biết hướng dẫn. |
Siêu dữ liệu liên quan đến lượt tương tác (Không bắt buộc) | |||
Số lượt | Bắt buộc | Cho biết số lượt tương tác, ví dụ: "3,7 triệu". | Chuỗi (nên dùng không quá 20 ký tự cho cả số lượt và nhãn) |
Nhãn |
Không bắt buộc Nếu không có thì phải cung cấp Hình ảnh. |
Cho biết mục đích tương tác. Ví dụ: "Thích". | Chuỗi (nên dùng không quá 20 ký tự cho cả số lượt và nhãn) |
Hình ảnh |
Không bắt buộc Nếu không có thì phải cung cấp Nhãn. |
Cho biết mục đích tương tác. Ví dụ: Hình ảnh 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 được trên mọi hệ số hình dạng. Ảnh hình vuông 1:1 |
Hãy xem Thông số kỹ thuật của hình ảnh để biết hướng dẫn. |
DisplayTimeWindow (Không bắt buộc) – Đặt khoảng thời gian hiện nội dung trên nền tảng | |||
Dấu thời gian bắt đầu | Không bắt buộc |
Dấu thời gian bắt đầu của hệ thống mà sau đó nội dung sẽ hiện trên nền tảng. Nếu bạn không đặt giá trị này, thì nội dung sẽ đủ điều kiện hiện trên nền tảng. |
Dấu thời gian bắt đầu của hệ thống (tính bằng mili giây) |
Dấu 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 mà sau đó nội dung không còn hiện trên nền tảng. Nếu bạn không đặt giá trị này, thì nội dung sẽ đủ điều kiện hiện trên nền tảng. |
Dấu thời gian bắt đầu của hệ thống (tính bằng mili giây) |
Thông số kỹ thuật của hình ảnh
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.
Bước 2: Cung cấp dữ liệu Cụm
Bạn nên thực hiện trong nền việc xuất bản nội dung (ví dụ: dùng WorkManager), cũng như lên lịch đăng 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 họ vừa theo dõi một tài khoản mới).
AppEngageSocialClient
chịu trách nhiệm xuất bản cụm xã hội.
Các API dưới dây dùng để xuất bản cụm trong ứng dụng:
isServiceAvailable
publishRecommendationClusters
publishUserAccountManagementRequest
updatePublishStatus
deleteRecommendationsClusters
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 dùng để xuất bản danh sách đối tượng RecommendationCluster
.
Đối tượng RecommendationCluster
có thể có các thuộc tính sau:
Thuộc tính | Yêu cầu | Nội dung mô tả |
---|---|---|
Danh sách SocialPostEntity, or PortraitMediaEntity | Bắt buộc | Danh sách các thực thể tạo nên các đề xuất cho cụm Đề xuất này. Các thực thể trong một cụm duy nhất phải thuộc cùng một loại. |
Tiêu đề | Bắt buộc | Tiêu đề cho cụm Đề xuất (ví dụ: Thông tin mới nhất của bạn bè). Kích thước văn bản nên dùng: dưới 25 ký tự (Văn bản quá dài có thể hiển thị dấu ba chấm) |
Phụ đề | Không bắt buộc | Phụ đề của cụm Đề xuất. |
URI hành động | Không bắt buộc |
Đường liên kết sâu đến trang trong ứng dụng của đối tác để người dùng có thể xem danh sách chứa đầy đủ các đề xuất. 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 |
Kotlin
client.publishRecommendationClusters( PublishRecommendationClustersRequest.Builder() .addRecommendationCluster( RecommendationCluster.Builder() .addEntity(entity1) .addEntity(entity2) .setTitle("Latest from your friends") .build()) .build())
Java
client.publishRecommendationClusters( new PublishRecommendationClustersRequest.Builder() .addRecommendationCluster( new RecommendationCluster.Builder() .addEntity(entity1) .addEntity(entity2) .setTitle("Latest from your friends") .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:
- Mọi dữ liệu hiện có về cụm Đề xuất đều bị xoá.
- Dữ liệu từ yêu cầu được phân tích cú pháp và lưu trữ trong cụm Đề xuất mới.
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ì một lý do kinh doanh nội bộ bất kỳ mà không có cụm nào được xuất bản, bạn nên cập nhật trạng thái xuất bản bằng cách sử dụng API updatePublishStatus. 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.
- Thông tin này giúp nhà phát triển cung cấp thông tin chi tiết về thời điểm công bố và không công bố dữ liệu.
- 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 chưa được xuất bản do người dùng chưa đăng nhập, thì bạn nên xuất bản Thẻ đăng nhập. Nếu vì một lý do bất kỳ mà nhà cung cấp không thể xuất bản Thẻ đăng nhập, 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.
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_RECOMMENDATION) ... .build())
Java
client.deleteClusters( new DeleteClustersRequest.Builder() .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.
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 | Tên lỗi | Lưu ý |
---|---|---|
1 |
SERVICE_NOT_FOUND |
Dịch vụ này không dùng được trên thiết bị đã cho. |
2 |
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). |
3 |
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. |
4 |
SERVICE_CALL_PERMISSION_DENIED |
Trình gọi không được phép thực hiện cuộc gọi dịch vụ. |
5 |
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). |
6 |
SERVICE_CALL_INTERNAL |
Đã xảy ra lỗi bên phía dịch vụ. |
7 |
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ụngContext.registerReceiver()
. Điều này cho phép giao tiếp từ các ứng dụng vẫn còn trong bộ nhớ.
class AppEngageBroadcastReceiver extends BroadcastReceiver {
// Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION 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));
}
- Khai báo tĩnh quá trình triển khai bằng thẻ
<receiver>
trong tệpAndroidManifest.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>
</receiver>
</application>
Dịch vụ sẽ gửi các ý định sau:
com.google.android.engage.action.PUBLISH_RECOMMENDATION
Bạn nên bắt đầu lệnh gọipublishRecommendationClusters
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ệ
Hãy liên hệ với engage-developers@google.com nếu bạn có câu hỏi trong quá trình tích hợp. Nhóm của chúng tôi sẽ trả lời sớm nhất có thể.
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 cho Google kiểm thử.
- 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 kiểm thử 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 rằng bạn có thể bắt đầu xuất bản APK tích hợp mới 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 sẽ được xuất bản và hiển thị cho người dùng.