Skip to content

Latest commit

 

History

History
204 lines (175 loc) · 7.35 KB

README.md

File metadata and controls

204 lines (175 loc) · 7.35 KB

ReviewKit Logo

ReviewKit

Request reviews only from users with enough recent positive activity and only at appropriate times.

Read the Introduction Article to learn how to best use ReviewKit in your app.

Requirements

  • Minimum deployment target iOS 11+, macOS 10.14+
  • Swift 5.8+ (Xcode 14.3+)

Usage

  1. Add ReviewKit to your app using SwiftPM:

    https://github.com/FlineDev/ReviewKit.git
    
  2. (Optional) Adjust the criteria by which app reviews are requested on app start (defaults to 3 positive events & expiration after 14 days):

    import ReviewKit
    // ...
    ReviewKit.criteria = ReviewCriteria(minPositiveEventsWeight: 5, eventsExpireAfterDays: 30)
  3. Determine common workflows in your app and when a user completes one of them, call this:

    ReviewKit.recordPositiveEventAndRequestReviewIfCriteriaMet()
  4. (Optional) Determine other activities that you think are positive experiences for your users. If they are in the middle of workflows, instead of the above call:

    ReviewKit.recordPositiveEvent()  // optionally, you can pass a custom `weight` parameter, defaults to 1
  5. (Optional) Get more reviews from users who tried your app at least once, add this to your app entry point:

    @AppStorage("appStarts")
    var appStarts: Int = 0

    And attach this modifier to your apps' root view:

    .onAppear {
       self.appStarts += 1
    
       if self.appStarts >= 2 {
          ReviewKit.recordPositiveEventAndRequestReviewIfCriteriaMet()
       }
    }

That's it – you have configured App Review requests for your app!

Notes

  • ReviewKit is using Apple's SKStoreReviewController API internally. That API already encapsulates some logic to make sure not to ask users too often.
  • That logic is turned off in DEBUG mode, so you might want to set ReviewKit.enabledInDebugBuilds = false once you've tested that everything works.
  • There's also a function requestReviewIfCriteriaMet() that does not record a positive event in case you need that.

Showcase

I extracted this library from my following Indie apps (rate them with 5 stars to support me!):

App Icon App Name & Description Supported Platforms
TranslateKit: App Localizer
Simple drag & drop translation of String Catalog files with support for multiple translation services & smart correctness checks.
Mac
Pleydia Organizer: Movie & Series Renamer
Simple, fast, and smart media management for your Movie, TV Show and Anime collection.
Mac
FreemiumKit: In-App Purchases
Simple In-App Purchases and Subscriptions for Apple Platforms: Automation, Paywalls, A/B Testing, Live Notifications, PPP, and more.
iPhone, iPad, Mac, Vision
FreelanceKit: Time Tracking
Simple & affordable time tracking with a native experience for all  devices. iCloud sync & CSV export included.
iPhone, iPad, Mac, Vision
CrossCraft: Custom Crosswords
Create themed & personalized crosswords. Solve them yourself or share them to challenge others.
iPhone, iPad, Mac, Vision
FocusBeats: Pomodoro + Music
Deep Focus with proven Pomodoro method & select Apple Music playlists & themes. Automatically pauses music during breaks.
iPhone, iPad, Mac, Vision
Guided Guest Mode
Showcase Apple Vision Pro effortlessly to friends & family. Customizable, easy-to-use guides for everyone!
Vision
Posters: Discover Movies at Home
Auto-updating & interactive posters for your home with trailers, showtimes, and links to streaming services.
Vision