确定用户是否评价了应用程序

时间:2013-05-24 06:38:16

标签: android google-play

我正在开发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会很有帮助。

3 个答案:

答案 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();