Android方法“评价我的应用程序”

是否有最佳实践方法来提示Android用户对您的应用程序进行评分? 考虑到他们可以从Amazon.com或谷歌市场获得它是什么是处理这种方式,让用户投票的最佳途径?

对于谷歌市场,看看这个整洁的代码片段 。 我相信你可以修改它来启动亚马逊Appstore,或者除了。

编辑:看起来像网站改变了他们的url结构,所以我已经更新上面的链接,所以现在的作品。 在Wayback Machine中,这是一个旧版本,以防万一他们的网站再次出现故障。 我将粘贴下面的post的主要内容作为额外的备份,但你仍然可能想要访问链接阅读评论,并得到任何更新。

此代码提示用户在Android市场评价您的应用程序(受iOS Appirater启发)。 在评级对话框出现之前,它需要一定数量的应用程序启动以及自安装以来的几天。

根据需要调整APP_TITLEAPP_PNAME 。 你也应该调整DAYS_UNTIL_PROMPTLAUNCHES_UNTIL_PROMPT

为了testing它并调整对话框外观,可以从Activity中调用AppRater.showRateDialog(this, null) 。 正常的用法是每次调用AppRater.app_launched(this)时(例如从onCreate方法中)调用AppRater.app_launched(this) )。 如果满足所有条件,则出现对话框。

 public class AppRater { private final static String APP_TITLE = "YOUR-APP-NAME"; private final static String APP_PNAME = "YOUR-PACKAGE-NAME"; private final static int DAYS_UNTIL_PROMPT = 3; private final static int LAUNCHES_UNTIL_PROMPT = 7; 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 dialog 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(); } } 
 Uri uri = Uri.parse("market://details?id=" + context.getPackageName()); Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri); try { context.startActivity(goToMarket); } catch (ActivityNotFoundException e) { UtilityClass.showAlertDialog(context, ERROR, "Couldn't launch the market", null, 0); } 

你也可以使用RateMeMaybe: https : //github.com/Kopfgeldjaeger/RateMeMaybe

它提供了相当多的选项来configuration(如果用户select“不是现在”,对话框标题,消息等),直到第一个提示,最less天/启动,直到每个下一个提示最less天/启动。 这也很容易使用。

自述文件中的示例用法:

 RateMeMaybe rmm = new RateMeMaybe(this); rmm.setPromptMinimums(10, 14, 10, 30); rmm.setDialogMessage("You really seem to like this app, " +"since you have already used it %totalLaunchCount% times! " +"It would be great if you took a moment to rate it."); rmm.setDialogTitle("Rate this app"); rmm.setPositiveBtn("Yeeha!"); rmm.run(); 

编辑:如果你只想手动显示提示,你也可以使用RateMeMaybeFragment

  if (mActivity.getSupportFragmentManager().findFragmentByTag( "rmmFragment") != null) { // the dialog is already shown to the user return; } RateMeMaybeFragment frag = new RateMeMaybeFragment(); frag.setData(getIcon(), getDialogTitle(), getDialogMessage(), getPositiveBtn(), getNeutralBtn(), getNegativeBtn(), this); frag.show(mActivity.getSupportFragmentManager(), "rmmFragment"); 

如果您不想使用getIcon(),则可以将其replace为0; 其余的getX调用可以用stringreplace

更改代码打开亚马逊商城应该很容易

也许设置一个Facebook链接到“喜欢”选项等粉丝页面? 在主菜单上有一个小标签的图标就足够了,而不会像讨厌的提醒一样。

只需在“排列此应用”button下面写下这两行代码,它就会将您带到已上传应用的Google商店。

 String myUrl ="https://play.google.com/store/apps/details?id=smartsilencer"; startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(myUrl))); 

我认为,将用户redirect到您的应用程序的网页是唯一的解决scheme。

Play商店的政策规定,如果我们通知用户在我们的应用中执行一些操作,那么如果用户不想执行该操作,则还必须让用户取消操作。 因此,如果我们要求用户更新应用程序或使用“是”(现在)在Play商店对应用程序进行评分,那么我们还必须提供No(稍后,不是现在)等选项。

 rateButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { r.showDefaultDialog(); } }); 

其中r是一个包含showDefaultDialog方法的类

 public void showDefaultDialog() { //Log.d(TAG, "Create default dialog."); String title = "Enjoying Live Share Tips?"; String loveit = "Love it"; String likeit = "Like it"; String hateit = "Hate it"; new AlertDialog.Builder(hostActivity) .setTitle(title) .setIcon(R.drawable.ic_launcher) //.setMessage(message) .setPositiveButton(hateit, this) .setNegativeButton(loveit, this) .setNeutralButton(likeit, this) .setOnCancelListener(this) .setCancelable(true) .create().show(); } 

下载完整的示例[androidAone]: http : //androidaone.com/11-2014/notify-users-rate-app-playstore/

为简单的解决scheme尝试这个库https://github.com/kobakei/Android-RateThisApp

您还可以更改其configuration,如标准显示对话框,标题,消息

无论如何:例如button

  Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData (Uri.parse("market://details?id="+context.getPackageName())); startActivity(intent);