我正在开发Android应用程序。我想为特定数量的启动打开一个apprater对话框。所以我使用了以下代码。
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();
}
它工作正常。但我的问题是如果我给LAUNCHES_UNTIL_PROMPT是3然后对话框将出现在第4次启动并且用户给出了他的评级,然后5次再次对话框启动..每次对话框启动。所以这对用户来说很恶心。如果用户对应用程序进行了评级,则无需再次对应用程序进行评级,直到下一个版本发布
PS:每当发布新版本的应用程序时,做一些事情来启动apprater会很有帮助。
答案 0 :(得分:1)
在对话框中包含选项以“立即评分”“以后评分”和“不用谢谢”。如果使用点击“立即评价”更新偏好设置,则不再显示对话框。如果他们点击“以后费率”,只需重置您的计数并在另外三次发布后再次提示他们。如果“不,谢谢”,那么只需更新首选项即可指示不再显示对话框。
答案 1 :(得分:0)
无法检查用户是否在Google Play上对您的应用进行了评分,因为开发者可能会使用它来激励某些内容。
答案 2 :(得分:0)
我前段时间找到了this answer并在我的某个应用上使用了它,并遇到了与您相同的问题。
我建议将showRateDialog函数修改为以下内容:
Button b1 = new Button(mContext);
b1.setText("Rate " + APP_TITLE);
b1.setOnClickListener(new OnClickListener() {
// If Rate <your app> is selected, set dontshowagain field to true
// and you will never see it again
public void onClick(View v) {
mContext.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + APP_PNAME)));
if (editor != null) {
editor.putBoolean("dontshowagain", true);
editor.commit();
}
dialog.dismiss();
}
});
ll.addView(b1);
Button b2 = new Button(mContext);
b2.setText("Remind me later");
b2.setOnClickListener(new OnClickListener() {
// If "Remind me later" is clicked, reset everything until requisite
// number of launches or days since first launch
public void onClick(View v) {
if (editor != null) {
editor.putLong("lLaunchCount", 0);
editor.putLong("lDateFirstLaunch", 0);
editor.commit();
}
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();