Existe-t-il une approche recommandée par les utilisateurs d'Invite Android pour évaluer votre application? Considérant qu’ils pourraient l’acquérir auprès d’Amazon.com ou de Google Marketplace, quel est le meilleur moyen de gérer cela de manière à permettre aux utilisateurs de voter?
Pour Google Marketplace, jetez un coup d'œil à cet intéressant { extrait de code } _. Je suis sûr que vous pouvez le modifier pour lancer Amazon Appstore à la place ou en complément de.
EDIT: On dirait que le site a changé sa structure d'URL, j'ai donc mis à jour le lien ci-dessus pour qu'il fonctionne maintenant. Voici une ancienne copie à la Wayback Machine au cas où leur site redescendrait. Je vais coller le contenu principal du message ci-dessous comme sauvegarde supplémentaire, mais vous voudrez peut-être consulter le lien pour lire les commentaires et obtenir les mises à jour.
Ce code invite les utilisateurs engagés à évaluer votre application sur le marché Android (inspiré par iOS Appirater). Cela nécessite un certain nombre de lancements de l'application et de jours depuis l'installation avant que la boîte de dialogue d'évaluation ne s'affiche.
Ajustez APP_TITLE
et APP_PNAME
à vos besoins. Vous devriez également Tweak DAYS_UNTIL_Prompt
et LAUNCHES_UNTIL_Prompt
.
Pour le tester et modifier l'apparence de la boîte de dialogue, vous pouvez appeler AppRater.showRateDialog(this, null)
à partir de votre activité. Une utilisation normale consiste à appeler AppRater.app_launched(this)
chaque fois que votre activité est appelée (par exemple, depuis la méthode onCreate). Si toutes les conditions sont remplies, la boîte de dialogue apparaît.
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);
}
Vous pouvez également utiliser RateMeMaybe: https://github.com/Kopfgeldjaeger/RateMeMaybe
Il vous donne de nombreuses options à configurer (minimum de jours/lancements jusqu'à la première invite, minimum de jours/lancements jusqu'à la prochaine invite si l'utilisateur choisit "pas maintenant", titre de la boîte de dialogue, message, etc.). Il est également facile à utiliser.
Exemple d'utilisation de 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();
Éditer: si vous voulez seulement afficher l’invite manuellement, vous pouvez aussi utiliser le 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 () peut être remplacé par 0 si vous ne voulez pas en utiliser un; le reste des appels getX peut être remplacé par Strings
Changer le code pour ouvrir Amazon Marketplace devrait être facile
Peut-être pouvez-vous créer un lien Facebook vers une page de fans avec des options "similaires", etc.? Une icône avec une petite étiquette sur le menu principal serait bien suffisante et pas aussi ennuyante, voire pas du tout, comme un rappel pop-up.
Il suffit d'écrire ces deux lignes de code sous le bouton "Classer ces applications" pour accéder au magasin Google où vous avez téléchargé votre application.
String myUrl ="https://play.google.com/store/apps/details?id=smartsilencer";
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(myUrl)));
pour une solution simple, essayez cette bibliothèque https://github.com/kobakei/Android-RateThisApp
vous pouvez également modifier sa configuration comme critères pour afficher la boîte de dialogue, le titre, le message
Je pense que rediriger les utilisateurs vers la page Web de votre application est la seule solution.
La politique du Play Store stipule que si nous demandons aux utilisateurs d'effectuer une action dans notre application, nous devons également permettre aux utilisateurs d'annuler l'opération si l'utilisateur ne souhaite pas effectuer cette action. Donc, si nous demandons aux utilisateurs de mettre à jour l'application ou d'évaluer l'application sur le Play Store avec Oui (maintenant), nous devons également donner une option pour Non (plus tard, pas maintenant), etc.
rateButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
r.showDefaultDialog();
}
});
où r est une classe contenant la méthode 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();
}
Pour télécharger un exemple complet [androidAone]: http://androidaone.com/11-2014/notify-users-rate-app-playstore/