Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to implement Rate It feature in Android App

I am developing an Android App. In which everything is working right. My app is ready to launch. But there I need to implement one more feature. I need to display a popup that contains

Rate It and Remind me later

Here if any user rates the app in the market then the popup won't be disappeared. I have searched in Google and found one link. With this, I understand that it's not possible to know. So I need a suggestion for this.

Has anybody faced this situation before? If so, is there any solution or any alternative for this?

like image 472
Naveen Avatar asked Jan 25 '13 02:01

Naveen


People also ask

How do I rate an app without installing it?

There is no way to rate an app without downloading it on the Google play store. You will have to install the app then rate it and uninstall it if you just intend to give rating to a particular app.

What is the use of Rate Me feature in an app?

Since high rating indicates the success of your app, and even criticism is required to make the application better. So, it is better to add a rate me feature in your app which helps you to get the feedback. It improves the rating of your app in play store. It helps you to improve your app (find bugs) by getting feedback.

What is rating in Android app development?

These rating were told the new users who wish to install that particular android app that this is app is good, average or bad. So in this tutorial we are simply writing the code to open our application dashboard on Google play store app so user can easily give us online rating.

Is it possible to rate an app on Google Play Store?

Unless the user does not love or hate your app, they are not likely to go out of their way to rate your app. Since high rating indicates the success of your app, and even criticism is required to make the application better.

How has adding the ability to rate an app changed your ratings?

Adding the capability to directly rate an app has caused a slight decrease in the numerical ratings for my free version, and a slight increase in my paid app. For the free app, my 4 star ratings increased more than my 5 star ratings, as people who thought my app was good but not great started to rate it as well. Change was about -0.2.


1 Answers

I implemented this a while back, to some extent. It is impossible to know whether or not a user has rated an app, to prevent ratings from becoming a currency (some developers might add an option like "Rate this app and get so and so in the app for free").

The class I wrote provides three buttons, and configures the dialog so that it is only shown after the app has been launched n times (users have a higher chance of rating the app if they've used it a bit before. Most of them are unlikely to even know what it does on the first run):

public class AppRater {     private final static String APP_TITLE = "App Name";// App Name     private final static String APP_PNAME = "com.example.name";// Package Name      private final static int DAYS_UNTIL_PROMPT = 3;//Min number of days     private final static int LAUNCHES_UNTIL_PROMPT = 3;//Min number of launches      public static void app_launched(Context mContext) {         SharedPreferences prefs = mContext.getSharedPreferences("apprater", 0);         if (prefs.getBoolean("dontshowagain", false)) { return ; }          SharedPreferences.Editor editor = prefs.edit();          // Increment launch counter         long launch_count = prefs.getLong("launch_count", 0) + 1;         editor.putLong("launch_count", launch_count);          // Get date of first launch         Long date_firstLaunch = prefs.getLong("date_firstlaunch", 0);         if (date_firstLaunch == 0) {             date_firstLaunch = System.currentTimeMillis();             editor.putLong("date_firstlaunch", date_firstLaunch);         }          // Wait at least n days before opening         if (launch_count >= LAUNCHES_UNTIL_PROMPT) {             if (System.currentTimeMillis() >= date_firstLaunch +                      (DAYS_UNTIL_PROMPT * 24 * 60 * 60 * 1000)) {                 showRateDialog(mContext, editor);             }         }          editor.commit();     }         public static void showRateDialog(final Context mContext, final SharedPreferences.Editor editor) {         final Dialog dialog = new Dialog(mContext);         dialog.setTitle("Rate " + APP_TITLE);          LinearLayout ll = new LinearLayout(mContext);         ll.setOrientation(LinearLayout.VERTICAL);          TextView tv = new TextView(mContext);         tv.setText("If you enjoy using " + APP_TITLE + ", please take a moment to rate it. Thanks for your support!");         tv.setWidth(240);         tv.setPadding(4, 0, 4, 10);         ll.addView(tv);          Button b1 = new Button(mContext);         b1.setText("Rate " + APP_TITLE);         b1.setOnClickListener(new OnClickListener() {             public void onClick(View v) {                 mContext.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + APP_PNAME)));                 dialog.dismiss();             }         });                 ll.addView(b1);          Button b2 = new Button(mContext);         b2.setText("Remind me later");         b2.setOnClickListener(new OnClickListener() {             public void onClick(View v) {                 dialog.dismiss();             }         });         ll.addView(b2);          Button b3 = new Button(mContext);         b3.setText("No, thanks");         b3.setOnClickListener(new OnClickListener() {             public void onClick(View v) {                 if (editor != null) {                     editor.putBoolean("dontshowagain", true);                     editor.commit();                 }                 dialog.dismiss();             }         });         ll.addView(b3);          dialog.setContentView(ll);                 dialog.show();             } } 

Integrating the class is as simple as adding:

AppRater.app_launched(this); 

To your Activity. It only needs to be added to one Activity in the entire app.

like image 167
Raghav Sood Avatar answered Sep 24 '22 12:09

Raghav Sood