Page updated Jan 16, 2024

Integrate your application

In your application directory, you should first install the necessary dependencies for using In-App Messaging.

1npm install aws-amplify

Initialize In-App Messaging

To finish setting up your application with Amplify, you need to configure it using the configure API. Next, to interact with In-App Messaging APIs, you need to first initialize In-App Messaging by calling the initializeInAppMessaging API directly imported from the in-app-messaging sub-path. This is required to be called as early as possible in the app lifecycle.

1import { Amplify } from 'aws-amplify';
2import amplifyconfig from './amplifyconfiguration.json';
3import { initializeInAppMessaging } from 'aws-amplify/in-app-messaging';
4
5Amplify.configure(amplifyconfig);
6initializeInAppMessaging();

Make sure you call Amplify.configure as early as possible in your application’s life-cycle. A missing configuration or NoCredentials error is thrown if Amplify.configure has not been called before other Amplify JavaScript APIs. Review the Library Not Configured Troubleshooting guide for possible causes of this issue.

Install the Amplify React Native Package and other dependencies

Installing the @aws-amplify/react-native will bring in the necessary polyfills.

Instructions for React Native version 0.72 and below

@aws-amplify/react-native requires a minimum iOS deployment target of 13.0 if you are using react-native version less than or equal to 0.72. Open the Podfile located in the ios directory and update the target value:

1- platform :ios, min_ios_version_supported
2 + platform :ios, 13.0
1npm install @aws-amplify/react-native @react-native-community/netinfo @react-native-async-storage/async-storage

Install Amplify UI for React Native and its dependencies

Although Amplify In-App Messaging can be used as a standalone JavaScript library, this guide will show you how to use it together with Amplify UI which currently supports integration with React and React Native to get started quickly.

Learn more about Amplify In-App Messaging UI and how to fully unlock its capabilities here: Amplify UI for In-App Messaging

1npm install @aws-amplify/ui-react-native react-native-safe-area-context

Integrate Amplify UI

Amplify UI provides a Higher-Order Component for ease of integrating the In-App Messaging UI with your application. Simply wrap your application root component in, for example, App.js.

1import { withInAppMessaging } from '@aws-amplify/ui-react-native';
2
3const App = () => (
4 {/* Your application */}
5);
6
7export default withInAppMessaging(App);

Below is an example of what your entry file should look like:

1import React, { useEffect } from 'react';
2import { Button, View } from 'react-native';
3import {
4 initializeInAppMessaging,
5 syncMessages,
6 dispatchEvent
7} from 'aws-amplify/in-app-messaging';
8import { withInAppMessaging } from '@aws-amplify/ui-react-native';
9import { record } from 'aws-amplify/analytics';
10import amplifyconfig from './amplifyconfiguration.json';
11
12Amplify.configure(amplifyconfig);
13initializeInAppMessaging();
14
15// To display your in-app message, make sure this event name matches one you created
16// in an In-App Messaging campaign!
17const myFirstEvent = { name: 'my_first_event' };
18
19const App = () => {
20 useEffect(() => {
21 // Messages from your campaigns need to be synced from the backend before they
22 // can be displayed. You can trigger this anywhere in your app. Here you are
23 // syncing just once when this component (your app) renders for the first time.
24 syncMessages();
25 }, []);
26
27 return (
28 <View>
29 {/* This button has an example of an analytics event triggering the in-app message. */}
30 <Button
31 onPress={() => {
32 record(myFirstEvent);
33 }}
34 title="Record Analytics Event"
35 />
36
37 {/* This button has an example of an In-app Messaging event triggering the in-app message.*/}
38 <Button
39 onPress={() => {
40 dispatchEvent(myFirstEvent);
41 }}
42 title="Send In-App Messaging Event"
43 />
44 </View>
45 );
46};
47
48export default withInAppMessaging(App);

You can now build and run your app in your terminal. If you click on one of the buttons shown in the above example, the in-app message you defined in the Pinpoint console should be displayed in your app.