web-dev-qa-db-fra.com

Approche Android pour "Évaluer mon application"

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?

54
Keith Adler

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();        
    }
}
79
marchica
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);
}
38
Mohd Mufiz

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

8
Kopfgeldjaeger

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.

3
World Engineer

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)));
3
Pir Fahim Shah

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 

0
Mina Fawzy

Je pense que rediriger les utilisateurs vers la page Web de votre application est la seule solution. 

0
Egor

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/

0
vineet