I've heard that friends don't let friends ship an app without adding a request for reviews. So I added that.
I followed two apple guides—the Human Interface Guidelines and requesting review documentation. I kinda just copied what the docs show—request once per version after at least 4 completed actions, and after the user has paused for 2 seconds.
.onReceive(viewState.$comparison
.debounce(for: 2.0, scheduler: RunLoop.main)
) { _ in
let version = AppInfo.fullVersion
guard viewState.activeSheet == nil
&& viewState.comparison.first == nil
&& viewState.comparison.second == nil
&& version != lastVersionPromptedForReview
&& searchesCompleted > 3 else { return }
requestReview()
lastVersionPromptedForReview = version
}
Here you can see some of the ugly internals of my app. The View I want to request a view on is show based on the state of the current comparison/search. So I debounce that change. Once it has settled for 2 seconds, I check if any sheets are shown, if the search is empty, and if I've already request a review this version. Might be better ways, but I'll give this a shot. I'm not sure if there is a great way to test it...
Next, in the spirit of learning new things, I think I'll try adding some in app purchases. Just a couple small tips that will unlock alternate icons or something.