Membuat App Review Playstore Tanpa Meninggalkan Aplikasi Android Studio


Membuat App Review Playstore Tanpa Meninggalkan Aplikasi Android Studio


Setelah aplikasi Anda sudah tersedia di playstore, peringkat dan ulasan aplikasi adalah faktor yang sangat penting untuk mendorong lebih banyak unduhan. Untuk mencapai ini, biasanya meminta pengguna untuk menilai aplikasi dengan menampilkan dialog dengan beberapa tombol dan mengarahkannya ke playstore.

Dengan pengalaman pengguna ini, ada kemungkinan pengguna tidak kembali ke aplikasi kita setelah dialihkan ke playstore. Juga pengguna pemula merasa kesulitan untuk menilai aplikasi di playstore.

Untungnya google menyediakan API bernama In-App Review untuk menampilkan widget peringkat di aplikasi itu sendiri tanpa pengguna meninggalkan aplikasi.

Ulasan Dalam Aplikasi adalah bagian dari pustaka inti permainan. Setelah widget terintegrasi, kita dapat melihat widget peringkat ditampilkan di aplikasi yang sama di lembar bawah.
Mengintegrasikan API Tinjauan Dalam Aplikasi

Mengintegrasikan ulasan Dalam Aplikasi sangat sederhana. Itu dapat dicapai dengan kode yang sangat minim. Mari kita lihat bagaimana mengintegrasikannya.

1 . API ulasan Dalam Aplikasi adalah bagian dari Play Core API , jadi Anda harus menyertakan pustaka di build.gradle aplikasi Anda . Di sini saya menambahkan pustaka material serta saya ingin menampilkan dialog rating fallback jika ada kesalahan dalam API ulasan dalam aplikasi.

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 . Langkah selanjutnya adalah membuat instance antarmuka ReviewManager . Kelas ini menyediakan metode yang diperlukan untuk memulai alur tinjauan.

→Setelah instance baru dibuat, kita perlu memanggil tugas requestReviewFlow () yang mengembalikan objek ReviewInfo setelah berhasil diselesaikan.

→Dengan menggunakan objek ReviewInfo , kita perlu memanggil metode launchReviewFlow () untuk memulai alur tinjauan.

Untuk beberapa alasan, jika requestReviewFlow gagal, kita bisa meluncurkan dialog App Rate biasa yang mengarahkan pengguna ke aplikasi playstore.

Di bawah ini, metode showRateApp () memulai alur tinjauan dalam aplikasi. Metode showRateAppFallbackDialog () bertindak sebagai metode fallback jika requestReviewFlow membuat kesalahan. Metode fallback ini menampilkan dialog material biasa dengan tiga tombol untuk mengarahkan pengguna ke aplikasi playstore.

Berikut adalah kode lengkap yang diperlukan untuk alur peninjauan dalam aplikasi.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <com.google.android.material.button.MaterialButton
        android:id="@+id/btn_rate_app"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="80dp"
        android:text="Rate App!"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.java
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.play.core.review.ReviewInfo;
import com.google.android.play.core.review.ReviewManager;
import com.google.android.play.core.review.ReviewManagerFactory;
import com.google.android.play.core.tasks.Task;
 
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
     * 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();
    }
}

Comments

Popular posts from this blog

3 Langkah Duplikat Objek/Photo Pada Photoshop

Cara Mengatasi Masalah Epson L120 yang Tidak Dapat Menarik Kertas