メインコンテンツまでスキップ

React Native SDK Integration (Shoppable Ads)

This guide covers how to integrate Shoppable Ads into your React Native app using SDK+. Shoppable Ads enable post-purchase upsell offers with in-app catalog browsing and instant checkout (via Apple Pay or Stripe) — all within the Rokt placement.

For the general Rokt React Native SDK reference, see the React Native SDK Integration Guide.

注記

If you are using the Direct Rokt SDK (@rokt/react-native-sdk), see the React Native SDK Integration (Legacy) guide instead.

注記

Shoppable Ads in React Native are currently supported on iOS only. Android support is planned for a future release.

PrerequisitesPrerequisites への直接リンク

  • iOS 15.0+ deployment target
  • react-native-mparticle 3.x (SDK+)
  • mParticle-Rokt 9.x CocoaPods pod (in ios/Podfile)
  • RoktStripePaymentExtension CocoaPods pod (required for Apple Pay / Stripe payment processing)
  • A Rokt account with Shoppable Ads enabled — contact your Rokt account manager

Step 1: Install dependenciesStep 1: Install dependencies への直接リンク

React NativeReact Native への直接リンク

npm install react-native-mparticle --save

iOS native (Podfile)iOS native (Podfile) への直接リンク

Add the following pods to your ios/Podfile:

ios/Podfile
pod 'mParticle-Rokt', '~> 9.0'
pod 'RoktStripePaymentExtension', '~> 1.0'

Because the Rokt iOS SDK contains Swift code, you need to ensure it is built as a dynamic framework. Add the following pre_install block to your Podfile:

ios/Podfile
pre_install do |installer|
installer.pod_targets.each do |pod|
if pod.name == 'mParticle-Apple-SDK' || pod.name == 'mParticle-Rokt' || pod.name == 'Rokt-Widget'
def pod.build_type;
Pod::BuildType.new(:linkage => :dynamic, :packaging => :framework)
end
end
end
end

Then install the pods:

cd ios && bundle exec pod install

Step 2: Initialize the SDKStep 2: Initialize the SDK への直接リンク

SDK initialization is the same as for standard placements. See the React Native SDK Integration Guide — Step 1.

Step 3: Configure Apple PayStep 3: Configure Apple Pay への直接リンク

Before registering a payment extension, you need to create an Apple Pay merchant ID, configure your Xcode project, and generate a Payment Processing Certificate.

Follow the steps in Apple Pay — iOS setup, then return here to register the payment extension.

Step 4: Register a payment extensionStep 4: Register a payment extension への直接リンク

After configuring Apple Pay, register a payment extension in your native iOS code (AppDelegate). This enables Apple Pay and Stripe payment processing within the placement.

ios/YourApp/AppDelegate.swift
import mParticle_Apple_SDK
import RoktStripePaymentExtension

// In application(_:didFinishLaunchingWithOptions:), after MParticle.sharedInstance().start(with: options)
if let stripeExt = RoktStripePaymentExtension(applePayMerchantId: "merchant.com.yourapp.rokt") {
MParticle.sharedInstance().rokt.registerPaymentExtension(stripeExt)
}
注記

The Stripe publishable key is automatically provided from the mParticle dashboard configuration. You only need to provide the Apple Pay merchant ID.

注意

You must call registerPaymentExtension after SDK initialization (Step 2) and before calling selectShoppableAds (Step 5) from your React Native code. If no payment extension is registered, selectShoppableAds will fire a PlacementFailure event.

Step 5: Display Shoppable AdsStep 5: Display Shoppable Ads への直接リンク

Shoppable Ads always display as an overlay — no embedded views or placeholders are needed.

Call selectShoppableAds from your React Native code once all required attributes are available:

import MParticle from 'react-native-mparticle';

const attributes = {
email: 'j.smith@example.com',
first_name: 'Jane',
last_name: 'Smith',
confirmationref: 'ORD-8829-XK2',
amount: '52.25',
currency: 'USD',
payment_type: 'visa',
shipping_address1: '123 Main St',
shipping_city: 'Brooklyn',
shipping_state: 'NY',
shipping_zipcode: '11201',
shipping_country: 'US',
};

MParticle.Rokt.selectShoppableAds('ConfirmationPage', attributes);

Step 6: Handle eventsStep 6: Handle events への直接リンク

Shoppable Ads emit the following events in addition to the standard placement events. Subscribe to events using the NativeEventEmitter mechanism:

import { NativeEventEmitter } from 'react-native';
import MParticle from 'react-native-mparticle';

const emitter = new NativeEventEmitter(MParticle.RoktEventManager);

emitter.addListener('RoktEvents', (data) => {
switch (data.event) {
case 'CartItemInstantPurchaseInitiated':
console.log(`Purchase started: ${data.catalogItemId}`);
break;
case 'CartItemInstantPurchase':
console.log(`Purchase completed: ${data.catalogItemId}${data.totalPrice} ${data.currency}`);
break;
case 'CartItemInstantPurchaseFailure':
console.log(`Purchase failed: ${data.error}`);
break;
case 'CartItemDevicePay':
console.log(`Device payment triggered: ${data.paymentProvider}`);
break;
case 'InstantPurchaseDismissal':
console.log('User dismissed purchase');
break;
case 'PlacementClosed':
console.log('Shoppable Ads placement closed');
break;
default:
break;
}
});

Shoppable Ads eventsShoppable Ads events への直接リンク

EventDescriptionProperties
CartItemInstantPurchaseInitiatedPurchase flow started — user tapped "Buy"placementId, catalogItemId, cartItemId
CartItemInstantPurchasePurchase completed successfullyplacementId, name, cartItemId, catalogItemId, currency, description, linkedProductId, providerData, quantity, totalPrice, unitPrice
CartItemInstantPurchaseFailurePurchase failedplacementId, catalogItemId, cartItemId, error
CartItemDevicePayApple Pay / device payment triggeredplacementId, catalogItemId, cartItemId, paymentProvider
InstantPurchaseDismissalUser dismissed the purchase overlayplacementId

The following attributes are particularly important for Shoppable Ads:

AttributeTypeRequiredDescription
emailstringYesCustomer email (unhashed). Used for order confirmation.
confirmationrefstringYesOrder or transaction reference number.
amountstringRecommendedDecimal transaction amount (e.g., "52.25").
currencystringRecommendedISO 4217 currency code (e.g., "USD").
payment_typestringRecommendedPayment method used for the primary purchase (e.g., "visa", "apple_pay"). Used for payment method prioritization.
shipping_address1stringRecommendedShipping street address.
shipping_citystringRecommendedShipping city.
shipping_statestringRecommendedShipping state or province.
shipping_zipcodestringRecommendedShipping postal code.
shipping_countrystringRecommendedISO Alpha-2 country code (e.g., "US").

For the full list of supported attributes, see the recommended attributes table.

注記

If your platform does not have shipping address details (e.g., ticket or digital goods purchases), pass billing address details instead. Rokt will provide a UI for the customer to confirm or edit their shipping address before completing the purchase.

Payment methodsPayment methods への直接リンク

For detailed setup of individual payment methods, see:

  • Apple Pay — Native Apple Pay within the Rokt placement
  • Card Forwarding — Reuse the customer's vaulted card from the primary purchase
この記事は役に立ちましたか?