Skip to main content

[iOS] [StoreKit] SKStoreReviewController - In-app Ratings & Reviews


After developing an application, the most important task
  • Getting feedback from the users
  • App promotion and encourage other users to use the app
This both can be achieved by increasing the users comment on the app store by prompting the user to rate the app after a few days of usage(We don't want to frustrate users with continuous pop-ups)

Previously, there were many libraries such as iRate, etc. 
This requires users to leave the application and going to the app-store page of the application to rate/post review for the application. So most of the times user avoid this kind of pop-ups and used to dismiss it as soon as it appears. Ultimately this hits the app's ratings and reviews count.

But now Apple has itself come to rescue by introducing SKStoreReviewController. By introducing SKStoreReviewController, Apple has made the rating process very easy. And to our surprise, all this happens in-app. So user can straight away rate and post comments if he wants to straight away from the app itself.

By just a few steps the user can rate/post a review for the application. 
  1. import StoreKit
  2. Check if the version is 10.3 and above
  3. Call SKStoreReviewController.requestReview()
And that's it, very simple, isn't it? 

Points to remember,
  • Developers should avoid creating custom pop-ups, instead use SKStoreReviewController as per Apples HIG documents
  • There is no way to customize the rating pop up, also there is no callback to detect what user have clicked on rating pop up
  • Don't call the requestReview() immediately at the launch. Also, it shouldn't be called if it interrupts some user action. 
  • Always call requestReview() once the user performs some positive actions. This will increase the chance of getting positive reviews
  • Keep some track of user actions, once it is achieved request for ratings by calling the API
  • Even if you call the requestReview(), it doesn't guarantee that pop up will be displayed straight away, iOS maintains its internal logic whether to display the rating pop up or not
  • No matter how many times you call the API, the system will only show up to a maximum of 3 prompts to the same user in a 365-day period
  • The App store defaults to showing ratings and reviews only for your app's most recent version
  • In case of development build, requesting a review will always show the review user interface, but you can't submit an actual review
  • In the case of TestFlight, requesting a review will do nothing. So don't panic. In production, it would use Apple's internal logic to show the dialog whenever it is suitable
  • Apple has developed this functionality by keeping users in mind, In-app, ratings can be disabled by the user from the Device Settings option ( Settings->iTunes & App Store-> In-App Ratings & Reviews toggle). If the user has turned off this the rating pop up will never be shown to the user.

Manually requesting a review

A developer can add an option to his app settings to ask for ratings/reviews.
This will deep link the user to app's "App Store" page. This can be achieved by the below process,


@IBAction func requestReviewManually() {
    // Note: Replace the XXXXXXXXXX below with the App Store ID for your app
    //       You can find the App Store ID in your app's product URL
    guard let writeReviewURL = URL(string: "https://itunes.apple.com/app/idXXXXXXXXXX?action=write-review")
        else { fatalError("Expected a valid URL") }
    UIApplication.shared.open(writeReviewURL, options: [:], completionHandler: nil)
}

That's it. Hope this is helpful to everyone out there!

Please post comments in case of any queries. Thank you!!

Comments

Popular posts from this blog

[Roku Development] Debugging Roku Code - Visual Studio Code

For ease of debug instead of terminal we will use Visual Studio Code for Roku Channel development. Visual Studio Code download link is mentioned below https://code.visualstudio.com Once IDE is downloaded, we need to install extenstion for Roku Development available in VSC known as " BrightScript Language" Step 1: Install BrightScript Language Extension Once package is installed, open the project which you need to work upon Step 2: Open Roku Channel Project After opening the project goto Run and Debug option, since this is the first time we are opening this project we need to setup the environment. In this case we need to click on create a launch.json file Step 3: Setup launch.json file Once we click on create launch.json file, it will ask for which environment we want to setup the Run and Debug option. Here we need to choose BrightScript Debug option .  Note that, BrightScript Debug option will be available under only if BrightScript Language extension is installed Step 4: En

[iOS] Updating iOS 16 Beta

Apple has recently announced iOS 16 in WWDC - 2022. Currently Beta versions are made available to the public for download. Most of us must be curious to get this version on their personal devices.  Previously downloading beta versions on personal devices was hectic process and requires lots of efforts to upgrade devices to latest beta versions. Now Apple has came up to update iOS devices with very simple process. With this Apple is trying to get the first hand reviews from the users before actually releasing the iOS version in the market. 1. To get the latest version of beta for iOS/iPadOS, please register yourself at the below mentioned portal with the help of Apple ID -  https://beta.apple.com/sp/betaprogram/  2. After registering login to the beta program portal and navigate to "Enroll Your Devices"  3. Download profile  4. Install the downloaded profile 5. Once profile is installed successfully, goto Settings -> General -> Software update. There you will find the be

[iOS] SwiftLint - Linter for Swift

What and Why SwiftLint??? Linter is a specialized tool that analyses our source code and helps us to find errors, bug and indentation issues. As the name suggests  SwiftLint helps us to enforce the coding styles on the swift code and makes us follow its rules and conventions. SwiftLint is an open source project and is maintained by Realm team. There are many  rules  which are defined in SwiftLint. These rules are applied to our code. If any of the compulsory rules are broken SwiftLint will either generate a warning(if not critical) or build will fail(in case of critical). This way developer has to strictly follow the rules before making any pull request and code being merged to the main codebase. This will help us in many ways. In a codebase where many developers are working from junior to senior level, there will be uniformity in writing the code and style. So codebase will be consistent and uniformed throughout. Also, the codebase will be easy to maintain and debug. The more mai