AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK.
Custom App Store review prompt
Once you implement this prompt, Braze stops automatically tracking impressions, and you must log your own analytics.
Creating a campaign to ask users for an App Store review is a popular usage of in-app messages.
Start by setting the in-app message delegate in your app. Next, implement the following delegate method to disable the default App Store review message:
1
2
3
4
5
6
7
8
- (ABKInAppMessageDisplayChoice)beforeInAppMessageDisplayed:(ABKInAppMessage *)inAppMessage {
if (inAppMessage.extras != nil && inAppMessage.extras[@"Appstore Review"] != nil) {
[[UIApplication sharedApplication] openURL:inAppMessage.uri options:@{} completionHandler:nil];
return ABKDiscardInAppMessage;
} else {
return ABKDisplayInAppMessageNow;
}
}
1
2
3
4
5
6
7
8
func before(inAppMessageDisplayed inAppMessage: ABKInAppMessage) -> ABKInAppMessageDisplayChoice {
if inAppMessage.extras?["Appstore Review"] != nil && inAppMessage.uri != nil {
UIApplication.shared.open(inAppMessage.uri!, options: [:], completionHandler: nil)
return ABKInAppMessageDisplayChoice.discardInAppMessage
} else {
return ABKInAppMessageDisplayChoice.displayInAppMessageNow
}
}
In your deep link handling code, add the following code to process the {YOUR-APP-SCHEME}:appstore-review
deep link. Note that you will need to import StoreKit
to use SKStoreReviewController
:
1
2
3
4
5
6
7
8
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options {
NSString *urlString = url.absoluteString.stringByRemovingPercentEncoding;
if ([urlString isEqualToString:@"{YOUR-APP-SCHEME}:appstore-review"]) {
[SKStoreReviewController requestReview];
return YES;
}
// Other deep link handling code…
}
1
2
3
4
5
6
7
8
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
let urlString = url.absoluteString.removingPercentEncoding
if (urlString == "{YOUR-APP-SCHEME}:appstore-review") {
SKStoreReviewController.requestReview()
return true;
}
// Other deep link handling code…
}
Next, create an in-app messaging campaign with the following:
- The key-value pair
"Appstore Review" : "true"
- The on-click behavior set to “Deep Link Into App”, using the deep link
{YOUR-APP-SCHEME}:appstore-review
.
Apple limits App Store review prompts to a maximum of three (3) times per year for each user, so your campaign should be rate-limited to three times per year per user.
Users may turn off App Store review prompts. As a result, your custom review prompt should not promise that a native App Store review prompt will appear or directly ask for a review.