reteno-react-native-sdk 1.0.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -54,6 +54,7 @@ android {
54
54
  }
55
55
 
56
56
  compileOptions {
57
+ coreLibraryDesugaringEnabled true
57
58
  sourceCompatibility JavaVersion.VERSION_1_8
58
59
  targetCompatibility JavaVersion.VERSION_1_8
59
60
  }
@@ -73,9 +74,10 @@ dependencies {
73
74
  //noinspection GradleDynamicVersion
74
75
  implementation "com.facebook.react:react-native"
75
76
  implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
76
- implementation 'com.reteno:fcm:1.4.0'
77
+ implementation 'com.reteno:fcm:1.6.4'
77
78
  implementation "com.google.firebase:firebase-messaging:23.1.0"
78
79
  implementation "com.google.firebase:firebase-messaging-ktx:23.1.0"
80
+ coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.2.2'
79
81
  }
80
82
 
81
83
  if (isNewArchitectureEnabled()) {
@@ -0,0 +1,63 @@
1
+ package com.retenosdk;
2
+
3
+ import com.facebook.react.bridge.ReadableArray;
4
+ import com.facebook.react.bridge.ReadableMap;
5
+ import com.reteno.core.domain.model.event.Event;
6
+ import com.reteno.core.domain.model.event.Parameter;
7
+
8
+ import java.time.ZonedDateTime;
9
+ import java.util.ArrayList;
10
+ import java.util.List;
11
+
12
+ public class RetenoEvent {
13
+ private static List<Parameter> buildEventParameters(ReadableArray inputParameters) {
14
+ int countView = inputParameters.size();
15
+ if (countView == 0) return null;
16
+
17
+ List<Parameter> list = new ArrayList<>();
18
+ for (int i = 0; i < countView; i++) {
19
+ ReadableMap field = inputParameters.getMap(i);
20
+
21
+ String name = null;
22
+ String value = null;
23
+
24
+ if (field.getString("name") != null) {
25
+ name = field.getString("name");
26
+ }
27
+ if (field.getString("value") != null) {
28
+ value = field.getString("value");
29
+ }
30
+
31
+ if (name != null) {
32
+ list.add(new Parameter(name, value));
33
+ }
34
+ }
35
+ return list;
36
+ }
37
+
38
+ public static Event buildEventFromPayload(ReadableMap payload) throws Exception {
39
+ String eventName = RetenoUtil.getStringOrNull(payload.getString("eventName"));
40
+ String stringDate = payload.getString("date");
41
+ ReadableArray inputParameters = payload.getArray("parameters");
42
+
43
+ List<Parameter> parameters = null;
44
+
45
+ ZonedDateTime date;
46
+
47
+ if (eventName == null) {
48
+ throw new Exception("logEvent: missing 'eventName' parameter!");
49
+ }
50
+
51
+ if (stringDate != null) {
52
+ date = ZonedDateTime.parse(stringDate);
53
+ } else {
54
+ date = ZonedDateTime.now();
55
+ }
56
+
57
+ if (inputParameters != null) {
58
+ parameters = buildEventParameters(inputParameters);
59
+ }
60
+
61
+ return new Event.Custom(eventName, date, parameters);
62
+ }
63
+ }
@@ -37,7 +37,6 @@ public class RetenoSdkModule extends ReactContextBaseJavaModule {
37
37
 
38
38
  @ReactMethod
39
39
  public void setDeviceToken(String deviceToken, Promise promise) {
40
- // ((RetenoApplication) this.context.getCurrentActivity().getApplication()).getRetenoInstance();
41
40
  }
42
41
 
43
42
  @ReactMethod
@@ -126,4 +125,20 @@ public class RetenoSdkModule extends ReactContextBaseJavaModule {
126
125
  }
127
126
  promise.resolve(parseIntent(activity.getIntent()));
128
127
  }
128
+
129
+ @ReactMethod
130
+ public void logEvent(ReadableMap payload, Promise promise) {
131
+ try {
132
+ ((RetenoApplication) this.context.getCurrentActivity().getApplication())
133
+ .getRetenoInstance()
134
+ .logEvent(RetenoEvent.buildEventFromPayload(payload));
135
+ } catch (Exception e) {
136
+ promise.reject("Reteno Android SDK Error", e);
137
+ return;
138
+ }
139
+
140
+ WritableMap res = new WritableNativeMap();
141
+ res.putBoolean("success", true);
142
+ promise.resolve(res);
143
+ }
129
144
  }
@@ -11,11 +11,6 @@ import java.util.ArrayList;
11
11
  import java.util.List;
12
12
 
13
13
  public class RetenoUserAttributes {
14
- private static String getStringOrNull(String input) {
15
- if (input == null) return null;
16
- if (input.isEmpty()) return null;
17
- return input;
18
- }
19
14
  private static List<UserCustomField> buildUserCustomData(ReadableArray fields) {
20
15
  int countView = fields.size();
21
16
  if (countView == 0) return null;
@@ -96,10 +91,10 @@ public class RetenoUserAttributes {
96
91
 
97
92
  if (payloadAddress != null) {
98
93
  address = new Address(
99
- getStringOrNull(payloadAddress.getString("region")),
100
- getStringOrNull(payloadAddress.getString("town")),
101
- getStringOrNull(payloadAddress.getString("address")),
102
- getStringOrNull(payloadAddress.getString("postcode"))
94
+ RetenoUtil.getStringOrNull(payloadAddress.getString("region")),
95
+ RetenoUtil.getStringOrNull(payloadAddress.getString("town")),
96
+ RetenoUtil.getStringOrNull(payloadAddress.getString("address")),
97
+ RetenoUtil.getStringOrNull(payloadAddress.getString("postcode"))
103
98
  );
104
99
  }
105
100
 
@@ -108,12 +103,12 @@ public class RetenoUserAttributes {
108
103
  }
109
104
 
110
105
  UserAttributes userAttributes = new UserAttributes(
111
- getStringOrNull(payloadPhone),
112
- getStringOrNull(payloadEmail),
113
- getStringOrNull(payloadFirstName),
114
- getStringOrNull(payloadLastName),
115
- getStringOrNull(payloadLanguageCode),
116
- getStringOrNull(payloadTimeZone),
106
+ RetenoUtil.getStringOrNull(payloadPhone),
107
+ RetenoUtil.getStringOrNull(payloadEmail),
108
+ RetenoUtil.getStringOrNull(payloadFirstName),
109
+ RetenoUtil.getStringOrNull(payloadLastName),
110
+ RetenoUtil.getStringOrNull(payloadLanguageCode),
111
+ RetenoUtil.getStringOrNull(payloadTimeZone),
117
112
  address,
118
113
  fields
119
114
  );
@@ -0,0 +1,9 @@
1
+ package com.retenosdk;
2
+
3
+ public class RetenoUtil {
4
+ public static String getStringOrNull(String input) {
5
+ if (input == null) return null;
6
+ if (input.isEmpty()) return null;
7
+ return input;
8
+ }
9
+ }
@@ -0,0 +1,75 @@
1
+ //
2
+ // RetenoEvent.swift
3
+ // RetenoSdk
4
+ //
5
+ // Created by Valentyn Halkin on 23.03.2023.
6
+ // Copyright © 2023 Facebook. All rights reserved.
7
+ //
8
+
9
+ import Foundation
10
+ import Reteno
11
+
12
+ struct RetenoCustomEventParameter: Codable {
13
+ init(dictionary: [String: Any]?) throws {
14
+ self = try JSONDecoder().decode(RetenoCustomEventParameter.self, from: JSONSerialization.data(withJSONObject: dictionary ?? [:]))
15
+ }
16
+ let name: String;
17
+ let value: String?;
18
+ }
19
+
20
+ struct RetenoCustomEvent: Codable {
21
+ init(dictionary: [String: Any]?) throws {
22
+ self = try JSONDecoder().decode(RetenoCustomEvent.self, from: JSONSerialization.data(withJSONObject: dictionary ?? [:]))
23
+ }
24
+ let eventName: String;
25
+ let date: String;
26
+ let parameters: [RetenoCustomEventParameter];
27
+ let forcePush: Bool?;
28
+ }
29
+
30
+ public struct RetenoEventPayload: Codable {
31
+ init(eventName: String, stringDate: String, parameters: [RetenoCustomEventParameter], forcePush: Bool?) {
32
+ self.eventName = eventName;
33
+
34
+ let dateFormatter = ISO8601DateFormatter();
35
+ self.date = dateFormatter.date(from: stringDate) ?? Date();
36
+
37
+ self.forcePush = forcePush == nil ? false : forcePush!;
38
+
39
+ var paramArr = [Event.Parameter]();
40
+ for param in parameters {
41
+ paramArr.append(Event.Parameter(name: param.name, value: param.value ?? ""));
42
+ }
43
+ self.parameters = paramArr;
44
+ }
45
+
46
+ let eventName: String;
47
+ let date: Date;
48
+ let parameters: [Event.Parameter];
49
+ let forcePush: Bool;
50
+ }
51
+
52
+ public struct RetenoEvent {
53
+ private init() {}
54
+
55
+ private static func getStringOrNil(input: String?) -> String? {
56
+ return (input ?? "").isEmpty ? nil : input!
57
+ }
58
+
59
+ public static func buildEventPayload(payload: NSDictionary) throws -> RetenoEventPayload {
60
+ let data = payload as? [String: Any];
61
+ do {
62
+ let payloadStruct = try RetenoCustomEvent(dictionary: data);
63
+ let requestPayload = RetenoEventPayload(
64
+ eventName: payloadStruct.eventName,
65
+ stringDate: payloadStruct.date,
66
+ parameters: payloadStruct.parameters,
67
+ forcePush: payloadStruct.forcePush
68
+ );
69
+
70
+ return requestPayload;
71
+ } catch {
72
+ throw error;
73
+ }
74
+ }
75
+ }
package/ios/RetenoSdk.m CHANGED
@@ -11,14 +11,25 @@ RCT_EXTERN_METHOD(setUserAttributes:(NSDictionary*)payload
11
11
  withResolver:(RCTPromiseResolveBlock)resolve
12
12
  withRejecter:(RCTPromiseRejectBlock)reject)
13
13
 
14
+ RCT_EXTERN_METHOD(logEvent:(NSDictionary*)payload
15
+ withResolver:(RCTPromiseResolveBlock)resolve
16
+ withRejecter:(RCTPromiseRejectBlock)reject)
17
+
14
18
  RCT_EXTERN_METHOD(getInitialNotification:(RCTPromiseResolveBlock)resolve
15
19
  withRejecter:(RCTPromiseRejectBlock)reject)
16
20
 
21
+ RCT_EXTERN_METHOD(registerForRemoteNotifications)
22
+
17
23
  RCT_EXTERN_METHOD(supportedEvents)
18
24
 
19
25
  + (BOOL)requiresMainQueueSetup
20
26
  {
21
- return NO;
27
+ return YES;
28
+ }
29
+
30
+ - (dispatch_queue_t)methodQueue
31
+ {
32
+ return dispatch_get_main_queue();
22
33
  }
23
34
 
24
35
  @end
@@ -28,7 +28,6 @@ open class RetenoSdk: RCTEventEmitter {
28
28
 
29
29
  @objc(setUserAttributes:withResolver:withRejecter:)
30
30
  func setUserAttributes(payload: NSDictionary, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
31
- print("setUserAttributes was called")
32
31
  let externalUserId = payload["externalUserId"] as? String;
33
32
 
34
33
  do {
@@ -61,4 +60,30 @@ open class RetenoSdk: RCTEventEmitter {
61
60
  resolve(nil);
62
61
  }
63
62
  }
63
+
64
+ @objc(logEvent:withResolver:withRejecter:)
65
+ func logEvent(payload: NSDictionary, resolve:RCTPromiseResolveBlock,reject:RCTPromiseRejectBlock) -> Void {
66
+ do {
67
+ let requestPayload = try RetenoEvent.buildEventPayload(payload: payload);
68
+ Reteno.logEvent(
69
+ eventTypeKey: requestPayload.eventName,
70
+ date: requestPayload.date,
71
+ parameters: requestPayload.parameters,
72
+ forcePush: requestPayload.forcePush
73
+ );
74
+
75
+ let res:[String:Bool] = ["success":true];
76
+
77
+ resolve(res);
78
+ } catch {
79
+ reject("100", "Reteno iOS SDK Error", error);
80
+ }
81
+ }
82
+
83
+ @objc(registerForRemoteNotifications)
84
+ func registerForRemoteNotifications() -> Void {
85
+ // Register for receiving push notifications
86
+ // registerForRemoteNotifications will show the native iOS notification permission prompt
87
+ Reteno.userNotificationService.registerForRemoteNotifications(with: [.sound, .alert, .badge], application: UIApplication.shared);
88
+ }
64
89
  }
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <Workspace
3
+ version = "1.0">
4
+ <FileRef
5
+ location = "self:">
6
+ </FileRef>
7
+ </Workspace>
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>IDEDidComputeMac32BitWarning</key>
6
+ <true/>
7
+ </dict>
8
+ </plist>
@@ -0,0 +1,14 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>SchemeUserState</key>
6
+ <dict>
7
+ <key>RetenoSdk.xcscheme_^#shared#^_</key>
8
+ <dict>
9
+ <key>orderHint</key>
10
+ <integer>0</integer>
11
+ </dict>
12
+ </dict>
13
+ </dict>
14
+ </plist>
@@ -9,6 +9,8 @@
9
9
  import Foundation
10
10
  import Reteno
11
11
 
12
+
13
+
12
14
  struct RetenoUserAttributesFieldStruct: Codable {
13
15
  let key: String
14
16
  let value: String
@@ -4,6 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.getInitialNotification = getInitialNotification;
7
+ exports.logEvent = logEvent;
8
+ exports.registerForRemoteNotifications = registerForRemoteNotifications;
7
9
  exports.setDeviceToken = setDeviceToken;
8
10
  exports.setOnRetenoPushReceivedListener = setOnRetenoPushReceivedListener;
9
11
  exports.setUserAttributes = setUserAttributes;
@@ -37,4 +39,19 @@ const eventEmitter = _reactNative.Platform.select({
37
39
  function setOnRetenoPushReceivedListener(listener) {
38
40
  return eventEmitter.addListener('reteno-push-received', listener);
39
41
  }
42
+ function logEvent(eventName, date,
43
+ // date parameter should be in ISO8601 format
44
+ parameters, forcePush) {
45
+ return RetenoSdk.logEvent({
46
+ eventName,
47
+ date,
48
+ parameters,
49
+ forcePush
50
+ });
51
+ }
52
+ function registerForRemoteNotifications() {
53
+ if (_reactNative.Platform.OS === 'ios') {
54
+ RetenoSdk.registerForRemoteNotifications();
55
+ }
56
+ }
40
57
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["LINKING_ERROR","Platform","select","ios","default","RetenoSdk","NativeModules","Proxy","get","Error","setDeviceToken","deviceToken","setUserAttributes","payload","externalUserId","length","getInitialNotification","eventEmitter","NativeEventEmitter","android","DeviceEventEmitter","setOnRetenoPushReceivedListener","listener","addListener"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;;;;;;;;AAAA;AAOA,MAAMA,aAAa,GAChB,kFAAiF,GAClFC,qBAAQ,CAACC,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AAuCjC,MAAMC,SAAS,GAAGC,0BAAa,CAACD,SAAS,GACrCC,0BAAa,CAACD,SAAS,GACvB,IAAIE,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAG,GAAG;IACJ,MAAM,IAAIC,KAAK,CAACT,aAAa,CAAC;EAChC;AACF,CAAC,CACF;AAEE,SAASU,cAAc,CAACC,WAAmB,EAAiB;EACjE,OAAON,SAAS,CAACK,cAAc,CAACC,WAAW,CAAC;AAC9C;AAEO,SAASC,iBAAiB,CAC/BC,OAAiC,EAClB;EACf,IACE,CAACA,OAAO,CAACC,cAAc,IACtBD,OAAO,CAACC,cAAc,IAAID,OAAO,CAACC,cAAc,CAACC,MAAM,KAAK,CAAE,EAC/D;IACA,MAAM,IAAIN,KAAK,CAAC,oCAAoC,CAAC;EACvD;EACA,OAAOJ,SAAS,CAACO,iBAAiB,CAACC,OAAO,CAAC;AAC7C;AAEO,SAASG,sBAAsB,GAAiB;EACrD,OAAOX,SAAS,CAACW,sBAAsB,EAAE;AAC3C;AAEA,MAAMC,YAAY,GAAGhB,qBAAQ,CAACC,MAAM,CAAC;EACnCC,GAAG,EAAE,IAAIe,+BAAkB,CAACb,SAAS,CAAC;EACtC;EACAc,OAAO,EAAEC;AACX,CAAC,CAAC;AAEK,SAASC,+BAA+B,CAC7CC,QAA8B,EAC9B;EACA,OAAOL,YAAY,CAACM,WAAW,CAAC,sBAAsB,EAAED,QAAQ,CAAC;AACnE"}
1
+ {"version":3,"names":["LINKING_ERROR","Platform","select","ios","default","RetenoSdk","NativeModules","Proxy","get","Error","setDeviceToken","deviceToken","setUserAttributes","payload","externalUserId","length","getInitialNotification","eventEmitter","NativeEventEmitter","android","DeviceEventEmitter","setOnRetenoPushReceivedListener","listener","addListener","logEvent","eventName","date","parameters","forcePush","registerForRemoteNotifications","OS"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;AAAA;AAOA,MAAMA,aAAa,GAChB,kFAAiF,GAClFC,qBAAQ,CAACC,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AA4CjC,MAAMC,SAAS,GAAGC,0BAAa,CAACD,SAAS,GACrCC,0BAAa,CAACD,SAAS,GACvB,IAAIE,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAG,GAAG;IACJ,MAAM,IAAIC,KAAK,CAACT,aAAa,CAAC;EAChC;AACF,CAAC,CACF;AAEE,SAASU,cAAc,CAACC,WAAmB,EAAiB;EACjE,OAAON,SAAS,CAACK,cAAc,CAACC,WAAW,CAAC;AAC9C;AAEO,SAASC,iBAAiB,CAC/BC,OAAiC,EAClB;EACf,IACE,CAACA,OAAO,CAACC,cAAc,IACtBD,OAAO,CAACC,cAAc,IAAID,OAAO,CAACC,cAAc,CAACC,MAAM,KAAK,CAAE,EAC/D;IACA,MAAM,IAAIN,KAAK,CAAC,oCAAoC,CAAC;EACvD;EACA,OAAOJ,SAAS,CAACO,iBAAiB,CAACC,OAAO,CAAC;AAC7C;AAEO,SAASG,sBAAsB,GAAiB;EACrD,OAAOX,SAAS,CAACW,sBAAsB,EAAE;AAC3C;AAEA,MAAMC,YAAY,GAAGhB,qBAAQ,CAACC,MAAM,CAAC;EACnCC,GAAG,EAAE,IAAIe,+BAAkB,CAACb,SAAS,CAAC;EACtC;EACAc,OAAO,EAAEC;AACX,CAAC,CAAC;AAEK,SAASC,+BAA+B,CAC7CC,QAA8B,EAC9B;EACA,OAAOL,YAAY,CAACM,WAAW,CAAC,sBAAsB,EAAED,QAAQ,CAAC;AACnE;AAEO,SAASE,QAAQ,CACtBC,SAAiB,EACjBC,IAAY;AACZ;AACAC,UAAkC,EAClCC,SAAmB,EACnB;EACA,OAAOvB,SAAS,CAACmB,QAAQ,CAAC;IACxBC,SAAS;IACTC,IAAI;IACJC,UAAU;IACVC;EACF,CAAC,CAAC;AACJ;AAEO,SAASC,8BAA8B,GAAG;EAC/C,IAAI5B,qBAAQ,CAAC6B,EAAE,KAAK,KAAK,EAAE;IACzBzB,SAAS,CAACwB,8BAA8B,EAAE;EAC5C;AACF"}
@@ -28,4 +28,19 @@ const eventEmitter = Platform.select({
28
28
  export function setOnRetenoPushReceivedListener(listener) {
29
29
  return eventEmitter.addListener('reteno-push-received', listener);
30
30
  }
31
+ export function logEvent(eventName, date,
32
+ // date parameter should be in ISO8601 format
33
+ parameters, forcePush) {
34
+ return RetenoSdk.logEvent({
35
+ eventName,
36
+ date,
37
+ parameters,
38
+ forcePush
39
+ });
40
+ }
41
+ export function registerForRemoteNotifications() {
42
+ if (Platform.OS === 'ios') {
43
+ RetenoSdk.registerForRemoteNotifications();
44
+ }
45
+ }
31
46
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["DeviceEventEmitter","NativeEventEmitter","NativeModules","Platform","LINKING_ERROR","select","ios","default","RetenoSdk","Proxy","get","Error","setDeviceToken","deviceToken","setUserAttributes","payload","externalUserId","length","getInitialNotification","eventEmitter","android","setOnRetenoPushReceivedListener","listener","addListener"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,SACEA,kBAAkB,EAClBC,kBAAkB,EAClBC,aAAa,EACbC,QAAQ,QACH,cAAc;AAErB,MAAMC,aAAa,GAChB,kFAAiF,GAClFD,QAAQ,CAACE,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AAuCjC,MAAMC,SAAS,GAAGN,aAAa,CAACM,SAAS,GACrCN,aAAa,CAACM,SAAS,GACvB,IAAIC,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAG,GAAG;IACJ,MAAM,IAAIC,KAAK,CAACP,aAAa,CAAC;EAChC;AACF,CAAC,CACF;AAEL,OAAO,SAASQ,cAAc,CAACC,WAAmB,EAAiB;EACjE,OAAOL,SAAS,CAACI,cAAc,CAACC,WAAW,CAAC;AAC9C;AAEA,OAAO,SAASC,iBAAiB,CAC/BC,OAAiC,EAClB;EACf,IACE,CAACA,OAAO,CAACC,cAAc,IACtBD,OAAO,CAACC,cAAc,IAAID,OAAO,CAACC,cAAc,CAACC,MAAM,KAAK,CAAE,EAC/D;IACA,MAAM,IAAIN,KAAK,CAAC,oCAAoC,CAAC;EACvD;EACA,OAAOH,SAAS,CAACM,iBAAiB,CAACC,OAAO,CAAC;AAC7C;AAEA,OAAO,SAASG,sBAAsB,GAAiB;EACrD,OAAOV,SAAS,CAACU,sBAAsB,EAAE;AAC3C;AAEA,MAAMC,YAAY,GAAGhB,QAAQ,CAACE,MAAM,CAAC;EACnCC,GAAG,EAAE,IAAIL,kBAAkB,CAACO,SAAS,CAAC;EACtC;EACAY,OAAO,EAAEpB;AACX,CAAC,CAAC;AAEF,OAAO,SAASqB,+BAA+B,CAC7CC,QAA8B,EAC9B;EACA,OAAOH,YAAY,CAACI,WAAW,CAAC,sBAAsB,EAAED,QAAQ,CAAC;AACnE"}
1
+ {"version":3,"names":["DeviceEventEmitter","NativeEventEmitter","NativeModules","Platform","LINKING_ERROR","select","ios","default","RetenoSdk","Proxy","get","Error","setDeviceToken","deviceToken","setUserAttributes","payload","externalUserId","length","getInitialNotification","eventEmitter","android","setOnRetenoPushReceivedListener","listener","addListener","logEvent","eventName","date","parameters","forcePush","registerForRemoteNotifications","OS"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AAAA,SACEA,kBAAkB,EAClBC,kBAAkB,EAClBC,aAAa,EACbC,QAAQ,QACH,cAAc;AAErB,MAAMC,aAAa,GAChB,kFAAiF,GAClFD,QAAQ,CAACE,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AA4CjC,MAAMC,SAAS,GAAGN,aAAa,CAACM,SAAS,GACrCN,aAAa,CAACM,SAAS,GACvB,IAAIC,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAG,GAAG;IACJ,MAAM,IAAIC,KAAK,CAACP,aAAa,CAAC;EAChC;AACF,CAAC,CACF;AAEL,OAAO,SAASQ,cAAc,CAACC,WAAmB,EAAiB;EACjE,OAAOL,SAAS,CAACI,cAAc,CAACC,WAAW,CAAC;AAC9C;AAEA,OAAO,SAASC,iBAAiB,CAC/BC,OAAiC,EAClB;EACf,IACE,CAACA,OAAO,CAACC,cAAc,IACtBD,OAAO,CAACC,cAAc,IAAID,OAAO,CAACC,cAAc,CAACC,MAAM,KAAK,CAAE,EAC/D;IACA,MAAM,IAAIN,KAAK,CAAC,oCAAoC,CAAC;EACvD;EACA,OAAOH,SAAS,CAACM,iBAAiB,CAACC,OAAO,CAAC;AAC7C;AAEA,OAAO,SAASG,sBAAsB,GAAiB;EACrD,OAAOV,SAAS,CAACU,sBAAsB,EAAE;AAC3C;AAEA,MAAMC,YAAY,GAAGhB,QAAQ,CAACE,MAAM,CAAC;EACnCC,GAAG,EAAE,IAAIL,kBAAkB,CAACO,SAAS,CAAC;EACtC;EACAY,OAAO,EAAEpB;AACX,CAAC,CAAC;AAEF,OAAO,SAASqB,+BAA+B,CAC7CC,QAA8B,EAC9B;EACA,OAAOH,YAAY,CAACI,WAAW,CAAC,sBAAsB,EAAED,QAAQ,CAAC;AACnE;AAEA,OAAO,SAASE,QAAQ,CACtBC,SAAiB,EACjBC,IAAY;AACZ;AACAC,UAAkC,EAClCC,SAAmB,EACnB;EACA,OAAOpB,SAAS,CAACgB,QAAQ,CAAC;IACxBC,SAAS;IACTC,IAAI;IACJC,UAAU;IACVC;EACF,CAAC,CAAC;AACJ;AAEA,OAAO,SAASC,8BAA8B,GAAG;EAC/C,IAAI1B,QAAQ,CAAC2B,EAAE,KAAK,KAAK,EAAE;IACzBtB,SAAS,CAACqB,8BAA8B,EAAE;EAC5C;AACF"}
@@ -29,9 +29,15 @@ export type SetUserAttributesPayload = {
29
29
  externalUserId: string;
30
30
  user: User;
31
31
  };
32
+ export type CustomEventParameter = {
33
+ name: string;
34
+ value?: string;
35
+ };
32
36
  export declare function setDeviceToken(deviceToken: string): Promise<void>;
33
37
  export declare function setUserAttributes(payload: SetUserAttributesPayload): Promise<void>;
34
38
  export declare function getInitialNotification(): Promise<any>;
35
39
  export declare function setOnRetenoPushReceivedListener(listener: (event: any) => void): import("react-native").EmitterSubscription;
40
+ export declare function logEvent(eventName: string, date: string, parameters: CustomEventParameter[], forcePush?: boolean): any;
41
+ export declare function registerForRemoteNotifications(): void;
36
42
  export {};
37
43
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAaA,MAAM,MAAM,OAAO,GAAG;IACpB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF,KAAK,KAAK,GAAG;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,KAAK,MAAM,GAAG,KAAK,EAAE,CAAC;AAEtB,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,IAAI,GAAG;IACjB,cAAc,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;IACvC,gBAAgB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACnC,iBAAiB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACpC,iBAAiB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,IAAI,CAAC;CACZ,CAAC;AAaF,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEjE;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,IAAI,CAAC,CAQf;AAED,wBAAgB,sBAAsB,IAAI,OAAO,CAAC,GAAG,CAAC,CAErD;AAQD,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,8CAG/B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAaA,MAAM,MAAM,OAAO,GAAG;IACpB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AAEF,KAAK,KAAK,GAAG;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,KAAK,MAAM,GAAG,KAAK,EAAE,CAAC;AAEtB,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,IAAI,GAAG;IACjB,cAAc,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;IACvC,gBAAgB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACnC,iBAAiB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACpC,iBAAiB,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACrC,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,IAAI,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAaF,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEjE;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,IAAI,CAAC,CAQf;AAED,wBAAgB,sBAAsB,IAAI,OAAO,CAAC,GAAG,CAAC,CAErD;AAQD,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,8CAG/B;AAED,wBAAgB,QAAQ,CACtB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EAEZ,UAAU,EAAE,oBAAoB,EAAE,EAClC,SAAS,CAAC,EAAE,OAAO,OAQpB;AAED,wBAAgB,8BAA8B,SAI7C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "reteno-react-native-sdk",
3
- "version": "1.0.0",
3
+ "version": "1.2.0",
4
4
  "description": "The Reteno React Native SDK for App Analytics and Engagement.",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -17,7 +17,7 @@ Pod::Spec.new do |s|
17
17
  s.source_files = "ios/**/*.{h,m,mm,swift}"
18
18
 
19
19
  s.dependency 'React-Core'
20
- s.dependency 'Reteno', '1.3.0'
20
+ s.dependency 'Reteno', '1.6.4'
21
21
 
22
22
  # Don't install the dependencies when we run `pod install` in the old architecture.
23
23
  if ENV['RCT_NEW_ARCH_ENABLED'] == '1' then
@@ -48,6 +48,11 @@ export type SetUserAttributesPayload = {
48
48
  user: User;
49
49
  };
50
50
 
51
+ export type CustomEventParameter = {
52
+ name: string;
53
+ value?: string;
54
+ };
55
+
51
56
  const RetenoSdk = NativeModules.RetenoSdk
52
57
  ? NativeModules.RetenoSdk
53
58
  : new Proxy(
@@ -90,3 +95,24 @@ export function setOnRetenoPushReceivedListener(
90
95
  ) {
91
96
  return eventEmitter.addListener('reteno-push-received', listener);
92
97
  }
98
+
99
+ export function logEvent(
100
+ eventName: string,
101
+ date: string,
102
+ // date parameter should be in ISO8601 format
103
+ parameters: CustomEventParameter[],
104
+ forcePush?: boolean
105
+ ) {
106
+ return RetenoSdk.logEvent({
107
+ eventName,
108
+ date,
109
+ parameters,
110
+ forcePush,
111
+ });
112
+ }
113
+
114
+ export function registerForRemoteNotifications() {
115
+ if (Platform.OS === 'ios') {
116
+ RetenoSdk.registerForRemoteNotifications();
117
+ }
118
+ }