Google Play In-App Review API Kullanımı

Android uygulamanız Play Store’da yayınlandıktan sonra, uygulama puanlandırma ve yorumları daha fazla indirme sağlamak için çok önemli faktörlerdir. Bunu başarmak için, genellikle kullanıcıları Play Store’a yönlendirerek uygulamayı puanlandırmalarını isteriz. Bu yöntem ile kullanıcıların Play Store’a yönlendirildikten sonra uygulamanıza geri dönmeme olasılığı vardır. Ayrıca bazı kullanıcılar, uygulamayı Play Store’da puanlandırmak da zorlanabilir.

Bu makalemde, Google Play In-App Review API ile kullanıcının uygulama puanlandırma ve yorumlarını, Android uygulama içinde yapmasını sağlayarak, indirme sayılarını arttırma konusunda fayda sağlayacağız.

Aşağıdaki resimde olduğu gibi kullanıcı, uygulama içinde puanlandırma ve yorum yapabilir.

In-App Review için Önemli Noktalar

  1. Bu API yalnızca Android 5.0 (API seviyesi 21) veya sonraki sürümlere sahip olan Android cihazlarda çalışır.
  2. Google Play, kullanıcıya ne sıklıkla review dialog arayüzünü gösterilebileceğiniz konusunda zamana bağlı bir kota uygular. Bu kota nedeniyle, launchReviewFlow yöntemini kısa bir süre içinde birden çok kez çağırmak her zaman bir iletişim kutusu görüntülemeyebilir. (örneğin, bir aydan az). Kota hakkında bilgileri quotas linkinden ulaşabilirsiniz.
  3. Rating widget üzerinde tasarımsal bir değişiklik yapamazsınız. Bu konuda daha detaylı bilgiyi Design Guidelines linkinden ulaşabilirsiniz.

Projemizde Google Play In-App Review API’yi uygulayabilmek için aşağıdaki belirttiğim adımları uygulamalısınız.

1-Gerekli Kütüphanelerin Eklenmesi

Android Studio Ide ile oluşturduğum projemin app dizinin altındaki build.gradle dosyasını açıyoruz. Dependencies kod bloklarının arasına aşağıdaki kodları yerleştirerek Play Core API ve material kütüphanelerini yüklüyoruz.

implementation "com.google.android.play:core:1.8.0"

//material'i hata geri dönüşü olduğunda kullanıcı deneyimi için kullanıldı
//isterseniz, alternatif kütüphanelerde kullanabilirsiniz
implementation "com.google.android.material:material:1.3.0-alpha02"

2- Backend Kodlama

İlk önce ReviewManager interface oluşturmamız gerekir. Sonrasında review akışını başlatmak için ReviewInfo nesnesi üzerinden launchReviewFlow () yöntemini çağırdık. Bazı nedenlerden dolayı işleyiş başarısız olursa, kullanıcıyı playstore uygulamasına yönlendirip, klasik playstore üzerinden değerlendirme yapılmasını sağladım. Detaylı açıklamalar kodlar arasında comment olarak bulabilirsiniz.

import android.content.*;
import android.net.Uri;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.play.core.review.*;
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());
    }

    /**
     * In-App review API'nin sağladığı rating widget ve alt sayfalarını gosteren metod
     *Rating widget kotalara ve sınırlamalara bağlı olarak gösterilebilir veya gösterilmeyebilir
     */
    public void showRateApp() {
        Task<ReviewInfo> request = reviewManager.requestReviewFlow();
        request.addOnCompleteListener(task -> {
            if (task.isSuccessful()) {

                ReviewInfo reviewInfo = task.getResult();
                Task<Void> flow = reviewManager.launchReviewFlow(this, reviewInfo);
                flow.addOnCompleteListener(task1 -> {
                    //Rating widget gösterilme işlemi bitti. Yalnız bu noktada API'de, kullanıcının puanlandırma yapıp yapmadığıyla
                    //ilgili bir kontrol bulunmamaktadır

                });
            } else {
                //Herhangi bir hata varsa showRateAppFallbackDialog metodu çağırılıyor
                showRateAppFallbackDialog();
            }
        });
    }

    /**
     * bir hata ile karşılaşıp, uygulama içinde Rating widget gösterilemediği durumda,
     * uygulamanızı PlayStore yönlendirip, PlayStore web sitesinde puanlandırma yapılmasına yönlendirdim.
     */
    private void showRateAppFallbackDialog() {
        //Ben tercih olarak MaterialAlertDialogBuilder kullandım. Fakat dilerseniz, klasil AlertDialog da kullanabilirsiniz
        new MaterialAlertDialogBuilder(this)
                .setTitle(R.string.rate_app_title)
                .setMessage(R.string.rate_app_message)
                .setPositiveButton(R.string.rate_btn_pos, (dialog, which) -> redirectToPlayStore())
                .setNegativeButton(R.string.rate_btn_neg,
                        (dialog, which) -> {
                    
                        })
                .setNeutralButton(R.string.rate_btn_nut,
                        (dialog, which) -> {
                    
                        })
                .setOnDismissListener(dialog -> {
                })
                .show();
    }

    //Kullanıcıyı PlayStore yönlendirme(Hata ile karşılaşıldığında kullandım)
    public void redirectToPlayStore() {
        final String appPackageName = getPackageName();
        try {
            startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName)));
        } catch (ActivityNotFoundException exception) {
            startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + appPackageName)));
        }
    }
}

3- Arayüz Kodlama

Ben MaterialButton kullanarak, kullanıcıdan değerlendirme yapmasını yönlendirdim. Siz dilerseniz, klasik button da kullanabilirsiniz. In-App Review API’den bağımsız, sizin tasarım tercihinizle alakalı bir durum.

<?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>

Eğer benim gibi MaterialButton kullanacaksanız, res->values ->styles.xml dosyasınızda temanız MaterialComponents şeklinde tanımlanmış olmalıdır. Örnek;

<style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">
//...
</style>

In-App Review Test Etme

In-App Review API’sini barındıran proje kodlarını test edebilmek için uygulamanızı PlayStore’da onaylatmış olmanız gerekir. En azından uygulamanızı PlayStore’da ve Internal App Sharing test ortamlarına yüklemelisiniz.

Örnek proje kodlarına github linkinden ulaşabilirsiniz.

Kaynak

1-https://developer.android.com/guide/playcore/in-app-review/kotlin-java

 

 

 

Tavsiye Edilen Yazılar

1 Yorum

  1. Güzel bir anlatım. Uygulamayı düşününce buradan yararlanırım ?


Bir Yorum Ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir