How to implement Rate It feature in Android App

前端 未结 14 1357
囚心锁ツ
囚心锁ツ 2020-12-02 04:19

I am developing an Android App. In which everything is working right. My app is ready to launch. But there I need to implement one more feature. I need to display a popup wh

14条回答
  •  执笔经年
    2020-12-02 04:45

    AndroidRate is a library to help you promote your android app by prompting users to rate the app after using it for a few days.

    Module Gradle:

    dependencies {
      implementation 'com.vorlonsoft:androidrate:1.0.8'
    }
    

    MainActivity.java:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
    
      AppRate.with(this)
          .setStoreType(StoreType.GOOGLEPLAY) //default is GOOGLEPLAY (Google Play), other options are
                                              //           AMAZON (Amazon Appstore) and
                                              //           SAMSUNG (Samsung Galaxy Apps)
          .setInstallDays((byte) 0) // default 10, 0 means install day
          .setLaunchTimes((byte) 3) // default 10
          .setRemindInterval((byte) 2) // default 1
          .setRemindLaunchTimes((byte) 2) // default 1 (each launch)
          .setShowLaterButton(true) // default true
          .setDebug(false) // default false
          //Java 8+: .setOnClickButtonListener(which -> Log.d(MainActivity.class.getName(), Byte.toString(which)))
          .setOnClickButtonListener(new OnClickButtonListener() { // callback listener.
              @Override
              public void onClickButton(byte which) {
                  Log.d(MainActivity.class.getName(), Byte.toString(which));
              }
          })
          .monitor();
    
      if (AppRate.with(this).getStoreType() == StoreType.GOOGLEPLAY) {
          //Check that Google Play is available
          if (GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(this) != ConnectionResult.SERVICE_MISSING) {
              // Show a dialog if meets conditions
              AppRate.showRateDialogIfMeetsConditions(this);
          }
      } else {
          // Show a dialog if meets conditions
          AppRate.showRateDialogIfMeetsConditions(this);
      }
    }
    

    The default conditions to show rate dialog is as below:

    1. App is launched more than 10 days later than installation. Change via AppRate#setInstallDays(byte).
    2. App is launched more than 10 times. Change via AppRate#setLaunchTimes(byte).
    3. App is launched more than 1 days after neutral button clicked. Change via AppRate#setRemindInterval(byte).
    4. App is launched X times and X % 1 = 0. Change via AppRate#setRemindLaunchTimes(byte).
    5. App shows neutral dialog (Remind me later) by default. Change via setShowLaterButton(boolean).
    6. To specify the callback when the button is pressed. The same value as the second argument of DialogInterface.OnClickListener#onClick will be passed in the argument of onClickButton.
    7. Setting AppRate#setDebug(boolean) will ensure that the rating request is shown each time the app is launched. This feature is only for development!.

    Optional custom event requirements for showing dialog

    You can add additional optional requirements for showing dialog. Each requirement can be added/referenced as a unique string. You can set a minimum count for each such event (for e.g. "action_performed" 3 times, "button_clicked" 5 times, etc.)

    AppRate.with(this).setMinimumEventCount(String, short);
    AppRate.with(this).incrementEventCount(String);
    AppRate.with(this).setEventCountValue(String, short);
    

    Clear show dialog flag

    When you want to show the dialog again, call AppRate#clearAgreeShowDialog().

    AppRate.with(this).clearAgreeShowDialog();
    

    When the button presses on

    call AppRate#showRateDialog(Activity).

    AppRate.with(this).showRateDialog(this);
    

    Set custom view

    call AppRate#setView(View).

    LayoutInflater inflater = (LayoutInflater)this.getSystemService(LAYOUT_INFLATER_SERVICE);
    View view = inflater.inflate(R.layout.custom_dialog, (ViewGroup)findViewById(R.id.layout_root));
    AppRate.with(this).setView(view).monitor();
    

    Specific theme

    You can use a specific theme to inflate the dialog.

    AppRate.with(this).setThemeResId(int);
    

    Custom dialog

    If you want to use your own dialog labels, override string xml resources on your application.

    
        Rate this app
        If you enjoy playing this app, would you mind taking a moment to rate it? It won\'t take more than a minute. Thanks for your support!
        Rate It Now
        Remind Me Later
        No, Thanks
    
    

    Check that Google Play is available

    if (GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(this) != ConnectionResult.SERVICE_MISSING) {
    
    }
    

提交回复
热议问题