Purchases from iOS In-App Messages

How to implement in-app purchases from Rich Media displayed to iOS app users

To let your users make purchases right from the in-app messages displayed in your iOS app, you can implement the out-of-the-box solution for your Rich Medias and add callbacks to get more info about in-app purchases.

Available for the 6.4.5 iOS SDK version and further.

Rich Media JavaScript implementation

To implement in-app purchases in your Rich Medias, use a simple JavaScript function call:

pushwooshImpl.makePurchaseWithIdentifier("Premium"); // product identifier specified in your App Store product information

AppDelegate methods for callbacks

If you need callbacks to be executed on a purchase, implement the PWPurchaseDelegate protocol as follows:

1. Make your project’s AppDelegate conform to the PWPurchaseDelegate protocol:

@interface AppDelegate : PWAppDelegate <PushNotificationDelegate, PWPurchaseDelegate>

2. Implement methods of PWPurchaseDelegate in your AppDelegate:

#pragma mark - Purchase delegate methods
- (void) onPWInAppPurchaseHelperPaymentComplete:(NSString*) identifier {
    NSLog(@“Custom purchase delegate -- payment complete for identifier: %@“, identifier);
}
-(void)onPWInAppPurchaseHelperProducts:(NSArray<SKProduct *>* _Nullable)products {
    NSLog(@“Custom purchase delegate -- retrieved list of products”);
}
-(void)onPWInAppPurchaseHelperPaymentFailedProductIdentifier:(NSString* _Nullable)identifier error:(NSError* _Nullable)error {
    NSLog(@“Custom purchase delegate -- payment failed with identifier %@ and error %@“, identifier, error.description);
}

List of available PWPurchaseDelegate methods

List of products

@protocol PWPurchaseDelegate <NSObject>
// Detailed information about list of products in your app 
-(void)onPWInAppPurchaseHelperProducts:(NSArray<SKProduct *>* _Nullable)products;
@end

Successful transaction

@protocol PWPurchaseDelegate <NSObject>
// A successfully processed transaction 
-(void)onPWInAppPurchaseHelperPaymentComplete:(NSString* _Nullable)identifier;
@end

Failed transaction

@protocol PWPurchaseDelegate <NSObject>
// A failed transaction 
-(void)onPWInAppPurchaseHelperPaymentFailedProductIdentifier:(NSString* _Nullable)identifier error:(NSError* _Nullable)error;
@end
@protocol PWPurchaseDelegate <NSObject>
// An in-app purchase is initiated from the App Store, and the transaction continues in your app.
-(void)onPWInAppPurchaseHelperCallPromotedPurchase:(NSString* _Nullable)identifier;
@end

Failed restoring completed transactions

@protocol PWPurchaseDelegate <NSObject>
// An error occurred while restoring transactions
-(void)onPWInAppPurchaseHelperRestoreCompletedTransactionsFailed:(NSError * _Nullable)error;
@end

If your needs are not covered with the methods specified in this guide, please reach out to our Customer Support team, and we’ll be happy to provide you with further guidance.

Last updated

#1600: moved in-app statistics to in-apps, added a link to statistics

Change request updated