reactnative-plugin-appice 1.7.30 → 1.7.31
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/.gradle/8.5/checksums/checksums.lock +0 -0
- package/android/.gradle/8.5/dependencies-accessors/dependencies-accessors.lock +0 -0
- package/android/.gradle/8.5/dependencies-accessors/gc.properties +0 -0
- package/android/.gradle/8.5/fileChanges/last-build.bin +0 -0
- package/android/.gradle/8.5/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/8.5/gc.properties +0 -0
- package/android/.gradle/vcs-1/gc.properties +0 -0
- package/android/build.gradle +1 -1
- package/android/src/main/java/com/appice/react/AppICEUtils.java +201 -0
- package/android/src/main/java/com/appice/react/AppIceReactPluginModule.java +73 -47
- package/android/src/main/java/com/appice/react/EnumConstants.java +45 -48
- package/campaign.js +98 -11
- package/example/App.js +21 -16
- package/example/android/.gradle/7.3.3/checksums/checksums.lock +0 -0
- package/example/android/.gradle/7.3.3/fileChanges/last-build.bin +0 -0
- package/example/android/.gradle/7.3.3/fileHashes/fileHashes.lock +0 -0
- package/example/android/.gradle/7.3.3/gc.properties +0 -0
- package/example/android/.gradle/vcs-1/gc.properties +0 -0
- package/example/android/app/build.gradle +4 -0
- package/example/android/app/src/main/AndroidManifest.xml +9 -0
- package/example/android/app/src/main/java/com/example/MainActivity.java +12 -0
- package/example/yarn.lock +7176 -0
- package/index.js +28 -0
- package/package.json +1 -1
|
@@ -12,7 +12,6 @@ import semusi.util.constants.CampaignConstants;
|
|
|
12
12
|
public enum EnumConstants {
|
|
13
13
|
|
|
14
14
|
|
|
15
|
-
// TODO: 02/01/24 once iOS will ready to rename it we will rename the key, because right now key and value are same.
|
|
16
15
|
//=========================
|
|
17
16
|
//USER-PROFILE
|
|
18
17
|
//=========================
|
|
@@ -101,178 +100,176 @@ public enum EnumConstants {
|
|
|
101
100
|
return constants;
|
|
102
101
|
}
|
|
103
102
|
|
|
104
|
-
|
|
105
|
-
// replace static value with sdk value
|
|
106
|
-
// }
|
|
103
|
+
|
|
107
104
|
public String getValue(){
|
|
108
|
-
switch (
|
|
109
|
-
case
|
|
105
|
+
switch (this){
|
|
106
|
+
case APPICE_USER_NAME:{
|
|
110
107
|
return UserInfoConstants.NAME;
|
|
111
108
|
}
|
|
112
109
|
|
|
113
|
-
case
|
|
110
|
+
case APPICE_USER_PHONE:{
|
|
114
111
|
return UserInfoConstants.PHONE;
|
|
115
112
|
}
|
|
116
113
|
|
|
117
|
-
case
|
|
114
|
+
case APPICE_USER_EMAIL:{
|
|
118
115
|
return UserInfoConstants.EMAIL;
|
|
119
116
|
}
|
|
120
117
|
|
|
121
|
-
case
|
|
118
|
+
case APPICE_DATE_OF_BIRTH:{
|
|
122
119
|
return UserInfoConstants.DATE_OF_BIRTH;
|
|
123
120
|
}
|
|
124
121
|
|
|
125
|
-
case
|
|
122
|
+
case APPICE_USER_AGE:{
|
|
126
123
|
return UserInfoConstants.AGE;
|
|
127
124
|
}
|
|
128
125
|
|
|
129
|
-
case
|
|
126
|
+
case APPICE_USER_EDUCATION_TYPE:{
|
|
130
127
|
return UserInfoConstants.EDUCATION_TYPE;
|
|
131
128
|
}
|
|
132
129
|
|
|
133
130
|
|
|
134
|
-
case
|
|
131
|
+
case APPICE_USER_GENDER:{
|
|
135
132
|
return UserInfoConstants.GENDER;
|
|
136
133
|
}
|
|
137
134
|
|
|
138
|
-
case
|
|
135
|
+
case APPICE_USER_IS_EMPLOYED:{
|
|
139
136
|
return UserInfoConstants.EMPLOYEE_STATUS;
|
|
140
137
|
}
|
|
141
138
|
|
|
142
|
-
case
|
|
139
|
+
case APPICE_USER_EMPLOYMENT_TYPE:{
|
|
143
140
|
return UserInfoConstants.EMPLOYMENT_TYPE;
|
|
144
141
|
}
|
|
145
142
|
|
|
146
|
-
case
|
|
143
|
+
case APPICE_USER_MARRIED:{
|
|
147
144
|
return UserInfoConstants.RELATIONSHIP_STATUS;
|
|
148
145
|
}
|
|
149
146
|
|
|
150
|
-
case
|
|
147
|
+
case APPICE_PUSH_NOTIFICATION_CLICKED:{
|
|
151
148
|
return StringConstants.APPICE_PUSH_NOTIFICATION_CLICKED;
|
|
152
149
|
}
|
|
153
150
|
|
|
154
|
-
case
|
|
151
|
+
case APPICE_INAPP_NOTIFICATION_CLICKED:{
|
|
155
152
|
return StringConstants.APPICE_INAPP_NOTIFICATION_CLICKED;
|
|
156
153
|
}
|
|
157
154
|
|
|
158
|
-
case
|
|
155
|
+
case INBOX_MESSAGE:{
|
|
159
156
|
return StringConstants.INBOX_MESSAGE;
|
|
160
157
|
}
|
|
161
158
|
|
|
162
|
-
case
|
|
159
|
+
case INBOX_TITLE:{
|
|
163
160
|
return StringConstants.INBOX_TITLE;
|
|
164
161
|
}
|
|
165
162
|
|
|
166
|
-
case
|
|
163
|
+
case INBOX_MESSAGE_STATUS:{
|
|
167
164
|
return StringConstants.INBOX_MESSAGE_STATUS;
|
|
168
165
|
}
|
|
169
166
|
|
|
170
|
-
case
|
|
167
|
+
case INBOX_CAMPAIGN_TYPE:{
|
|
171
168
|
return StringConstants.INBOX_CAMPAIGN_TYPE;
|
|
172
169
|
}
|
|
173
170
|
|
|
174
|
-
case
|
|
171
|
+
case INBOX_MESSAGE_LANGUAGE:{
|
|
175
172
|
return StringConstants.INBOX_MESSAGE_LANGUAGE;
|
|
176
173
|
}
|
|
177
174
|
|
|
178
|
-
case
|
|
175
|
+
case INBOX_MESSAGE_ID:{
|
|
179
176
|
return StringConstants.INBOX_MESSAGE_ID;
|
|
180
177
|
}
|
|
181
178
|
|
|
182
|
-
case
|
|
179
|
+
case INBOX_CAMPAIGN_ID:{
|
|
183
180
|
return StringConstants.INBOX_CAMPAIGN_ID;
|
|
184
181
|
}
|
|
185
182
|
|
|
186
|
-
case
|
|
183
|
+
case INBOX_MESSAGE_CATEGORY:{
|
|
187
184
|
return StringConstants.INBOX_MESSAGE_CATEGORY;
|
|
188
185
|
}
|
|
189
186
|
|
|
190
|
-
case
|
|
187
|
+
case INBOX_MESSAGE_ICON:{
|
|
191
188
|
return StringConstants.INBOX_MESSAGE_ICON;
|
|
192
189
|
}
|
|
193
190
|
|
|
194
|
-
case
|
|
191
|
+
case INBOX_CUSTOM_DATA:{
|
|
195
192
|
return StringConstants.INBOX_CUSTOM_DATA;
|
|
196
193
|
}
|
|
197
194
|
|
|
198
|
-
case
|
|
195
|
+
case FIRST_SEEN:{
|
|
199
196
|
return StringConstants.FIRST_SEEN;
|
|
200
197
|
}
|
|
201
198
|
|
|
202
|
-
case
|
|
199
|
+
case LAST_SEEN:{
|
|
203
200
|
return StringConstants.LAST_SEEN;
|
|
204
201
|
}
|
|
205
202
|
|
|
206
|
-
case
|
|
203
|
+
case TOP_N_PRODUCTS_VIEWED:{
|
|
207
204
|
return CustomUserPropertyConstants.TOP_N_PRODUCTS_VIEWED;
|
|
208
205
|
}
|
|
209
206
|
|
|
210
|
-
case
|
|
207
|
+
case N_COMPLAINTS_RAISED:{
|
|
211
208
|
return CustomUserPropertyConstants.N_COMPLAINTS_RAISED;
|
|
212
209
|
}
|
|
213
210
|
|
|
214
|
-
case
|
|
211
|
+
case PREF_LOGIN_DEVICE:{
|
|
215
212
|
return CustomUserPropertyConstants.PREF_LOGIN_DEVICE;
|
|
216
213
|
}
|
|
217
214
|
|
|
218
|
-
case
|
|
215
|
+
case REFERRAL_CAMPAIGN:{
|
|
219
216
|
return CustomUserPropertyConstants.REFERRAL_CAMPAIGN;
|
|
220
217
|
}
|
|
221
218
|
|
|
222
|
-
case
|
|
219
|
+
case DEMOGRAPHIC_INFO:{
|
|
223
220
|
return UserInfoConstants.DEMOGRAPHIC_INFO;
|
|
224
221
|
}
|
|
225
222
|
|
|
226
|
-
case
|
|
223
|
+
case TOTAL_ORDER_VALUE:{
|
|
227
224
|
return Ecommerce.TOTAL_ORDER_VALUE;
|
|
228
225
|
}
|
|
229
226
|
|
|
230
|
-
case
|
|
227
|
+
case ADD_TO_CART_N_DAYS:{
|
|
231
228
|
return Ecommerce.ADD_TO_CART_N_DAYS;
|
|
232
229
|
}
|
|
233
230
|
|
|
234
|
-
case
|
|
231
|
+
case FINANCIAL_SERVICES:{
|
|
235
232
|
return FinancialServices.FINANCIAL_SERVICES;
|
|
236
233
|
}
|
|
237
234
|
|
|
238
|
-
case
|
|
235
|
+
case CREDIT_SCORE:{
|
|
239
236
|
return FinancialServices.CREDIT_SCORE;
|
|
240
237
|
}
|
|
241
238
|
|
|
242
|
-
case
|
|
239
|
+
case DEBT_TO_INCOME_RATIO:{
|
|
243
240
|
return FinancialServices.DEBT_TO_INCOME_RATIO;
|
|
244
241
|
}
|
|
245
242
|
|
|
246
|
-
case
|
|
243
|
+
case SAVINGS_BALANCE:{
|
|
247
244
|
return FinancialServices.SAVINGS_BALANCE;
|
|
248
245
|
}
|
|
249
246
|
|
|
250
|
-
case
|
|
247
|
+
case CHECKING_BALANCE:{
|
|
251
248
|
return FinancialServices.CHECKING_BALANCE;
|
|
252
249
|
}
|
|
253
250
|
|
|
254
|
-
case
|
|
251
|
+
case AVERAGE_TRANSACTION_AMOUNT:{
|
|
255
252
|
return FinancialServices.AVERAGE_TRANSACTION_AMOUNT;
|
|
256
253
|
}
|
|
257
254
|
|
|
258
|
-
case
|
|
255
|
+
case FREQUENCY_OF_TRANSACTION:{
|
|
259
256
|
return FinancialServices.FREQUENCY_OF_TRANSACTION;
|
|
260
257
|
}
|
|
261
258
|
|
|
262
|
-
case
|
|
259
|
+
case TYPE_OF_TRANSACTION:{
|
|
263
260
|
return FinancialServices.TYPE_OF_TRANSACTION;
|
|
264
261
|
}
|
|
265
262
|
|
|
266
|
-
case
|
|
263
|
+
case CAMP_ID:{
|
|
267
264
|
return CampaignConstants.CAMP_ID;
|
|
268
265
|
}
|
|
269
|
-
case
|
|
266
|
+
case ACTION_URL:{
|
|
270
267
|
return CampaignConstants.ACTION_URL;
|
|
271
268
|
}
|
|
272
|
-
case
|
|
269
|
+
case ACTION_TYPE:{
|
|
273
270
|
return CampaignConstants.ACTION_TYPE;
|
|
274
271
|
}
|
|
275
|
-
case
|
|
272
|
+
case CUSTOMDATA:{
|
|
276
273
|
return CUSTOM_DATA;
|
|
277
274
|
}
|
|
278
275
|
default:
|
package/campaign.js
CHANGED
|
@@ -1,26 +1,113 @@
|
|
|
1
1
|
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
import { Linking, Platform } from 'react-native';
|
|
3
|
+
|
|
4
|
+
const handleClickOnPush = async (campaign) => {
|
|
5
|
+
const url = campaign.actionUrl;
|
|
6
|
+
const actionType = campaign.actionType;
|
|
7
|
+
|
|
8
|
+
if (!url || typeof url !== 'string') {
|
|
9
|
+
console.log('Error: URL is not provided.');
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
const httpUrls = url.startsWith('http://') || url.startsWith('https://');
|
|
14
|
+
|
|
15
|
+
if (httpUrls) {
|
|
16
|
+
try {
|
|
17
|
+
if (Platform.OS === 'ios') {
|
|
18
|
+
const supported = await Linking.canOpenURL(url);
|
|
19
|
+
if (!supported) {
|
|
20
|
+
console.log('URL not supported on iOS:', url);
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
await Linking.openURL(url);
|
|
26
|
+
console.log(`Successfully opened URL: ${url}`);
|
|
27
|
+
} catch (error) {
|
|
28
|
+
console.log('Error while opening URL:', error?.message || error);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
if (actionType === 'dl' && !httpUrls) {
|
|
33
|
+
// handle custom deeplink
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
class Campaign {
|
|
38
|
+
constructor(eventData) {
|
|
39
|
+
let data = eventData;
|
|
40
|
+
try {
|
|
41
|
+
if (typeof eventData === 'string') {
|
|
42
|
+
data = JSON.parse(eventData);
|
|
43
|
+
}
|
|
44
|
+
} catch (e) {
|
|
45
|
+
// if parse fails, keep eventData as-is (object expected)
|
|
46
|
+
data = eventData || {};
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const isIOS = Platform.OS === 'ios';
|
|
50
|
+
|
|
51
|
+
if (isIOS) {
|
|
52
|
+
this.campId = data.campId || '';
|
|
53
|
+
} else {
|
|
54
|
+
this.campId = data.camp_id || '';
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
this.actionType = data.et || '';
|
|
58
|
+
this.actionUrl = data.eurl || '';
|
|
59
|
+
this.actionContent = data.actionContent || '';
|
|
60
|
+
this.title = data.nh || '';
|
|
61
|
+
this.description = data.nd || '';
|
|
62
|
+
this.campType = data.t || '';
|
|
63
|
+
this.selectedIndex = data.selectedIndex || 0;
|
|
64
|
+
this.language = data.language || data.lang || '';
|
|
65
|
+
this.replyText = data.replyText || '';
|
|
66
|
+
this.customData = data.customData || data.cdata || {};
|
|
67
|
+
|
|
68
|
+
const selected = data.selectedAction || {};
|
|
69
|
+
this.selectedAction = selected;
|
|
70
|
+
|
|
71
|
+
this.actions = Array.isArray(data.actions)
|
|
72
|
+
? data.actions.map((action) => {
|
|
73
|
+
return {
|
|
74
|
+
actionTitle: action.actionTitle || action.abt || '',
|
|
75
|
+
actionType: action.actionType || action.act || '',
|
|
76
|
+
actionContent: action.actionContent || action.acc || '',
|
|
77
|
+
actionUrl: action.actionUrl || action.acu || ''
|
|
78
|
+
};
|
|
79
|
+
})
|
|
80
|
+
: [];
|
|
81
|
+
|
|
82
|
+
if (isIOS) {
|
|
83
|
+
this.selectedActionTitle = selected.actionTitle || '';
|
|
84
|
+
this.selectedActionType = selected.actionType || '';
|
|
85
|
+
this.actionContent = selected.actionContent || '';
|
|
86
|
+
this.selectedActionUrl = selected.actionUrl || '';
|
|
87
|
+
} else {
|
|
88
|
+
this.selectedActionTitle = selected.abt || '';
|
|
89
|
+
this.selectedActionType = selected.act || '';
|
|
90
|
+
this.actionContent = selected.acc || '';
|
|
91
|
+
this.selectedActionUrl = selected.acu || '';
|
|
92
|
+
}
|
|
8
93
|
}
|
|
9
94
|
|
|
10
95
|
// Getter methods for campaign properties
|
|
11
96
|
getCampaignId() {
|
|
12
|
-
return this.
|
|
97
|
+
return this.campId;
|
|
13
98
|
}
|
|
14
99
|
|
|
15
100
|
getActionUrl() {
|
|
16
|
-
return this.
|
|
101
|
+
return this.actionUrl;
|
|
17
102
|
}
|
|
18
103
|
|
|
19
104
|
getActionType() {
|
|
20
|
-
return this.
|
|
105
|
+
return this.actionType;
|
|
21
106
|
}
|
|
22
107
|
|
|
23
108
|
getCustomData() {
|
|
24
|
-
return this.
|
|
109
|
+
return this.customData;
|
|
25
110
|
}
|
|
26
|
-
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
export { Campaign, handleClickOnPush };
|
package/example/App.js
CHANGED
|
@@ -20,6 +20,7 @@ import { Alert,
|
|
|
20
20
|
import { getInboxMessages, getMessageCounts, setUser, updatedInboxMessage } from './ancilliary';
|
|
21
21
|
import { handleUrl,receiveDeepLink } from './offerIdhandler';
|
|
22
22
|
const AppICE = require('reactnative-plugin-appice');
|
|
23
|
+
const { Campaign, handleClickOnPush } = require('reactnative-plugin-appice/campaign');
|
|
23
24
|
const HelloWorldApp = () => {
|
|
24
25
|
|
|
25
26
|
|
|
@@ -30,14 +31,14 @@ const HelloWorldApp = () => {
|
|
|
30
31
|
AppICE.preInitialise();
|
|
31
32
|
console.log('preInitialize completed');
|
|
32
33
|
|
|
33
|
-
AppICE.startContext( //keys here
|
|
34
|
-
"",
|
|
34
|
+
AppICE.startContext( //keys here
|
|
35
|
+
"",
|
|
35
36
|
"",
|
|
36
37
|
"",
|
|
37
38
|
"",
|
|
38
39
|
"",
|
|
39
40
|
"",
|
|
40
|
-
certs
|
|
41
|
+
certs
|
|
41
42
|
);
|
|
42
43
|
|
|
43
44
|
addAppICEAPIListeners();
|
|
@@ -88,19 +89,23 @@ const HelloWorldApp = () => {
|
|
|
88
89
|
|
|
89
90
|
|
|
90
91
|
function addAppICEAPIListeners() {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
92
|
+
AppICE.addListener(
|
|
93
|
+
AppICE.AppICEPushNotificationClicked,
|
|
94
|
+
async (event) => {
|
|
95
|
+
if (!event || !event.AppICEPushNotificationClicked) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
try {
|
|
100
|
+
const campaign = new Campaign(event.AppICEPushNotificationClicked);
|
|
101
|
+
await handleClickOnPush(campaign);
|
|
102
|
+
} catch (error) {
|
|
103
|
+
console.error('Error handling app link:', error);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
AppICE.pushNotificationClicked(event.AppICEPushNotificationClicked);
|
|
107
|
+
},
|
|
108
|
+
);
|
|
104
109
|
|
|
105
110
|
AppICE.addListener(
|
|
106
111
|
AppICE.AppICEInAppClicked,
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
File without changes
|
|
File without changes
|
|
@@ -276,6 +276,10 @@ dependencies {
|
|
|
276
276
|
exclude group:'com.facebook.flipper'
|
|
277
277
|
}
|
|
278
278
|
|
|
279
|
+
implementation "appice.io.android:sdk:2.6.26-release"
|
|
280
|
+
|
|
281
|
+
implementation "com.google.android.gms:play-services-cloud-messaging:17.0.2"
|
|
282
|
+
|
|
279
283
|
if (enableHermes) {
|
|
280
284
|
//noinspection GradleDynamicVersion
|
|
281
285
|
implementation("com.facebook.react:hermes-engine:+") { // From node_modules
|
|
@@ -23,6 +23,15 @@
|
|
|
23
23
|
</intent-filter>
|
|
24
24
|
</activity>
|
|
25
25
|
|
|
26
|
+
<receiver
|
|
27
|
+
android:name="semusi.ruleengine.pushmanager.AppICEMessageHandler"
|
|
28
|
+
android:exported="true"
|
|
29
|
+
android:permission="com.google.android.c2dm.permission.SEND" >
|
|
30
|
+
<intent-filter>
|
|
31
|
+
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
|
|
32
|
+
</intent-filter>
|
|
33
|
+
</receiver>
|
|
34
|
+
|
|
26
35
|
<service
|
|
27
36
|
android:name="semusi.ruleengine.pushmanager.SdkFcmListenerService"
|
|
28
37
|
android:protectionLevel="signature"
|
|
@@ -3,6 +3,9 @@ package com.example;
|
|
|
3
3
|
import com.facebook.react.ReactActivity;
|
|
4
4
|
import com.facebook.react.ReactActivityDelegate;
|
|
5
5
|
import com.facebook.react.ReactRootView;
|
|
6
|
+
import semusi.activitysdk.ContextSdk
|
|
7
|
+
import semusi.context.utility.PushClickData
|
|
8
|
+
import semusi.context.utility.Utility
|
|
6
9
|
|
|
7
10
|
public class MainActivity extends ReactActivity {
|
|
8
11
|
|
|
@@ -45,4 +48,13 @@ public class MainActivity extends ReactActivity {
|
|
|
45
48
|
return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;
|
|
46
49
|
}
|
|
47
50
|
}
|
|
51
|
+
override fun onResume() {
|
|
52
|
+
super.onResume()
|
|
53
|
+
AppICEUtils.handleAppICEPayload(intent, getApplicationContext());
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
override fun onNewIntent(intent: Intent) {
|
|
57
|
+
super.onNewIntent(intent)
|
|
58
|
+
AppICEUtils.handleAppICEPayload(intent, getApplicationContext())
|
|
59
|
+
}
|
|
48
60
|
}
|