I've implemented the native review prompt using this code
if (@available(iOS 10.3, *)) {
[SKStoreReviewController requestReview];
resolve(@YES);
}
But it's not showing in debug on a real iPhone X on iOS 14.4. I'm seeing this error in the device's log (in the general console not Xcode):
No "UIViewServicePermittedViewControllerClasses" array in View Service bundle "com.apple.ios.StoreKitUIService"'s Info.plist. Cannot check validity of request for class "ServiceReviewViewController". This will become failure in a future build.
It's showing perfectly fine on an iPhone 6 on iOS 12.5. (the Submit button is greyed out).
I noticed that requestReview
is deprecated since iOS 14 so I tried to use the new method passing a Scene:
if (@available(iOS 14.0, *)) {
[SKStoreReviewController requestReviewInScene:[UIApplication.sharedApplication.connectedScenes allObjects][0]];
} else if (@available(iOS 10.3, *)) {
[SKStoreReviewController requestReview];
}
With the exact same error in the device's logs.
I made sure that [UIApplication.sharedApplication.connectedScenes allObjects][0]
was not nil.
Has anyone seen this issue before?
After a couple of days of investigation, we finally found that the review prompt is showing if we remove a modal window we're showing as a splash screen while some resources are loaded.
That seems to be tripping Storekit's logic to show the prompt on the visible window.
UPDATE
Seems like the culprit was this particular line:
window.windowLevel = modalWindow.windowLevel + 1
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With