react-native-notify-kit 10.7.2 → 10.8.1
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/README.md +2 -0
- package/android/src/main/java/app/notifee/core/ForegroundService.java +944 -93
- package/android/src/test/java/app/notifee/core/ForegroundServiceTest.java +4281 -57
- package/android/src/test/java/app/notifee/core/NotificationManagerActionRoutingTest.java +37 -0
- package/dist/fcm/parseFcmPayload.d.ts +1 -0
- package/dist/fcm/parseFcmPayload.js.map +1 -1
- package/dist/fcm/reconstructNotification.js +96 -8
- package/dist/fcm/reconstructNotification.js.map +1 -1
- package/dist/types/Notification.d.ts +25 -1
- package/dist/types/Notification.js +10 -0
- package/dist/types/Notification.js.map +1 -1
- package/dist/validators/validateAndroidPressAction.js +3 -0
- package/dist/validators/validateAndroidPressAction.js.map +1 -1
- package/dist/validators/validateIOSNotification.js +5 -2
- package/dist/validators/validateIOSNotification.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/ios/NotifeeCore/NotifeeCore.m +36 -3
- package/ios/NotifeeCore/NotifeeCoreExtensionHelper.m +82 -3
- package/ios/NotifeeCore/NotifeeCoreFcmIdentity.h +91 -0
- package/package.json +1 -1
- package/server/README.md +5 -3
- package/server/dist/buildPayload.d.ts.map +1 -1
- package/server/dist/buildPayload.js +2 -0
- package/server/dist/buildPayload.js.map +1 -1
- package/server/dist/ios.d.ts.map +1 -1
- package/server/dist/ios.js +8 -1
- package/server/dist/ios.js.map +1 -1
- package/server/dist/serialize.d.ts +2 -0
- package/server/dist/serialize.d.ts.map +1 -1
- package/server/dist/serialize.js +6 -0
- package/server/dist/serialize.js.map +1 -1
- package/server/dist/types.d.ts +1 -1
- package/server/dist/types.d.ts.map +1 -1
- package/server/dist/validation.d.ts.map +1 -1
- package/server/dist/validation.js +160 -6
- package/server/dist/validation.js.map +1 -1
- package/server/src/buildPayload.ts +2 -0
- package/server/src/ios.ts +8 -1
- package/server/src/serialize.ts +8 -0
- package/server/src/types.ts +1 -0
- package/server/src/validation.ts +187 -6
- package/src/fcm/parseFcmPayload.ts +1 -0
- package/src/fcm/reconstructNotification.ts +105 -10
- package/src/internal/fcmContract.d.ts +57 -12
- package/src/types/Notification.ts +27 -0
- package/src/validators/validateAndroidPressAction.ts +4 -0
- package/src/validators/validateIOSNotification.ts +7 -2
- package/src/version.ts +1 -1
|
@@ -21,6 +21,7 @@ import static app.notifee.core.event.NotificationEvent.TYPE_ACTION_PRESS;
|
|
|
21
21
|
import static org.junit.Assert.assertEquals;
|
|
22
22
|
import static org.junit.Assert.assertNotNull;
|
|
23
23
|
import static org.junit.Assert.assertTrue;
|
|
24
|
+
import static org.mockito.Mockito.mock;
|
|
24
25
|
|
|
25
26
|
import android.Manifest;
|
|
26
27
|
import android.app.Activity;
|
|
@@ -34,10 +35,13 @@ import android.content.pm.ActivityInfo;
|
|
|
34
35
|
import android.content.pm.ResolveInfo;
|
|
35
36
|
import android.os.Build;
|
|
36
37
|
import android.os.Bundle;
|
|
38
|
+
import androidx.work.impl.WorkManagerImpl;
|
|
37
39
|
import app.notifee.core.event.MainComponentEvent;
|
|
38
40
|
import app.notifee.core.model.NotificationModel;
|
|
39
41
|
import com.google.common.util.concurrent.ListenableFuture;
|
|
40
42
|
import java.util.ArrayList;
|
|
43
|
+
import java.util.Collections;
|
|
44
|
+
import java.util.List;
|
|
41
45
|
import java.util.concurrent.TimeUnit;
|
|
42
46
|
import org.junit.After;
|
|
43
47
|
import org.junit.Before;
|
|
@@ -82,6 +86,39 @@ public class NotificationManagerActionRoutingTest {
|
|
|
82
86
|
ShadowPendingIntent.reset();
|
|
83
87
|
}
|
|
84
88
|
|
|
89
|
+
@Test
|
|
90
|
+
public void sameLogicalId_isNativeDisplayReadbackAndCancelIdentity() throws Exception {
|
|
91
|
+
String logicalId = "logical-42";
|
|
92
|
+
NotificationModel first =
|
|
93
|
+
buildNotificationModel(logicalId, buildPressAction("open", null, null));
|
|
94
|
+
NotificationModel second =
|
|
95
|
+
buildNotificationModel(logicalId, buildPressAction("reply", null, null));
|
|
96
|
+
|
|
97
|
+
displayNotification(first);
|
|
98
|
+
displayNotification(second);
|
|
99
|
+
|
|
100
|
+
android.app.NotificationManager nativeManager =
|
|
101
|
+
(android.app.NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
|
|
102
|
+
assertEquals(1, nativeManager.getActiveNotifications().length);
|
|
103
|
+
assertEquals(logicalId.hashCode(), nativeManager.getActiveNotifications()[0].getId());
|
|
104
|
+
|
|
105
|
+
List<Bundle> displayed =
|
|
106
|
+
NotificationManager.getDisplayedNotifications().get(5, TimeUnit.SECONDS);
|
|
107
|
+
assertEquals(1, displayed.size());
|
|
108
|
+
assertEquals(logicalId, displayed.get(0).getString("id"));
|
|
109
|
+
assertEquals(logicalId, displayed.get(0).getBundle("notification").getString("id"));
|
|
110
|
+
|
|
111
|
+
WorkManagerImpl.setDelegate(mock(WorkManagerImpl.class));
|
|
112
|
+
try {
|
|
113
|
+
NotificationManager.cancelAllNotificationsWithIds(
|
|
114
|
+
1, Collections.singletonList(logicalId), null)
|
|
115
|
+
.get(5, TimeUnit.SECONDS);
|
|
116
|
+
assertEquals(0, nativeManager.getActiveNotifications().length);
|
|
117
|
+
} finally {
|
|
118
|
+
WorkManagerImpl.setDelegate(null);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
85
122
|
@Test
|
|
86
123
|
public void displayNotification_android12PlusNoLaunchAction_routesToReceiverService()
|
|
87
124
|
throws Exception {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseFcmPayload.js","sourceRoot":"","sources":["../../src/fcm/parseFcmPayload.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,GAAG,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"parseFcmPayload.js","sourceRoot":"","sources":["../../src/fcm/parseFcmPayload.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,GAAG,2BAA2B,CAAC;AAY3C;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,IAAwC;IACtE,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,eAAe,KAAK,QAAQ,EAAE,CAAC;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,MAAqB,CAAC;IAC1B,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CACV,GAAG,MAAM,qCAAqC,MAAM,mCAAmC,CACxF,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3E,OAAO,CAAC,IAAI,CACV,GAAG,MAAM,gFAAgF,CAC1F,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,sEAAsE;IACtE,iDAAiD;IACjD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACrC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QAChD,OAAO,CAAC,IAAI,CACV,GAAG,MAAM,4BAA4B,UAAU,gEAAgE,CAChH,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -12,6 +12,41 @@ const STYLE_TYPE_MAP = {
|
|
|
12
12
|
BIG_TEXT: AndroidStyle.BIGTEXT,
|
|
13
13
|
BIG_PICTURE: AndroidStyle.BIGPICTURE,
|
|
14
14
|
};
|
|
15
|
+
const ANDROID_INPUT_KEYS = new Set([
|
|
16
|
+
'allowFreeFormInput',
|
|
17
|
+
'allowGeneratedReplies',
|
|
18
|
+
'choices',
|
|
19
|
+
'editableChoices',
|
|
20
|
+
'placeholder',
|
|
21
|
+
]);
|
|
22
|
+
function assertFcmPressAction(value, path) {
|
|
23
|
+
if (value === null || typeof value !== 'object' || Array.isArray(value)) {
|
|
24
|
+
throw new Error(`${PREFIX} ${path} must be an object`);
|
|
25
|
+
}
|
|
26
|
+
const pressAction = value;
|
|
27
|
+
if (typeof pressAction.id !== 'string' || pressAction.id.length === 0) {
|
|
28
|
+
throw new Error(`${PREFIX} ${path}.id must be a non-empty string`);
|
|
29
|
+
}
|
|
30
|
+
if (pressAction.id === '__NOTIFEE_OPT_OUT__') {
|
|
31
|
+
throw new Error(`${PREFIX} ${path}.id is reserved for explicit null`);
|
|
32
|
+
}
|
|
33
|
+
if (pressAction.launchActivity !== undefined && typeof pressAction.launchActivity !== 'string') {
|
|
34
|
+
throw new Error(`${PREFIX} ${path}.launchActivity must be a string`);
|
|
35
|
+
}
|
|
36
|
+
if (pressAction.mainComponent !== undefined && typeof pressAction.mainComponent !== 'string') {
|
|
37
|
+
throw new Error(`${PREFIX} ${path}.mainComponent must be a string`);
|
|
38
|
+
}
|
|
39
|
+
if (pressAction.launchActivityFlags !== undefined) {
|
|
40
|
+
if (!Array.isArray(pressAction.launchActivityFlags)) {
|
|
41
|
+
throw new Error(`${PREFIX} ${path}.launchActivityFlags must be an array`);
|
|
42
|
+
}
|
|
43
|
+
for (const flag of pressAction.launchActivityFlags) {
|
|
44
|
+
if (typeof flag !== 'number' || !Number.isInteger(flag) || flag < 0 || flag > 20) {
|
|
45
|
+
throw new Error(`${PREFIX} ${path}.launchActivityFlags contains an invalid flag`);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
15
50
|
/**
|
|
16
51
|
* Reconstructs a {@link Notification} object suitable for
|
|
17
52
|
* `displayNotification` from the parsed FCM payload + config defaults.
|
|
@@ -27,6 +62,9 @@ export function reconstructNotification(parsed, remoteMessage, config) {
|
|
|
27
62
|
title,
|
|
28
63
|
body,
|
|
29
64
|
};
|
|
65
|
+
if (typeof parsed?.subtitle === 'string') {
|
|
66
|
+
notification.subtitle = parsed.subtitle;
|
|
67
|
+
}
|
|
30
68
|
if (Object.keys(data).length > 0) {
|
|
31
69
|
notification.data = data;
|
|
32
70
|
}
|
|
@@ -81,9 +119,13 @@ function buildAndroidConfig(raw, config) {
|
|
|
81
119
|
if (typeof channelId === 'string') {
|
|
82
120
|
android.channelId = channelId;
|
|
83
121
|
}
|
|
84
|
-
//
|
|
85
|
-
const pressAction = raw?.pressAction
|
|
86
|
-
if (pressAction
|
|
122
|
+
// Explicit null opts out of the body tap; only absence uses the configured default.
|
|
123
|
+
const pressAction = raw?.pressAction === undefined ? config.defaultPressAction : raw.pressAction;
|
|
124
|
+
if (pressAction === null) {
|
|
125
|
+
android.pressAction = null;
|
|
126
|
+
}
|
|
127
|
+
else if (pressAction !== undefined) {
|
|
128
|
+
assertFcmPressAction(pressAction, 'android.pressAction');
|
|
87
129
|
android.pressAction = pressAction;
|
|
88
130
|
}
|
|
89
131
|
// Direct string copies
|
|
@@ -91,6 +133,9 @@ function buildAndroidConfig(raw, config) {
|
|
|
91
133
|
android.smallIcon = raw.smallIcon;
|
|
92
134
|
if (typeof raw?.largeIcon === 'string')
|
|
93
135
|
android.largeIcon = raw.largeIcon;
|
|
136
|
+
if (typeof raw?.circularLargeIcon === 'boolean') {
|
|
137
|
+
android.circularLargeIcon = raw.circularLargeIcon;
|
|
138
|
+
}
|
|
94
139
|
if (typeof raw?.color === 'string')
|
|
95
140
|
android.color = raw.color;
|
|
96
141
|
// Timestamp fields — preserve only values accepted by the canonical Android validator
|
|
@@ -99,9 +144,39 @@ function buildAndroidConfig(raw, config) {
|
|
|
99
144
|
if (typeof raw?.timestamp === 'number' && isValidTimestamp(raw.timestamp)) {
|
|
100
145
|
android.timestamp = raw.timestamp;
|
|
101
146
|
}
|
|
102
|
-
//
|
|
103
|
-
|
|
104
|
-
|
|
147
|
+
// Legacy input:false means no reply. Other malformed inputs must fail here:
|
|
148
|
+
// the normal validator accepts some of them as a default RemoteInput.
|
|
149
|
+
if (raw?.actions !== undefined) {
|
|
150
|
+
if (!Array.isArray(raw.actions)) {
|
|
151
|
+
throw new Error(`${PREFIX} android.actions must be an array`);
|
|
152
|
+
}
|
|
153
|
+
android.actions = raw.actions.map((action, index) => {
|
|
154
|
+
if (action === null || typeof action !== 'object' || Array.isArray(action)) {
|
|
155
|
+
return action;
|
|
156
|
+
}
|
|
157
|
+
if (action.pressAction !== undefined) {
|
|
158
|
+
assertFcmPressAction(action.pressAction, `android.actions[${index}].pressAction`);
|
|
159
|
+
}
|
|
160
|
+
const input = action.input;
|
|
161
|
+
if (input === false) {
|
|
162
|
+
const withoutInput = { ...action };
|
|
163
|
+
delete withoutInput.input;
|
|
164
|
+
return withoutInput;
|
|
165
|
+
}
|
|
166
|
+
if (input !== undefined &&
|
|
167
|
+
input !== true &&
|
|
168
|
+
(input === null || typeof input !== 'object' || Array.isArray(input))) {
|
|
169
|
+
throw new Error(`${PREFIX} android.actions[${index}].input is invalid`);
|
|
170
|
+
}
|
|
171
|
+
if (input !== undefined && input !== true) {
|
|
172
|
+
for (const key of Object.keys(input)) {
|
|
173
|
+
if (!ANDROID_INPUT_KEYS.has(key)) {
|
|
174
|
+
throw new Error(`${PREFIX} android.actions[${index}].input.${key} is unsupported`);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
return action;
|
|
179
|
+
});
|
|
105
180
|
}
|
|
106
181
|
// Style — enum mapping with defense-in-depth for unknown types
|
|
107
182
|
if (raw?.style && typeof raw.style === 'object') {
|
|
@@ -110,10 +185,23 @@ function buildAndroidConfig(raw, config) {
|
|
|
110
185
|
const mappedType = STYLE_TYPE_MAP[style.type];
|
|
111
186
|
if (mappedType !== undefined) {
|
|
112
187
|
if (mappedType === AndroidStyle.BIGTEXT && typeof style.text === 'string') {
|
|
113
|
-
android.style = {
|
|
188
|
+
android.style = {
|
|
189
|
+
type: AndroidStyle.BIGTEXT,
|
|
190
|
+
text: style.text,
|
|
191
|
+
...(typeof style.title === 'string' ? { title: style.title } : {}),
|
|
192
|
+
...(typeof style.summary === 'string' ? { summary: style.summary } : {}),
|
|
193
|
+
};
|
|
114
194
|
}
|
|
115
195
|
else if (mappedType === AndroidStyle.BIGPICTURE && typeof style.picture === 'string') {
|
|
116
|
-
android.style = {
|
|
196
|
+
android.style = {
|
|
197
|
+
type: AndroidStyle.BIGPICTURE,
|
|
198
|
+
picture: style.picture,
|
|
199
|
+
...(typeof style.title === 'string' ? { title: style.title } : {}),
|
|
200
|
+
...(typeof style.summary === 'string' ? { summary: style.summary } : {}),
|
|
201
|
+
...(style.largeIcon === null || typeof style.largeIcon === 'string'
|
|
202
|
+
? { largeIcon: style.largeIcon }
|
|
203
|
+
: {}),
|
|
204
|
+
};
|
|
117
205
|
}
|
|
118
206
|
else {
|
|
119
207
|
const field = mappedType === AndroidStyle.BIGTEXT ? 'text' : 'picture';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reconstructNotification.js","sourceRoot":"","sources":["../../src/fcm/reconstructNotification.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAuB,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAEjF,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAI1D,MAAM,MAAM,GAAG,2BAA2B,CAAC;AAC3C,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC,CAAC;AAExE,MAAM,yBAAyB,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC;AAE9F,MAAM,cAAc,GAA6C;IAC/D,QAAQ,EAAE,YAAY,CAAC,OAAO;IAC9B,WAAW,EAAE,YAAY,CAAC,UAAU;CACrC,CAAC;
|
|
1
|
+
{"version":3,"file":"reconstructNotification.js","sourceRoot":"","sources":["../../src/fcm/reconstructNotification.ts"],"names":[],"mappings":"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"}
|
|
@@ -371,7 +371,17 @@ export declare enum EventType {
|
|
|
371
371
|
*
|
|
372
372
|
* Event type is sent when a notification wants to start a foreground service but a foreground service is already started.
|
|
373
373
|
*/
|
|
374
|
-
FG_ALREADY_EXIST = 8
|
|
374
|
+
FG_ALREADY_EXIST = 8,
|
|
375
|
+
/**
|
|
376
|
+
* Event type for an Android Foreground Service timeout handled by the native timeout path.
|
|
377
|
+
*
|
|
378
|
+
* Delivery to JavaScript is best-effort; JavaScript execution is not guaranteed.
|
|
379
|
+
* This event does not confirm completed Android service teardown, guarantee cancellation of
|
|
380
|
+
* JavaScript work, or authorize a new Foreground Service start.
|
|
381
|
+
*
|
|
382
|
+
* @platform android
|
|
383
|
+
*/
|
|
384
|
+
FG_TIMEOUT = 9
|
|
375
385
|
}
|
|
376
386
|
/**
|
|
377
387
|
* An interface representing the different detail values which can be provided with a notification event.
|
|
@@ -390,6 +400,7 @@ export interface EventDetail {
|
|
|
390
400
|
* - [`EventType.DELIVERED`](/react-native/reference/eventtype#delivered)
|
|
391
401
|
* - [`EventType.TRIGGER_NOTIFICATION_CREATED`](/react-native/reference/eventtype#trigger_notification_created)
|
|
392
402
|
* - [`EventType.FG_ALREADY_EXIST`](/react-native/reference/eventtype#fg_already_exist)
|
|
403
|
+
* - [`EventType.FG_TIMEOUT`](/react-native/reference/eventtype#fg_timeout)
|
|
393
404
|
*/
|
|
394
405
|
notification?: Notification;
|
|
395
406
|
/**
|
|
@@ -443,6 +454,19 @@ export interface EventDetail {
|
|
|
443
454
|
* @platform android API Level >= 28
|
|
444
455
|
*/
|
|
445
456
|
blocked?: boolean;
|
|
457
|
+
/**
|
|
458
|
+
* The start command identifier reported by Android's timeout callback for `EventType.FG_TIMEOUT`.
|
|
459
|
+
*
|
|
460
|
+
* @platform android
|
|
461
|
+
*/
|
|
462
|
+
startId?: number;
|
|
463
|
+
/**
|
|
464
|
+
* The Foreground Service type reported by Android's timeout callback for `EventType.FG_TIMEOUT`.
|
|
465
|
+
* A value of `-1` is preserved when the callback overload does not provide an explicit type.
|
|
466
|
+
*
|
|
467
|
+
* @platform android
|
|
468
|
+
*/
|
|
469
|
+
fgsType?: number;
|
|
446
470
|
}
|
|
447
471
|
/**
|
|
448
472
|
* An enum representing the notification authorization status for this app on the device.
|
|
@@ -77,6 +77,16 @@ export var EventType;
|
|
|
77
77
|
* Event type is sent when a notification wants to start a foreground service but a foreground service is already started.
|
|
78
78
|
*/
|
|
79
79
|
EventType[EventType["FG_ALREADY_EXIST"] = 8] = "FG_ALREADY_EXIST";
|
|
80
|
+
/**
|
|
81
|
+
* Event type for an Android Foreground Service timeout handled by the native timeout path.
|
|
82
|
+
*
|
|
83
|
+
* Delivery to JavaScript is best-effort; JavaScript execution is not guaranteed.
|
|
84
|
+
* This event does not confirm completed Android service teardown, guarantee cancellation of
|
|
85
|
+
* JavaScript work, or authorize a new Foreground Service start.
|
|
86
|
+
*
|
|
87
|
+
* @platform android
|
|
88
|
+
*/
|
|
89
|
+
EventType[EventType["FG_TIMEOUT"] = 9] = "FG_TIMEOUT";
|
|
80
90
|
})(EventType || (EventType = {}));
|
|
81
91
|
/**
|
|
82
92
|
* An enum representing the notification authorization status for this app on the device.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Notification.js","sourceRoot":"","sources":["../../src/types/Notification.ts"],"names":[],"mappings":"AAAA;;GAEG;AA6UH;;;;;GAKG;AACH,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"Notification.js","sourceRoot":"","sources":["../../src/types/Notification.ts"],"names":[],"mappings":"AAAA;;GAEG;AA6UH;;;;;GAKG;AACH,MAAM,CAAN,IAAY,SAyFX;AAzFD,WAAY,SAAS;IACnB;;;;;OAKG;IACH,gDAAY,CAAA;IAEZ;;;;;;;OAOG;IACH,mDAAa,CAAA;IAEb;;;;;;;;;OASG;IACH,2CAAS,CAAA;IAET;;OAEG;IACH,yDAAgB,CAAA;IAEhB;;;;;;OAMG;IACH,mDAAa,CAAA;IAEb;;;;;OAKG;IACH,uDAAe,CAAA;IAEf;;;;OAIG;IACH,+DAAmB,CAAA;IAEnB;;;;OAIG;IACH,2EAAyB,CAAA;IAEzB;;OAEG;IACH,yFAAgC,CAAA;IAEhC;;;;OAIG;IACH,iEAAoB,CAAA;IAEpB;;;;;;;;OAQG;IACH,qDAAc,CAAA;AAChB,CAAC,EAzFW,SAAS,KAAT,SAAS,QAyFpB;AA+FD;;;;;;GAMG;AACH,MAAM,CAAN,IAAY,mBA0BX;AA1BD,WAAY,mBAAmB;IAC7B;;;;;;;OAOG;IACH,kFAAmB,CAAA;IAEnB;;OAEG;IACH,iEAAU,CAAA;IAEV;;OAEG;IACH,yEAAc,CAAA;IAEd;;;OAGG;IACH,2EAAe,CAAA;AACjB,CAAC,EA1BW,mBAAmB,KAAnB,mBAAmB,QA0B9B"}
|
|
@@ -11,6 +11,9 @@ export default function validateAndroidPressAction(pressAction) {
|
|
|
11
11
|
if (!isString(pressAction.id) || pressAction.id.length === 0) {
|
|
12
12
|
throw new Error("'id' expected a non-empty string value.");
|
|
13
13
|
}
|
|
14
|
+
if (pressAction.id === '__NOTIFEE_OPT_OUT__') {
|
|
15
|
+
throw new Error("'id' is reserved for an explicit null pressAction.");
|
|
16
|
+
}
|
|
14
17
|
const out = {
|
|
15
18
|
id: pressAction.id,
|
|
16
19
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateAndroidPressAction.js","sourceRoot":"","sources":["../../src/validators/validateAndroidPressAction.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAE9E,MAAM,6BAA6B,GAAG,SAAS,CAAC;AAChD,MAAM,0BAA0B,GAAG,SAAS,CAAC;AAE7C,MAAM,CAAC,OAAO,UAAU,0BAA0B,CAChD,WAAoC;IAEpC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,WAAW,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,GAAG,GAA4B;QACnC,EAAE,EAAE,WAAW,CAAC,EAAE;KACnB,CAAC;IAEF,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC;QAC7C,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,CAAC;QAED,GAAG,CAAC,cAAc,GAAG,WAAW,CAAC,cAAc,CAAC;IAClD,CAAC;SAAM,IAAI,WAAW,CAAC,EAAE,KAAK,0BAA0B,EAAE,CAAC;QACzD,uCAAuC;QACvC,GAAG,CAAC,cAAc,GAAG,6BAA6B,CAAC;IACrD,CAAC;IAED,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAClD,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CACb,+EAA+E,CAChF,CAAC;QACJ,CAAC;QAED,wCAAwC;QACxC,IAAI,WAAW,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC;YAC3C,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClD,MAAM,IAAI,KAAK,CACb,+EAA+E,CAChF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,GAAG,CAAC,mBAAmB,GAAG,WAAW,CAAC,mBAAmB,CAAC;IAC5D,CAAC;IAED,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC;QAC5C,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QAED,GAAG,CAAC,aAAa,GAAG,WAAW,CAAC,aAAa,CAAC;IAChD,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
1
|
+
{"version":3,"file":"validateAndroidPressAction.js","sourceRoot":"","sources":["../../src/validators/validateAndroidPressAction.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAE9E,MAAM,6BAA6B,GAAG,SAAS,CAAC;AAChD,MAAM,0BAA0B,GAAG,SAAS,CAAC;AAE7C,MAAM,CAAC,OAAO,UAAU,0BAA0B,CAChD,WAAoC;IAEpC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,WAAW,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,WAAW,CAAC,EAAE,KAAK,qBAAqB,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,GAAG,GAA4B;QACnC,EAAE,EAAE,WAAW,CAAC,EAAE;KACnB,CAAC;IAEF,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC;QAC7C,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,CAAC;QAED,GAAG,CAAC,cAAc,GAAG,WAAW,CAAC,cAAc,CAAC;IAClD,CAAC;SAAM,IAAI,WAAW,CAAC,EAAE,KAAK,0BAA0B,EAAE,CAAC;QACzD,uCAAuC;QACvC,GAAG,CAAC,cAAc,GAAG,6BAA6B,CAAC;IACrD,CAAC;IAED,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAClD,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CACb,+EAA+E,CAChF,CAAC;QACJ,CAAC;QAED,wCAAwC;QACxC,IAAI,WAAW,CAAC,mBAAmB,CAAC,MAAM,EAAE,CAAC;YAC3C,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClD,MAAM,IAAI,KAAK,CACb,+EAA+E,CAChF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,GAAG,CAAC,mBAAmB,GAAG,WAAW,CAAC,mBAAmB,CAAC;IAC5D,CAAC;IAED,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC;QAC5C,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;QAED,GAAG,CAAC,aAAa,GAAG,WAAW,CAAC,aAAa,CAAC;IAChD,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -102,8 +102,11 @@ export default function validateIOSNotification(ios) {
|
|
|
102
102
|
/**
|
|
103
103
|
* badgeCount
|
|
104
104
|
*/
|
|
105
|
-
if (objectHasProperty(ios, 'badgeCount')) {
|
|
106
|
-
if (!isNumber(ios.badgeCount) ||
|
|
105
|
+
if (objectHasProperty(ios, 'badgeCount') && ios.badgeCount !== null) {
|
|
106
|
+
if (!isNumber(ios.badgeCount) ||
|
|
107
|
+
!Number.isFinite(ios.badgeCount) ||
|
|
108
|
+
!Number.isInteger(ios.badgeCount) ||
|
|
109
|
+
ios.badgeCount < 0) {
|
|
107
110
|
throw new Error("'notification.ios.badgeCount' expected a number value >=0.");
|
|
108
111
|
}
|
|
109
112
|
out.badgeCount = ios.badgeCount;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateIOSNotification.js","sourceRoot":"","sources":["../../src/validators/validateIOSNotification.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,OAAO,EACL,iBAAiB,EACjB,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,OAAO,EACP,SAAS,GACV,MAAM,UAAU,CAAC;AAClB,OAAO,4BAA4B,MAAM,qDAAqD,CAAC;AAC/F,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAE5D,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAAC,GAAqB;IACnE,MAAM,GAAG,GAEL;QACF,6BAA6B,EAAE;YAC7B,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,IAAI;SACX;KACF,CAAC;IAEF,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,2CAA2C;IAC3C,IAAI,SAAS,IAAI,CAAC,OAAO;QAAE,OAAO,GAAG,CAAC;IAEtC;;OAEG;IACH,IAAI,iBAAiB,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,CAAC;QAC1C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;QAC7E,CAAC;QAED,MAAM,WAAW,GAAgC,EAAE,CAAC;QAEpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChD,IAAI,CAAC;gBACH,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9D,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CACb,qEAAqE,CAAC,CAAC,OAAO,GAAG,CAClF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;YACvB,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC;QAChC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAI,iBAAiB,CAAC,GAAG,EAAE,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACvF,IAAI,CAAC;YACH,GAAG,CAAC,iBAAiB,GAAG,4BAA4B,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC9E,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAI,iBAAiB,CAAC,GAAG,EAAE,mBAAmB,CAAC,EAAE,CAAC;QAChD,IACE,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC;YAC/B,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAClF,CAAC;YACD,GAAG,CAAC,iBAAiB,GAAG,GAAG,CAAC,iBAAiB,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CACb,6GAA6G,CAC9G,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAI,iBAAiB,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,CAAC;QACvC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;QACvF,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;QAC9B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAI,iBAAiB,CAAC,GAAG,EAAE,gBAAgB,CAAC,EAAE,CAAC;QAC7C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;QAC5F,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,CAAC,cAAc,GAAG,CAAC,IAAI,GAAG,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC;gBACrD,MAAM,IAAI,KAAK,CACb,8EAA8E,CAC/E,CAAC;YACJ,CAAC;YACD,GAAG,CAAC,cAAc,GAAG,GAAG,CAAC,cAAc,CAAC;QAC1C,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAI,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC;QACpC,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACxB,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAI,iBAAiB,CAAC,GAAG,EAAE,YAAY,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"validateIOSNotification.js","sourceRoot":"","sources":["../../src/validators/validateIOSNotification.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const version = "10.
|
|
1
|
+
export declare const version = "10.8.1";
|
package/dist/version.js
CHANGED
|
@@ -24,6 +24,7 @@
|
|
|
24
24
|
#import "NotifeeCore.h"
|
|
25
25
|
#import "NotifeeCoreDelegateHolder.h"
|
|
26
26
|
#import "NotifeeCoreExtensionHelper.h"
|
|
27
|
+
#import "NotifeeCoreFcmIdentity.h"
|
|
27
28
|
#import "NotifeeCoreUtil.h"
|
|
28
29
|
|
|
29
30
|
@interface NotifeeCoreUNUserNotificationCenter (Rechain)
|
|
@@ -144,6 +145,11 @@ typedef NS_ENUM(NSInteger, NotifeeCoreRollingErrorCode) {
|
|
|
144
145
|
return rollingPublicId;
|
|
145
146
|
}
|
|
146
147
|
|
|
148
|
+
NSString *fcmLogicalId = NotifeeFcmLogicalIdForRequest(request);
|
|
149
|
+
if (fcmLogicalId != nil) {
|
|
150
|
+
return fcmLogicalId;
|
|
151
|
+
}
|
|
152
|
+
|
|
147
153
|
NSString *identifier = request.identifier;
|
|
148
154
|
if ([self isPotentialRollingInternalNotificationId:identifier]) {
|
|
149
155
|
return nil;
|
|
@@ -193,6 +199,14 @@ typedef NS_ENUM(NSInteger, NotifeeCoreRollingErrorCode) {
|
|
|
193
199
|
deliveredNotifications:(NSArray<UNNotification *> *)deliveredNotifications
|
|
194
200
|
record:(NSDictionary *)record {
|
|
195
201
|
NSMutableOrderedSet<NSString *> *identifiers = [NSMutableOrderedSet orderedSet];
|
|
202
|
+
NSMutableArray<UNNotificationRequest *> *requests = [NSMutableArray array];
|
|
203
|
+
for (UNNotification *notification in deliveredNotifications) {
|
|
204
|
+
[requests addObject:notification.request];
|
|
205
|
+
}
|
|
206
|
+
for (NSString *physicalId in NotifeeFcmIdentifiersForLogicalId(requests, publicId)) {
|
|
207
|
+
[self addString:physicalId toOrderedSet:identifiers];
|
|
208
|
+
}
|
|
209
|
+
BOOL removeDirectIdentifier = NotifeeShouldRemoveDirectIdentifierForLogicalId(requests, publicId);
|
|
196
210
|
|
|
197
211
|
NSArray *scheduledIds = record[@"scheduledIds"];
|
|
198
212
|
if ([scheduledIds isKindOfClass:NSArray.class]) {
|
|
@@ -204,7 +218,7 @@ typedef NS_ENUM(NSInteger, NotifeeCoreRollingErrorCode) {
|
|
|
204
218
|
for (UNNotification *notification in deliveredNotifications) {
|
|
205
219
|
UNNotificationRequest *request = notification.request;
|
|
206
220
|
NSString *identifier = request.identifier;
|
|
207
|
-
if ([identifier isEqualToString:publicId]) {
|
|
221
|
+
if (removeDirectIdentifier && [identifier isEqualToString:publicId]) {
|
|
208
222
|
[self addString:identifier toOrderedSet:identifiers];
|
|
209
223
|
continue;
|
|
210
224
|
}
|
|
@@ -873,7 +887,13 @@ typedef NS_ENUM(NSInteger, NotifeeCoreRollingErrorCode) {
|
|
|
873
887
|
[self rollingDeliveredIdentifiersForPublicId:notificationId
|
|
874
888
|
deliveredNotifications:deliveredNotifications
|
|
875
889
|
record:record];
|
|
876
|
-
[
|
|
890
|
+
NSMutableArray<UNNotificationRequest *> *requests = [NSMutableArray array];
|
|
891
|
+
for (UNNotification *notification in deliveredNotifications) {
|
|
892
|
+
[requests addObject:notification.request];
|
|
893
|
+
}
|
|
894
|
+
if (NotifeeShouldRemoveDirectIdentifierForLogicalId(requests, notificationId)) {
|
|
895
|
+
[self addString:notificationId toOrderedSet:deliveredIdentifiersToRemove];
|
|
896
|
+
}
|
|
877
897
|
if ([deliveredIdentifiersToRemove count] > 0) {
|
|
878
898
|
[center removeDeliveredNotificationsWithIdentifiers:[deliveredIdentifiersToRemove array]];
|
|
879
899
|
}
|
|
@@ -935,7 +955,13 @@ typedef NS_ENUM(NSInteger, NotifeeCoreRollingErrorCode) {
|
|
|
935
955
|
deliveredNotifications:deliveredNotifications
|
|
936
956
|
record:record];
|
|
937
957
|
[deliveredIdentifiersToRemove unionOrderedSet:rollingDeliveredIdentifiers];
|
|
938
|
-
[
|
|
958
|
+
NSMutableArray<UNNotificationRequest *> *requests = [NSMutableArray array];
|
|
959
|
+
for (UNNotification *notification in deliveredNotifications) {
|
|
960
|
+
[requests addObject:notification.request];
|
|
961
|
+
}
|
|
962
|
+
if (NotifeeShouldRemoveDirectIdentifierForLogicalId(requests, publicId)) {
|
|
963
|
+
[self addString:publicId toOrderedSet:deliveredIdentifiersToRemove];
|
|
964
|
+
}
|
|
939
965
|
}
|
|
940
966
|
|
|
941
967
|
if (cancelTrigger) {
|
|
@@ -1050,6 +1076,13 @@ typedef NS_ENUM(NSInteger, NotifeeCoreRollingErrorCode) {
|
|
|
1050
1076
|
triggerNotification[@"notification"] = publicNotification;
|
|
1051
1077
|
}
|
|
1052
1078
|
|
|
1079
|
+
NSString *fcmLogicalId = NotifeeFcmLogicalIdForRequest(request);
|
|
1080
|
+
if (fcmLogicalId != nil && [notification isKindOfClass:NSDictionary.class]) {
|
|
1081
|
+
NSMutableDictionary *publicNotification = [notification mutableCopy];
|
|
1082
|
+
publicNotification[@"id"] = fcmLogicalId;
|
|
1083
|
+
triggerNotification[@"notification"] = publicNotification;
|
|
1084
|
+
}
|
|
1085
|
+
|
|
1053
1086
|
[triggerNotifications addObject:triggerNotification];
|
|
1054
1087
|
}
|
|
1055
1088
|
block(nil, triggerNotifications);
|
|
@@ -22,9 +22,18 @@
|
|
|
22
22
|
|
|
23
23
|
static NSString *const kNoExtension = @"";
|
|
24
24
|
static NSString *const kImagePathPrefix = @"image/";
|
|
25
|
+
static NSString *const kPayloadDataName = @"notifee_data";
|
|
25
26
|
static NSTimeInterval const kNotifeeExtensionOrchestrationTimeoutInterval = 25.0;
|
|
26
27
|
static NSTimeInterval const kNotifeeExtensionFinalizationReserveInterval = 5.0;
|
|
27
28
|
|
|
29
|
+
static BOOL IsFcmTransportKey(NSString *key) {
|
|
30
|
+
return [key isEqualToString:@"aps"] || [key isEqualToString:@"from"] ||
|
|
31
|
+
[key isEqualToString:@"collapse_key"] || [key isEqualToString:@"message_type"] ||
|
|
32
|
+
[key isEqualToString:@"message_id"] || [key isEqualToString:@"fcm_options"] ||
|
|
33
|
+
[key hasPrefix:@"android."] || [key hasPrefix:@"google."] || [key hasPrefix:@"gcm."] ||
|
|
34
|
+
[key hasPrefix:@"fcm."] || [key hasPrefix:@"notifee"];
|
|
35
|
+
}
|
|
36
|
+
|
|
28
37
|
@interface NotifeeCoreUtil (NotifeeCoreExtensionHelper)
|
|
29
38
|
+ (INSendMessageIntent *)generateSenderIntentForCommunicationNotification:
|
|
30
39
|
(NSDictionary *)communicationInfo
|
|
@@ -33,6 +42,7 @@ static NSTimeInterval const kNotifeeExtensionFinalizationReserveInterval = 5.0;
|
|
|
33
42
|
|
|
34
43
|
@interface NotifeeCoreExtensionHelper ()
|
|
35
44
|
- (NSMutableDictionary *)parseNotifeeOptions:(id)payload;
|
|
45
|
+
- (NSDictionary *)parseNotifeeData:(id)payload;
|
|
36
46
|
- (NSTimeInterval)orchestrationTimeoutInterval;
|
|
37
47
|
- (dispatch_time_t)orchestrationCurrentTime;
|
|
38
48
|
- (void)scheduleOrchestrationFinalizerAtDeadline:(dispatch_time_t)deadline
|
|
@@ -96,7 +106,9 @@ static NSTimeInterval const kNotifeeExtensionFinalizationReserveInterval = 5.0;
|
|
|
96
106
|
}
|
|
97
107
|
|
|
98
108
|
- (void)populateNotificationContentWithRequest:(UNNotificationRequest *_Nullable)request {
|
|
99
|
-
|
|
109
|
+
NSDictionary *originalUserInfo = [self.modifiedContent.userInfo copy];
|
|
110
|
+
NSNumber *originalBadge = self.modifiedContent.badge;
|
|
111
|
+
id notifeeOptionsPayload = originalUserInfo[kPayloadOptionsName];
|
|
100
112
|
if (!notifeeOptionsPayload) {
|
|
101
113
|
[self deliverNotification];
|
|
102
114
|
return;
|
|
@@ -109,10 +121,28 @@ static NSTimeInterval const kNotifeeExtensionFinalizationReserveInterval = 5.0;
|
|
|
109
121
|
return;
|
|
110
122
|
}
|
|
111
123
|
|
|
124
|
+
NSDictionary *iosOptions =
|
|
125
|
+
[options[@"ios"] isKindOfClass:[NSDictionary class]] ? options[@"ios"] : nil;
|
|
126
|
+
if (iosOptions[@"badgeCount"] == [NSNull null]) {
|
|
127
|
+
NSMutableDictionary *normalizedIOSOptions = [iosOptions mutableCopy];
|
|
128
|
+
[normalizedIOSOptions removeObjectForKey:@"badgeCount"];
|
|
129
|
+
options[@"ios"] = normalizedIOSOptions;
|
|
130
|
+
iosOptions = normalizedIOSOptions;
|
|
131
|
+
}
|
|
132
|
+
|
|
112
133
|
options[@"remote"] = @YES;
|
|
113
134
|
|
|
114
|
-
//
|
|
115
|
-
|
|
135
|
+
// The server sends custom data outside notifee_options so it can share the
|
|
136
|
+
// same _v:1 options blob with Android. Preserve every server-supported key
|
|
137
|
+
// in notification.data, even when its name collides with APNs metadata.
|
|
138
|
+
NSDictionary *parsedData = [self.helper parseNotifeeData:originalUserInfo[kPayloadDataName]];
|
|
139
|
+
if (parsedData != nil) {
|
|
140
|
+
NSMutableDictionary *data = [options[@"data"] isKindOfClass:[NSDictionary class]]
|
|
141
|
+
? [options[@"data"] mutableCopy]
|
|
142
|
+
: [NSMutableDictionary dictionary];
|
|
143
|
+
[data addEntriesFromDictionary:parsedData];
|
|
144
|
+
options[@"data"] = data;
|
|
145
|
+
} else if (options[@"data"] == nil) {
|
|
116
146
|
options[@"data"] = [NSDictionary dictionary];
|
|
117
147
|
}
|
|
118
148
|
|
|
@@ -130,6 +160,26 @@ static NSTimeInterval const kNotifeeExtensionFinalizationReserveInterval = 5.0;
|
|
|
130
160
|
}
|
|
131
161
|
|
|
132
162
|
self.modifiedContent = [NotifeeCore buildNotificationContent:options withTrigger:nil];
|
|
163
|
+
|
|
164
|
+
// The builder creates NotifyKit event metadata. Its user data takes legacy
|
|
165
|
+
// precedence over outer userInfo, while incoming APNs/FCM keys remain
|
|
166
|
+
// authoritative at the top level.
|
|
167
|
+
NSMutableDictionary *mergedUserInfo = [originalUserInfo mutableCopy];
|
|
168
|
+
NSDictionary *builtUserInfo = self.modifiedContent.userInfo;
|
|
169
|
+
for (id key in builtUserInfo) {
|
|
170
|
+
if ([key isKindOfClass:[NSString class]] && !IsFcmTransportKey(key) &&
|
|
171
|
+
![key isEqualToString:kNotifeeUserInfoNotification] &&
|
|
172
|
+
![key isEqualToString:kNotifeeUserInfoTrigger]) {
|
|
173
|
+
mergedUserInfo[key] = builtUserInfo[key];
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
mergedUserInfo[kNotifeeUserInfoNotification] = builtUserInfo[kNotifeeUserInfoNotification];
|
|
177
|
+
// This NSE path builds withTrigger:nil; no top-level trigger is authoritative.
|
|
178
|
+
[mergedUserInfo removeObjectForKey:kNotifeeUserInfoTrigger];
|
|
179
|
+
self.modifiedContent.userInfo = mergedUserInfo;
|
|
180
|
+
if (originalBadge != nil && iosOptions[@"badgeCount"] == nil) {
|
|
181
|
+
self.modifiedContent.badge = originalBadge;
|
|
182
|
+
}
|
|
133
183
|
[self startOrchestrationWithOptions:options];
|
|
134
184
|
}
|
|
135
185
|
|
|
@@ -438,6 +488,35 @@ static NSTimeInterval const kNotifeeExtensionFinalizationReserveInterval = 5.0;
|
|
|
438
488
|
return nil;
|
|
439
489
|
}
|
|
440
490
|
|
|
491
|
+
- (NSDictionary *)parseNotifeeData:(id)payload {
|
|
492
|
+
if (payload == nil) {
|
|
493
|
+
return nil;
|
|
494
|
+
}
|
|
495
|
+
if (![payload isKindOfClass:[NSString class]]) {
|
|
496
|
+
NSLog(@"NotifeeCoreExtensionHelper: Ignoring notifee_data because it is not a JSON string");
|
|
497
|
+
return @{};
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
NSData *data = [payload dataUsingEncoding:NSUTF8StringEncoding];
|
|
501
|
+
NSError *error = nil;
|
|
502
|
+
id jsonObject =
|
|
503
|
+
data == nil ? nil : [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];
|
|
504
|
+
if (![jsonObject isKindOfClass:[NSDictionary class]]) {
|
|
505
|
+
NSLog(@"NotifeeCoreExtensionHelper: Ignoring invalid notifee_data JSON");
|
|
506
|
+
return @{};
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
NSMutableDictionary *customData = [NSMutableDictionary dictionary];
|
|
510
|
+
for (id key in jsonObject) {
|
|
511
|
+
id value = jsonObject[key];
|
|
512
|
+
if ([key isKindOfClass:[NSString class]] && [value isKindOfClass:[NSString class]] &&
|
|
513
|
+
![key isEqualToString:kPayloadOptionsName] && ![key isEqualToString:kPayloadDataName]) {
|
|
514
|
+
customData[key] = value;
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
return customData;
|
|
518
|
+
}
|
|
519
|
+
|
|
441
520
|
- (void)populateNotificationContent:(UNNotificationRequest *_Nullable)request
|
|
442
521
|
withContent:(UNMutableNotificationContent *)content
|
|
443
522
|
withContentHandler:(void (^)(UNNotificationContent *_Nonnull))contentHandler {
|