Sau khi ứng dụng của bạn xuất hiện trên Playstore, xếp hạng và đánh giá ứng dụng là những yếu tố rất quan trọng để thúc đẩy nhiều lượt tải xuống hơn. Để đạt được điều này, chúng tôi thường yêu cầu người dùng xếp hạng ứng dụng bằng cách hiển thị hộp thoại có một vài nút và chuyển hướng họ đến cửa hàng chơi. Với trải nghiệm người dùng này, có khả năng người dùng không quay lại ứng dụng của chúng tôi sau khi được chuyển hướng đến cửa hàng chơi. Ngoài ra, một người dùng mới bắt đầu cảm thấy khó đánh giá ứng dụng trên playstore.
May mắn thay, google đã cung cấp một API có tên là Đánh giá trong ứng dụng để hiển thị tiện ích xếp hạng trong chính ứng dụng mà người dùng không cần rời khỏi ứng dụng.
Tích hợp API đánh giá trong ứng dụng
Tích hợp đánh giá trong ứng dụng rất đơn giản. Nó có thể được thực hiện với mã rất tối thiểu. Hãy xem cách tích hợp nó.
1. API đánh giá trong ứng dụng là một phần của Play Core API, vì vậy bạn phải đưa thư viện vào build.gradle của ứng dụng. Ở đây tôi đang thêm thư viện tài liệu cũng như tôi muốn hiển thị hộp thoại xếp hạng dự phòng nếu có bất kỳ lỗi nào trong API đánh giá trong ứng dụng.
app/build.gradle
// Play core library
implementation "com.google.android.play:core:1.8.0"
// optional material library to show the fallback rate us dialog
implementation "com.google.android.material:material:1.3.0-alpha02"
2. Bước tiếp theo là tạo phiên bản của giao diện ReviewManager. Lớp này cung cấp các phương thức cần thiết để bắt đầu luồng xem xét.
Khi phiên bản mới được tạo, chúng ta cần gọi tác vụ requestReviewFlow () để trả về đối tượng ReviewInfo khi hoàn thành thành công.
Sử dụng đối tượng ReviewInfo, chúng ta cần gọi phương thức khởi chạyReviewFlow () để bắt đầu luồng đánh giá.
Vì một số lý do, nếu requestReviewFlow không thành công, chúng tôi có thể khởi chạy hộp thoại Xếp hạng ứng dụng thông thường chuyển hướng người dùng đến ứng dụng playstore.
Dưới đây, phương thức showRateApp () bắt đầu quy trình đánh giá trong ứng dụng. Phương thức showRateAppFallbackDialog () hoạt động như phương thức dự phòng nếu requestReviewFlow gây ra lỗi. Phương pháp dự phòng này hiển thị hộp thoại material thông thường với ba nút để chuyển hướng người dùng đến ứng dụng playstore.
Đây là mã hoàn chỉnh cần thiết cho quy trình đánh giá trong ứng dụng.
public class MainActivity extends AppCompatActivity {
private ReviewManager reviewManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
private void init() {
reviewManager = ReviewManagerFactory.create(this);
findViewById(R.id.btn_rate_app).setOnClickListener(view -> showRateApp());
}
/**
* Shows rate app bottom sheet using In-App review API
* The bottom sheet might or might not shown depending on the Quotas and limitations
* https://developer.android.com/guide/playcore/in-app-review#quotas
* We show fallback dialog if there is any error
*/
public void showRateApp() {
Task<ReviewInfo> request = reviewManager.requestReviewFlow();
request.addOnCompleteListener(task -> {
if (task.isSuccessful()) {
// We can get the ReviewInfo object
ReviewInfo reviewInfo = task.getResult();
Task<Void> flow = reviewManager.launchReviewFlow(this, reviewInfo);
flow.addOnCompleteListener(task1 -> {
// The flow has finished. The API does not indicate whether the user
// reviewed or not, or even whether the review dialog was shown. Thus, no
// matter the result, we continue our app flow.
});
} else {
// There was some problem, continue regardless of the result.
// show native rate app dialog on error
showRateAppFallbackDialog();
}
});
}
/**
* Showing native dialog with three buttons to review the app
* Redirect user to playstore to review the app
*/
private void showRateAppFallbackDialog() {
new MaterialAlertDialogBuilder(this)
.setTitle(R.string.rate_app_title)
.setMessage(R.string.rate_app_message)
.setPositiveButton(R.string.rate_btn_pos, (dialog, which) -> {
})
.setNegativeButton(R.string.rate_btn_neg,
(dialog, which) -> {
})
.setNeutralButton(R.string.rate_btn_nut,
(dialog, which) -> {
})
.setOnDismissListener(dialog -> {
})
.show();
}
}
Ouput:
Post a Comment
Post a Comment