プロンプトAndroidユーザーにアプリケーションを評価するためのベストプラクティスアプローチはありますか?ユーザーがAmazon.comまたはGoogle Marketplaceからそれを取得できることを考慮して、ユーザーを許可する方法でこれを処理する最適なルートは何ですか?投票する?
Google Marketplaceについては、このすてきな コードスニペット をご覧ください。代わりに、またはそれに加えて、Amazon Appstoreを起動するように変更できると確信しています。
EDIT:サイトのURL構造が変更されたように見えるので、上記のリンクを更新し、動作するようにしました。以下は、サイトが再びダウンした場合の Wayback Machine の古いコピーです。追加のバックアップとして以下の投稿の主な内容を貼り付けますが、リンクを参照してコメントを読んで更新を取得することもできます。
このコードは、ユーザーにアプリをAndroidマーケット(iOS Appiraterに触発))で評価するよう促します。アプリの起動と評価ダイアログが表示される前のインストールからの日数が必要です。
_APP_TITLE
_および_APP_PNAME
_を必要に応じて調整します。 _DAYS_UNTIL_Prompt
_と_LAUNCHES_UNTIL_Prompt
_も微調整する必要があります。
テストし、ダイアログの外観を調整するには、アクティビティからAppRater.showRateDialog(this, null)
を呼び出します。通常の使用は、アクティビティが呼び出されるたびに(たとえば、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 Google Playstore app", null, 0);
}
RateMeMaybeを使用することもできます。 https://github.com/Kopfgeldjaeger/RateMeMaybe
構成するためのかなりのオプションを提供します(最初のプロンプトまでの最小日数/起動、ユーザーが「not now」を選択した場合、次の各プロンプトまでの最小日数/起動、ダイアログタイトル、メッセージなど)。使い方も簡単です。
READMEの使用例:
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()は、使用したくない場合は0に置き換えることができます。残りのgetX呼び出しは文字列に置き換えることができます
コードを変更してAmazon Marketplaceを開くのは簡単です
「いいね」オプションなどを使用して、ファンページへのFacebookリンクを設定することはできますか?メインメニューに小さなラベルが付いたアイコンは、ポップアップリマインダーとしては十分なものであり、面倒なことではありません。
[このアプリをランク付け]ボタンの下にこれらの2行のコードを書くだけで、アプリをアップロードしたGoogleストアに移動します。
String myUrl ="https://play.google.com/store/apps/details?id=smartsilencer";
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(myUrl)));
簡単な解決策として、このライブラリを試してください https://github.com/kobakei/Android-RateThisApp
ダイアログ、タイトル、メッセージを表示する基準などの構成を変更することもできます
ここでは、ユーザーをアプリのWebページにリダイレクトすることが唯一の解決策だと思います。
Playストアポリシーでは、アプリで何らかのアクションを実行するようユーザーに通知する場合、ユーザーがそのアクションを実行したくない場合は、ユーザーが操作をキャンセルできるようにする必要があります。そのため、ユーザーにアプリの更新またはPlayストアでのアプリの評価をYes(Now)に求める場合、No(Later、Not Now)などのオプションも指定する必要があります。
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/