Monday, July 21, 2014

Unity 3D: How to Let a User Rate Your Google Play Store App

Ratings in the Google Play Store can make or break your app. It's critical to allow users to easily provide feedback. Since it is so easy to open a link to your game's page on Google Play, we're going to go a little further and talk about best practices and provide some implementation suggestions.

If you just want the code, here it is:

Application.OpenURL("market://details?id=com.RnRVertigo/");

Now, you'll want to replace my package name (I can do some promotion on my own blog, right?) with yours. So where I'm using "com.RnRVertigo", you would enter your full package name, which can be found in your manifest file or in the Developer Console, at the top of the page, next to your game's name. It will generally have a format like "com.gameName" or "com.companyName.gameName".

All our code is doing is opening a URL to our Google Play Store page. The user can rate it from there. Notice that we're not using the typical "http:\\" or "https:\\" prefix; we're using "market:\\". On Android, this will open this link directly in Google Play. We could also do this:

Application.OpenURL("http://play.google.com/store/apps/details?id=com.RnRVertigo");

This will simply open the Google Play link in a web page, and if they haven't set a default to handle Google Play requests, prompt the user if they'd like to use the browser or the Google Play app. You may have use for this, but I generally avoid it because it potentially adds another step to the user's process, and I always shoot for simplicity. If you'd like some more details on Google's product linking policy, check out their page.

Before we go any further, you should know that Google Play explicitly prohibits us from attempting to manipulate our ratings with incentives, blackmail, etc. From the Google Play Developer Program Policies, pay specific attention to this line:

"Developers must not attempt to change the placement of any Product in the Store, or manipulate any product ratings or reviews by unauthorized means such as fraudulent installs, paid or fake reviews or ratings, or by offering incentives to rate products. "

So, it's perfectly fine to ask, "Would you like to rate this app?" or "Please rate us 5 stars!" while it is against policy to say something like "Rate us 5 stars for a free gem!" or "Give us 5 stars to continue playing!" Yes, I know you've seen very popular games that do it. Just don't. While it's highly unlikely that your app would be pulled from the store, it becomes far less likely that Google would be willing to feature your app or involve you in potentially valuable promotions. Also, it's very off-putting for users, and keeping them happy is the goal, right?

There are an infinite number of ways to implement this, but in general, we should try to be as unobtrusive and respectful of the player as possible. Of course we should stick to the Google Play Developer Program Policies, but here are some guidelines I also follow for myself:

Let the user play for a while before rating. This is kind of obvious, but why should they rate a game they've barely played? Pick a point in the game (i.e., after a particular level or number of rounds) where you feel the user has played enough to form an opinion on the game. I avoid going time-based (i.e., two days after installation) because plenty of people will install a game and not play it for days, weeks, or even months.

Make declining to rate just as simple as choosing to rate. A simple window that says something like "Please rate our app!" with buttons reading "Sure!" and "No thanks!" is sufficient. Keep it simple and uncluttered, and remember to close the pop-up when they click either button -- when they come back to your app, you don't want them to have to close it manually. Adding options like "Don't ask again" is one of those small barriers to play that can add up and turn people off to a game, which brings me to my last point ...

Only ask once. If they went on to rate it, we don't need to ask again. If they don't want to rate it now, they probably don't ever want to. Nagging players to rate your app is a great way to get them to give you a low rating just because you're irritating them.

The bottom line is, do what is best for the player and you can't go wrong!

10 comments:

  1. You totally rule!

    ReplyDelete
    Replies
    1. Thanks! Also, if you're interested, I put up a tutorial on NGUI pop-up windows that complements this pretty nicely.

      http://unity3dtrenches.blogspot.com/2014/07/unity-3d-how-to-create-simple-pop-up.html

      Delete
  2. How can we now if the user rated it or not. A user is now on the page cuz he click to rate the app and redirected to app url, but a user can still change their mind even if they are on the page to rate it or not.

    ReplyDelete
    Replies
    1. Exactly. Isn't this correct? What if the user clicks "Sure!" and returns to the app without rating? How can we check whether the user has rated or not?

      Delete
    2. You can't. Google does not allow you to check if a user has rated your app or what that rating is. This is because they don't allow you to reward or punish your users based on their rating or lack thereof. The most you can do is trust that when they say they rate it, they will.

      Delete
  3. It doesn't work with trailing slash ("/" in the end) on my android devices, but it works without slash like that "Application.OpenURL("market://details?id=com.RnRVertigo");". Please, fix it, it will help others to save time. Also here is official manual http://developer.android.com/intl/ru/distribute/tools/promote/linking.html

    ReplyDelete
  4. Thanks so much for this info! I didn't know about the "market" part for the URL.

    ReplyDelete
  5. These ways are very simple and very much useful, as a beginner level these helped me a lot thanks fore sharing these kinds of useful and knowledgeable information.
    ios App Development Company
    mobile App Development Company

    ReplyDelete