expo-marigold
v1.0.0
Published
Expo Module which wraps the Marigold SDKs for use in React Native apps
Maintainers
Readme
Expo Marigold (Sailthru)
This is a custom Expo Module + Config Plugin which wraps the Marigold SDK and enables the iOS and Android apps to use react-native-marigold.
[!NOTE] Sailthru was acquired by Marigold and is in the midst of rebranding.
App Delegate Subscriber (iOS)
The iOS portion of the module includes an ExpoMarigoldDelegate. This is an ExpoAppDelegateSubscriber subclass which allows us to hook into application(_:didFinishLaunchingWithOptions:).
A bridging header is required expose the Marigold SDK from Objective C to Swift. This allows us to then call the startEngine() method on app launch.
- see https://docs.expo.dev/modules/appdelegate-subscribers/
- see https://sdkdevelopers.meetmarigold.com/docs/ios-integration
Application Lifecycle Subscriber (Android)
The Android portion of the modules includes ExpoMarigoldPackage + ExpoMarigoldApplicationLifecycleListener. The latter inherits from Expo's built-in ApplicationLifecycleListener, and allows us to hook into the Application's onCreate().
As with iOS, this means we can then call startEngine() on app launch.
- see https://docs.expo.dev/modules/android-lifecycle-listeners/
- see https://sdkdevelopers.meetmarigold.com/docs/android-integration
Plugin
The Plugin adds the appKey for the Marigold SDK to Info.plist on iOS and the AndroidManifest.xml on Android.
On Android, we additionally use some of the transforms from expo/config-plugins to modify /android/settings.gradle and /android/app/build.gradle so we can add the maven repo for the Marigold SDK dependency.
Usage
Can be included alongside any other Expo Config Plugins:
"plugins": [
// ...other plugins...
[
"expo-marigold",
{
"appKey": process.env.SAILTHRU_API_KEY
}
],
]For JavaScript usage, import and call methods from react-native-marigold as usual:
import { EngageBySailthru } from 'react-native-marigold';
export function setSailthruEmail() {
EngageBySailthru.setUserEmail('[email protected]');
}see the upstream TurboModule spec for other available methods.
