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.
- package/android/build.gradle +3 -1
- package/android/src/main/java/com/retenosdk/RetenoEvent.java +63 -0
- package/android/src/main/java/com/retenosdk/RetenoSdkModule.java +16 -1
- package/android/src/main/java/com/retenosdk/RetenoUserAttributes.java +10 -15
- package/android/src/main/java/com/retenosdk/RetenoUtil.java +9 -0
- package/ios/RetenoEvent.swift +75 -0
- package/ios/RetenoSdk.m +12 -1
- package/ios/RetenoSdk.swift +26 -1
- package/ios/RetenoSdk.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- package/ios/RetenoSdk.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- package/ios/RetenoSdk.xcodeproj/project.xcworkspace/xcuserdata/oleksiishevchenko.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/ios/RetenoSdk.xcodeproj/xcuserdata/oleksiishevchenko.xcuserdatad/xcschemes/xcschememanagement.plist +14 -0
- package/ios/RetenoUserAttributes.swift +2 -0
- package/lib/commonjs/index.js +17 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/index.js +15 -0
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/index.d.ts +6 -0
- package/lib/typescript/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/reteno-react-native-sdk.podspec +1 -1
- package/src/{index.tsx → index.ts} +26 -0
package/android/build.gradle
CHANGED
|
@@ -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
|
|
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,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
|
|
27
|
+
return YES;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
- (dispatch_queue_t)methodQueue
|
|
31
|
+
{
|
|
32
|
+
return dispatch_get_main_queue();
|
|
22
33
|
}
|
|
23
34
|
|
|
24
35
|
@end
|
package/ios/RetenoSdk.swift
CHANGED
|
@@ -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
|
}
|
|
Binary file
|
|
@@ -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>
|
package/lib/commonjs/index.js
CHANGED
|
@@ -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.
|
|
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"}
|
package/lib/module/index.js
CHANGED
|
@@ -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
|
package/lib/module/index.js.map
CHANGED
|
@@ -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.
|
|
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.
|
|
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
|
@@ -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.
|
|
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
|
+
}
|