@leciseau/react-native-emarsys
Version:
A simple bridge between emarsys sdk and react-native
125 lines (100 loc) • 2.66 kB
Markdown
# @leciseau/react-native-emarsys
## 1. Install the React Native Emarsys plugin
`$ npm install @leciseau/react-native-emarsys --save`
OR
`$ yarn add @leciseau/react-native-emarsys`
## 2 Install the native SDK
#### iOS (Cocoapods)
1. Go to `/ios`
2. If you don't have a Podfile yet run `pod init`
3. Run `pod install`
4. You should now open your project with the `.xcworkspace` instead of the `.xcodeproj`
#### Android (Gradle)
1. Go to `src/app/build.gradle`
2. In `dependencies` add
```gradle
dependencies {
...
implementation 'com.emarsys:emarsys-sdk:3.1.0'
...
}
```
## 3 Init SDK
#### iOS
1. Go to `AppDelegate.m`
2. Add
```objective-c
...
#import "EMSConfig.h"
#import "Emarsys.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
...
EMSConfig *config = [EMSConfig makeWithBuilder:^(EMSConfigBuilder *builder) {
[builder setMobileEngageApplicationCode:<applicationCode: NSString>];
[builder setMerchantId:<predictMerchantId: NSString>];
[builder enableConsoleLogLevels:@[<EMSLogLevel.trace, EMSLogLevel.debug, EMSLogLevel.info, EMSLogLevel.warn, EMSLogLevel.error, EMSLogLevel.basic>]];
}];
[Emarsys setupWithConfig:config];
...
}
```
#### Android
1. You should target api 24 as your min SDK in `android/build.gralde`
2. Update
```gradle
minSdkVersion = 24 <--- there
compileSdkVersion = 29
targetSdkVersion = 29
```
3. Go to `MainApplication.java`
4. Add
```java
...
import com.emarsys.Emarsys;
import com.emarsys.config.EmarsysConfig;
@Override
public void onCreate() {
super.onCreate();
...
EmarsysConfig config = new EmarsysConfig.Builder()
.application(this)
.applicationCode(<applicationCode:String?>)
.merchantId(<merchantId:String?>)
.build();
Emarsys.setup(config);
}
```
## Usage
```javascript
import RNEmarsys from '@leciseau/react-native-emarsys';
// or
import {
trackCustomEvent,
trackTag,
setContact,
clearContact,
trackCart,
trackPurchase,
trackItemView,
trackCategoryView,
trackSearchTerm,
} from '@leciseau/react-native-emarsys';
RNEmarsys.trackCustomEvent('myEvent', { toto: "titi" });
RNEmarsys.trackTag('myTag', { toto: "titi" });
RNEmarsys.setContact(contactFieldId, 'userId');
RNEmarsys.clearContact();
RNEmarsys.trackCart([{
item: 'myItem',
quantity: '1',
price: '12.34',
}]);
RNEmarsys.trackPurchase('idPurchase', [{
item: 'myItem',
quantity: '1',
price: '12.34',
}]);
RNEmarsys.trackItemView('myItemId');
RNEmarsys.trackCategoryView('myCategoryPath');
RNEmarsys.trackSearchTerm('mySearchTerm');
```