I am working on an Android application. I want to open a apprater dialog for particular number of launches. So I used the following code.
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();
}
It is working fine.But my problem is if I give LAUNCHES_UNTIL_PROMPT is 3 then the dialog will appear on 4th launch and user gave his rating, then 5 time again dialog launches..every time the dialog launches. So it is disgusting for users. If the user rated the app then no need to 'rate the app' again until the next version relese
PS: It is helpful to do something to launch apprater whenever a new version of app is released.