Features

Requesting App Reviews in `ShipThatApp`

Overview

ShipThatApp optimizes the App Store review request process to align with Apple's guidelines and best practices. The app thoughtfully prompts users for reviews, creating opportunities for feedback that can enhance the app's reputation and visibility on the App Store.

Implementation and Strategy

Review Request Timing

The timing of review requests is carefully managed to avoid disrupting the user experience:

  • The app does not prompt for a review immediately upon launch or in response to user actions.
  • Reviews are requested following positive interactions, such as completed tasks within the app.

Review Request Criteria

ShipThatApp imposes the following criteria before displaying a review request:

Version Check

Each app version can only prompt a review request once, avoiding repeated requests after app updates.

User Engagement

Review requests are based on user engagement, such as successfully completing specific processes within the app multiple times.

Non-Intrusive Prompt

A slight delay is introduced to ensure the review request is presented at an appropriate time.

Process and Review Presentation

Incrementing User Interaction Count

Each significant interaction is counted and can trigger a review request upon reaching a specific threshold:

private func incrementProcessCount() {
    count += 1
    let currentVersion = Bundle.main.object(forInfoDictionaryKey: kCFBundleVersionKey as String) as? String ?? ""

    if count >= MIN_APP_RUNS_BEFORE_REVIEW_REQ && currentVersion != lastVersionPromptedForReview {
        requestReviewAfterDelay(for: currentVersion)
    }
}

Delayed Review Request Execution

The review request is delayed to mitigate user interruption and is executed with the following method:

private func requestReviewAfterDelay(for version: String) {
    Task {
        try await Task.sleep(for: .seconds(2))
        await requestReview()

        lastVersionPromptedForReview = version
        TelemetryManager.send("reviewRequested", with: ["version": version])
    }
}
  • A two-second delay is employed to provide a buffer after user activity completion.
  • The lastVersionPromptedForReview is updated to ensure one prompt per version, in accordance with Apple's policy of maximum three prompts within a 365-day span.

Analytics Integration

Analytics events are sent to track the review request occurrences, providing insights into user interaction and the effectiveness of the review prompts.

Review Prompt Presentation

To present the review prompt, ShipThatApp reads the requestReview environment value and invokes it, abiding by the conditions to delay the call:

@Environment(\.requestReview) private var requestReview

Best Practices and User Experience

ShipThatApp incorporates Apple's Human Interface Guidelines best practices for requesting reviews. The strategy aims to enhance user experience by considering when people are more likely to engage positively, providing better feedback while allowing users to choose whether or not to leave a review.

Conclusion

By integrating a considerate review request system, ShipThatApp respects user experience and encourages valuable feedback, adhering to Apple's guidelines. Such an approach increases the likelihood of obtaining constructive reviews from users who are more engaged and familiar with the app.

Previous
Analytics