react-native-notify-kit 10.0.0 → 10.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/README.md +168 -100
- package/android/build.gradle +2 -2
- package/android/src/androidTest/java/app/notifee/core/RebootRecoveryTest.java +94 -2
- package/android/src/main/AndroidManifest.xml +8 -7
- package/android/src/main/java/app/notifee/core/ForegroundService.java +1 -0
- package/android/src/main/java/app/notifee/core/NotificationManager.java +8 -0
- package/android/src/main/java/app/notifee/core/RebootBroadcastReceiver.java +16 -0
- package/android/src/main/java/app/notifee/core/model/NotificationAndroidModel.java +8 -3
- package/android/src/main/java/app/notifee/core/model/TimestampTriggerModel.java +42 -27
- package/android/src/main/java/app/notifee/core/utility/ResourceUtils.java +30 -1
- package/android/src/main/kotlin/io/invertase/notifee/NotifeeApiModule.kt +6 -6
- package/android/src/test/java/app/notifee/core/model/NotificationAndroidModelSmallIconFallbackTest.java +74 -0
- package/android/src/test/java/app/notifee/core/model/TimestampTriggerModelTest.java +154 -0
- package/android/src/test/java/app/notifee/core/utility/ResourceUtilsFallbackIconTest.java +116 -0
- package/dist/types/Module.d.ts +7 -7
- package/dist/types/Notification.d.ts +1 -1
- package/dist/types/NotificationIOS.d.ts +44 -21
- package/dist/types/NotificationIOS.js +15 -1
- package/dist/types/NotificationIOS.js.map +1 -1
- package/dist/types/Trigger.d.ts +45 -2
- package/dist/types/Trigger.js +22 -0
- package/dist/types/Trigger.js.map +1 -1
- package/dist/validators/validateIOSCategory.js +2 -2
- package/dist/validators/validateIOSCategory.js.map +1 -1
- package/dist/validators/validateTrigger.js +42 -1
- package/dist/validators/validateTrigger.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/ios/NotifeeCore/NotifeeCore+NSNotificationCenter.m +20 -10
- package/ios/NotifeeCore/NotifeeCore+UNUserNotificationCenter.h +1 -2
- package/ios/NotifeeCore/NotifeeCore+UNUserNotificationCenter.m +44 -35
- package/ios/NotifeeCore/NotifeeCore.m +1035 -99
- package/ios/NotifeeCore/NotifeeCoreUtil.h +36 -1
- package/ios/NotifeeCore/NotifeeCoreUtil.m +533 -9
- package/ios/RNNotifee/NotifeeApiModule.mm +2 -2
- package/package.json +1 -1
- package/server/README.md +4 -4
- package/src/types/Module.ts +7 -7
- package/src/types/Notification.ts +1 -1
- package/src/types/NotificationIOS.ts +43 -28
- package/src/types/Trigger.ts +45 -1
- package/src/validators/validateIOSCategory.ts +4 -2
- package/src/validators/validateTrigger.ts +62 -0
- package/src/version.ts +1 -1
|
@@ -86,10 +86,10 @@ export default function validateIOSCategory(category) {
|
|
|
86
86
|
if (!isArray(category.intentIdentifiers)) {
|
|
87
87
|
throw new Error("'category.intentIdentifiers' expected an array value.");
|
|
88
88
|
}
|
|
89
|
-
const identifiers = Object.values(IOSIntentIdentifier);
|
|
89
|
+
const identifiers = Object.values(IOSIntentIdentifier).filter((identifier) => typeof identifier === 'number');
|
|
90
90
|
for (let i = 0; i < category.intentIdentifiers.length; i++) {
|
|
91
91
|
const intentIdentifier = category.intentIdentifiers[i];
|
|
92
|
-
if (!identifiers.includes(intentIdentifier)) {
|
|
92
|
+
if (typeof intentIdentifier !== 'number' || !identifiers.includes(intentIdentifier)) {
|
|
93
93
|
throw new Error(`'category.intentIdentifiers' unexpected intentIdentifier "${intentIdentifier}" at array index "${i}".`);
|
|
94
94
|
}
|
|
95
95
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateIOSCategory.js","sourceRoot":"","sources":["../../src/validators/validateIOSCategory.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"validateIOSCategory.js","sourceRoot":"","sources":["../../src/validators/validateIOSCategory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* Copyright (c) 2016-present Invertase Limited
|
|
3
3
|
*/
|
|
4
|
-
import { objectHasProperty, isNumber, isObject, isValidEnum, isUndefined, isBoolean, } from '../utils';
|
|
4
|
+
import { objectHasProperty, isNumber, isObject, isValidEnum, isUndefined, isBoolean, isAndroid, } from '../utils';
|
|
5
5
|
import { TimeUnit, RepeatFrequency, TriggerType, AlarmType, } from '../types/Trigger';
|
|
6
6
|
const MINIMUM_INTERVAL = 15;
|
|
7
7
|
function isMinimumInterval(interval, timeUnit) {
|
|
@@ -30,10 +30,26 @@ export default function validateTrigger(trigger) {
|
|
|
30
30
|
throw new Error('Unknown trigger type');
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
|
+
// Smallest plausible epoch-ms value for a future trigger. 1e12 ms ≈ Sep 2001;
|
|
34
|
+
// anything smaller is almost certainly the wrong unit (seconds-since-epoch,
|
|
35
|
+
// or a Date.getDate() day-of-month). We intercept the three common shapes
|
|
36
|
+
// and emit targeted hints — see upstream invertase/notifee#872 for the
|
|
37
|
+
// year-after-year UX pattern this guards against.
|
|
38
|
+
const MIN_PLAUSIBLE_EPOCH_MS = 1e12;
|
|
39
|
+
const MIN_PLAUSIBLE_EPOCH_SECONDS = 1e9;
|
|
33
40
|
function validateTimestampTrigger(trigger) {
|
|
34
41
|
if (!isNumber(trigger.timestamp)) {
|
|
35
42
|
throw new Error("'trigger.timestamp' expected a number value.");
|
|
36
43
|
}
|
|
44
|
+
if (trigger.timestamp < MIN_PLAUSIBLE_EPOCH_MS) {
|
|
45
|
+
if (trigger.timestamp >= 1 && trigger.timestamp <= 31) {
|
|
46
|
+
throw new Error(`'trigger.timestamp' looks like a day-of-month (${trigger.timestamp}). Did you mean \`date.getTime()\` instead of \`date.getDate()\`?`);
|
|
47
|
+
}
|
|
48
|
+
if (trigger.timestamp >= MIN_PLAUSIBLE_EPOCH_SECONDS) {
|
|
49
|
+
throw new Error(`'trigger.timestamp' looks like seconds since epoch (${trigger.timestamp}). Notifee expects milliseconds — multiply by 1000, or use \`Date.now()\` / \`date.getTime()\`.`);
|
|
50
|
+
}
|
|
51
|
+
throw new Error(`'trigger.timestamp' (${trigger.timestamp}) is too small to be a valid epoch millisecond value. Use \`Date.now()\` or \`someDate.getTime()\`.`);
|
|
52
|
+
}
|
|
37
53
|
const now = Date.now();
|
|
38
54
|
if (trigger.timestamp <= now) {
|
|
39
55
|
throw new Error("'trigger.timestamp' date must be in the future.");
|
|
@@ -49,6 +65,26 @@ function validateTimestampTrigger(trigger) {
|
|
|
49
65
|
}
|
|
50
66
|
out.repeatFrequency = trigger.repeatFrequency;
|
|
51
67
|
}
|
|
68
|
+
const hasRepeatFrequency = objectHasProperty(trigger, 'repeatFrequency') && !isUndefined(trigger.repeatFrequency);
|
|
69
|
+
const isRepeating = hasRepeatFrequency && trigger.repeatFrequency !== RepeatFrequency.NONE;
|
|
70
|
+
if (objectHasProperty(trigger, 'repeatInterval') && !isUndefined(trigger.repeatInterval)) {
|
|
71
|
+
if (!hasRepeatFrequency) {
|
|
72
|
+
throw new Error("'trigger.repeatInterval' requires a repeatFrequency value.");
|
|
73
|
+
}
|
|
74
|
+
if (trigger.repeatFrequency === RepeatFrequency.NONE) {
|
|
75
|
+
throw new Error("'trigger.repeatInterval' requires a repeating repeatFrequency value.");
|
|
76
|
+
}
|
|
77
|
+
if (!isNumber(trigger.repeatInterval) ||
|
|
78
|
+
!Number.isFinite(trigger.repeatInterval) ||
|
|
79
|
+
!Number.isInteger(trigger.repeatInterval) ||
|
|
80
|
+
trigger.repeatInterval <= 0) {
|
|
81
|
+
throw new Error("'trigger.repeatInterval' expected a positive integer value.");
|
|
82
|
+
}
|
|
83
|
+
out.repeatInterval = trigger.repeatInterval;
|
|
84
|
+
}
|
|
85
|
+
else if (isRepeating) {
|
|
86
|
+
out.repeatInterval = 1;
|
|
87
|
+
}
|
|
52
88
|
if (objectHasProperty(trigger, 'alarmManager') && !isUndefined(trigger.alarmManager)) {
|
|
53
89
|
if (isBoolean(trigger.alarmManager)) {
|
|
54
90
|
if (trigger.alarmManager) {
|
|
@@ -69,6 +105,11 @@ function validateTimestampTrigger(trigger) {
|
|
|
69
105
|
// Default to AlarmManager for reliable delivery when app is killed
|
|
70
106
|
out.alarmManager = validateTimestampAlarmManager();
|
|
71
107
|
}
|
|
108
|
+
if (isAndroid &&
|
|
109
|
+
trigger.alarmManager === false &&
|
|
110
|
+
out.repeatFrequency === RepeatFrequency.MONTHLY) {
|
|
111
|
+
throw new Error("'trigger.repeatFrequency' MONTHLY is not supported when 'trigger.alarmManager' is false.");
|
|
112
|
+
}
|
|
72
113
|
return out;
|
|
73
114
|
}
|
|
74
115
|
function validateTimestampAlarmManager(alarmManager) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateTrigger.js","sourceRoot":"","sources":["../../src/validators/validateTrigger.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validateTrigger.js","sourceRoot":"","sources":["../../src/validators/validateTrigger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,iBAAiB,EACjB,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,WAAW,EACX,SAAS,EACT,SAAS,GACV,MAAM,UAAU,CAAC;AAClB,OAAO,EAEL,QAAQ,EACR,eAAe,EAGf,WAAW,EAEX,SAAS,GACV,MAAM,kBAAkB,CAAC;AAE1B,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAE5B,SAAS,iBAAiB,CAAC,QAAgB,EAAE,QAAa;IACxD,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,QAAQ,CAAC,OAAO;YACnB,OAAO,QAAQ,GAAG,EAAE,IAAI,gBAAgB,CAAC;QAC3C,KAAK,QAAQ,CAAC,OAAO;YACnB,OAAO,QAAQ,IAAI,gBAAgB,CAAC;QACtC,KAAK,QAAQ,CAAC,KAAK;YACjB,OAAO,QAAQ,IAAI,CAAC,CAAC;QACvB,KAAK,QAAQ,CAAC,IAAI;YAChB,OAAO,QAAQ,IAAI,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,OAAgB;IACtD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IAED,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,WAAW,CAAC,SAAS;YACxB,OAAO,wBAAwB,CAAC,OAAO,CAAC,CAAC;QAC3C,KAAK,WAAW,CAAC,QAAQ;YACvB,OAAO,uBAAuB,CAAC,OAAO,CAAC,CAAC;QAC1C;YACE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,4EAA4E;AAC5E,0EAA0E;AAC1E,uEAAuE;AACvE,kDAAkD;AAClD,MAAM,sBAAsB,GAAG,IAAI,CAAC;AACpC,MAAM,2BAA2B,GAAG,GAAG,CAAC;AAExC,SAAS,wBAAwB,CAAC,OAAyB;IACzD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,OAAO,CAAC,SAAS,GAAG,sBAAsB,EAAE,CAAC;QAC/C,IAAI,OAAO,CAAC,SAAS,IAAI,CAAC,IAAI,OAAO,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CACb,kDAAkD,OAAO,CAAC,SAAS,mEAAmE,CACvI,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,CAAC,SAAS,IAAI,2BAA2B,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CACb,uDAAuD,OAAO,CAAC,SAAS,iGAAiG,CAC1K,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,KAAK,CACb,wBAAwB,OAAO,CAAC,SAAS,qGAAqG,CAC/I,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,IAAI,OAAO,CAAC,SAAS,IAAI,GAAG,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,GAAG,GAAqB;QAC5B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,eAAe,EAAE,CAAC,CAAC;KACpB,CAAC;IAEF,IAAI,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;QAC3F,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,eAAe,EAAE,eAAe,CAAC,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;QACjF,CAAC;QAED,GAAG,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IAChD,CAAC;IAED,MAAM,kBAAkB,GACtB,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IACzF,MAAM,WAAW,GAAG,kBAAkB,IAAI,OAAO,CAAC,eAAe,KAAK,eAAe,CAAC,IAAI,CAAC;IAE3F,IAAI,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;QACzF,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAChF,CAAC;QAED,IAAI,OAAO,CAAC,eAAe,KAAK,eAAe,CAAC,IAAI,EAAE,CAAC;YACrD,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;QAC1F,CAAC;QAED,IACE,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC;YACjC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC;YACxC,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,cAAc,CAAC;YACzC,OAAO,CAAC,cAAc,IAAI,CAAC,EAC3B,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;QACjF,CAAC;QAED,GAAG,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IAC9C,CAAC;SAAM,IAAI,WAAW,EAAE,CAAC;QACvB,GAAG,CAAC,cAAc,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,IAAI,iBAAiB,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QACrF,IAAI,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YACpC,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;gBACzB,GAAG,CAAC,YAAY,GAAG,6BAA6B,EAAE,CAAC;YACrD,CAAC;YACD,yDAAyD;QAC3D,CAAC;aAAM,CAAC;YACN,IAAI,CAAC;gBACH,GAAG,CAAC,YAAY,GAAG,6BAA6B,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACzE,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,mEAAmE;QACnE,GAAG,CAAC,YAAY,GAAG,6BAA6B,EAAE,CAAC;IACrD,CAAC;IAED,IACE,SAAS;QACT,OAAO,CAAC,YAAY,KAAK,KAAK;QAC9B,GAAG,CAAC,eAAe,KAAK,eAAe,CAAC,OAAO,EAC/C,CAAC;QACD,MAAM,IAAI,KAAK,CACb,0FAA0F,CAC3F,CAAC;IACJ,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,6BAA6B,CACpC,YAA2C;IAE3C,MAAM,GAAG,GAAiC;QACxC,IAAI,EAAE,SAAS,CAAC,8BAA8B;KAC/C,CAAC;IACF,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,GAAG,CAAC;IACb,CAAC;IACD,IAAI,SAAS,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,YAAY,CAAC,cAAc,EAAE,CAAC;QAC1E,GAAG,CAAC,IAAI,GAAG,SAAS,CAAC,8BAA8B,CAAC;IACtD,CAAC;IAED,IAAI,iBAAiB,CAAC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/E,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;QACrE,CAAC;QACD,GAAG,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;IAC/B,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,uBAAuB,CAAC,OAAwB;IACvD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,GAAG,GAAoB;QAC3B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,QAAQ,EAAE,QAAQ,CAAC,OAAO;KAC3B,CAAC;IAEF,IAAI,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7E,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,CAAC;QACD,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,CAAC;IAED,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const version = "10.
|
|
1
|
+
export declare const version = "10.2.0";
|
package/dist/version.js
CHANGED
|
@@ -18,6 +18,11 @@
|
|
|
18
18
|
#import <UIKit/UIKit.h>
|
|
19
19
|
#import "NotifeeCore+NSNotificationCenter.h"
|
|
20
20
|
#import "NotifeeCore+UNUserNotificationCenter.h"
|
|
21
|
+
#import "NotifeeCore.h"
|
|
22
|
+
|
|
23
|
+
@interface NotifeeCore (RollingTimestampTopUp)
|
|
24
|
+
+ (void)topUpRollingTimestampTriggersWithCompletion:(void (^)(NSError *error))completion;
|
|
25
|
+
@end
|
|
21
26
|
|
|
22
27
|
@implementation NotifeeCoreNSNotificationCenter
|
|
23
28
|
|
|
@@ -42,6 +47,11 @@
|
|
|
42
47
|
selector:@selector(application_onDidFinishLaunchingNotification:)
|
|
43
48
|
name:UIApplicationDidFinishLaunchingNotification
|
|
44
49
|
object:nil];
|
|
50
|
+
[[NSNotificationCenter defaultCenter]
|
|
51
|
+
addObserver:strongSelf
|
|
52
|
+
selector:@selector(application_didBecomeActiveNotification:)
|
|
53
|
+
name:UIApplicationDidBecomeActiveNotification
|
|
54
|
+
object:nil];
|
|
45
55
|
[[NSNotificationCenter defaultCenter]
|
|
46
56
|
addObserver:strongSelf
|
|
47
57
|
selector:@selector(messaging_didReceiveRemoteNotification:)
|
|
@@ -58,21 +68,21 @@
|
|
|
58
68
|
#pragma mark Application Notifications
|
|
59
69
|
|
|
60
70
|
- (void)application_onDidFinishLaunchingNotification:(nonnull NSNotification *)notification {
|
|
61
|
-
|
|
62
|
-
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
|
|
63
|
-
// UIApplicationLaunchOptionsLocalNotificationKey is deprecated since iOS 10.
|
|
64
|
-
// On modern iOS, initial notification is delivered via didReceiveNotificationResponse:
|
|
65
|
-
// which sets _initialNotification and _notificationOpenedAppID directly.
|
|
66
|
-
// This legacy path only works for UILocalNotification (pre-iOS 10).
|
|
67
|
-
UILocalNotification *launchNotification =
|
|
68
|
-
(UILocalNotification *)notification.userInfo[UIApplicationLaunchOptionsLocalNotificationKey];
|
|
69
|
-
[[NotifeeCoreUNUserNotificationCenter instance]
|
|
70
|
-
onDidFinishLaunchingNotification:launchNotification.userInfo];
|
|
71
|
+
[[NotifeeCoreUNUserNotificationCenter instance] markInitialNotificationGathered];
|
|
71
72
|
[[NotifeeCoreUNUserNotificationCenter instance] getInitialNotification];
|
|
72
73
|
|
|
73
74
|
[[NotifeeCoreUNUserNotificationCenter instance] observe];
|
|
74
75
|
}
|
|
75
76
|
|
|
77
|
+
- (void)application_didBecomeActiveNotification:(nonnull NSNotification *)notification {
|
|
78
|
+
[NotifeeCore topUpRollingTimestampTriggersWithCompletion:^(NSError *error) {
|
|
79
|
+
if (error != nil) {
|
|
80
|
+
NSLog(@"NotifeeCore: Failed to top up rolling timestamp triggers after app became active: %@",
|
|
81
|
+
error);
|
|
82
|
+
}
|
|
83
|
+
}];
|
|
84
|
+
}
|
|
85
|
+
|
|
76
86
|
- (void)messaging_didReceiveRemoteNotification:(nonnull NSNotification *)notification {
|
|
77
87
|
// Intentionally empty: remote notifications are handled via
|
|
78
88
|
// UNUserNotificationCenterDelegate (willPresentNotification:,
|
|
@@ -30,7 +30,6 @@ NS_ASSUME_NONNULL_BEGIN
|
|
|
30
30
|
@property(strong, nullable) NSDictionary *initialNotification;
|
|
31
31
|
@property bool initialNotificationGathered;
|
|
32
32
|
@property(nullable) notifeeMethodNSDictionaryBlock initialNotificationBlock;
|
|
33
|
-
@property NSString *initialNoticationID;
|
|
34
33
|
@property NSString *notificationOpenedAppID;
|
|
35
34
|
|
|
36
35
|
+ (_Nonnull instancetype)instance;
|
|
@@ -39,7 +38,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|
|
39
38
|
|
|
40
39
|
- (nullable NSDictionary *)getInitialNotification;
|
|
41
40
|
|
|
42
|
-
- (void)
|
|
41
|
+
- (void)markInitialNotificationGathered;
|
|
43
42
|
|
|
44
43
|
@end
|
|
45
44
|
|
|
@@ -17,9 +17,14 @@
|
|
|
17
17
|
|
|
18
18
|
#import "NotifeeCore+UNUserNotificationCenter.h"
|
|
19
19
|
|
|
20
|
+
#import "NotifeeCore.h"
|
|
20
21
|
#import "NotifeeCoreDelegateHolder.h"
|
|
21
22
|
#import "NotifeeCoreUtil.h"
|
|
22
23
|
|
|
24
|
+
@interface NotifeeCore (RollingTimestampTopUp)
|
|
25
|
+
+ (void)topUpRollingTimestampTriggersWithCompletion:(void (^)(NSError *error))completion;
|
|
26
|
+
@end
|
|
27
|
+
|
|
23
28
|
@implementation NotifeeCoreUNUserNotificationCenter
|
|
24
29
|
|
|
25
30
|
struct {
|
|
@@ -63,12 +68,7 @@ struct {
|
|
|
63
68
|
});
|
|
64
69
|
}
|
|
65
70
|
|
|
66
|
-
- (void)
|
|
67
|
-
if (notifUserInfo != nil) {
|
|
68
|
-
NSDictionary *notifeeNotification = notifUserInfo[kNotifeeUserInfoNotification];
|
|
69
|
-
_initialNoticationID = notifeeNotification[@"id"];
|
|
70
|
-
}
|
|
71
|
-
|
|
71
|
+
- (void)markInitialNotificationGathered {
|
|
72
72
|
_initialNotificationGathered = YES;
|
|
73
73
|
}
|
|
74
74
|
|
|
@@ -89,6 +89,24 @@ struct {
|
|
|
89
89
|
return nil;
|
|
90
90
|
}
|
|
91
91
|
|
|
92
|
+
- (BOOL)isRollingTimestampNotificationRequest:(UNNotificationRequest *)request {
|
|
93
|
+
if ([NotifeeCoreUtil isRollingInternalNotificationId:request.identifier]) {
|
|
94
|
+
return YES;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
NSDictionary *trigger = request.content.userInfo[kNotifeeUserInfoTrigger];
|
|
98
|
+
return [NotifeeCoreUtil isRollingTimestampTrigger:trigger];
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
- (void)topUpRollingTimestampTriggersForLifecycleEvent:(NSString *)eventName {
|
|
102
|
+
[NotifeeCore topUpRollingTimestampTriggersWithCompletion:^(NSError *error) {
|
|
103
|
+
if (error != nil) {
|
|
104
|
+
NSLog(@"NotifeeCore: Failed to top up rolling timestamp triggers after %@: %@", eventName,
|
|
105
|
+
error);
|
|
106
|
+
}
|
|
107
|
+
}];
|
|
108
|
+
}
|
|
109
|
+
|
|
92
110
|
#pragma mark - UNUserNotificationCenter Delegate Methods
|
|
93
111
|
|
|
94
112
|
// The method will be called on the delegate only if the application is in the
|
|
@@ -103,6 +121,8 @@ struct {
|
|
|
103
121
|
(void (^)(UNNotificationPresentationOptions options))completionHandler {
|
|
104
122
|
NSDictionary *notifeeNotification =
|
|
105
123
|
notification.request.content.userInfo[kNotifeeUserInfoNotification];
|
|
124
|
+
BOOL isRollingTimestampNotification =
|
|
125
|
+
[self isRollingTimestampNotificationRequest:notification.request];
|
|
106
126
|
|
|
107
127
|
// we only care about notifications created through notifee
|
|
108
128
|
if (notifeeNotification != nil) {
|
|
@@ -127,25 +147,16 @@ struct {
|
|
|
127
147
|
// if list or banner is true, ignore alert property
|
|
128
148
|
if (banner || list) {
|
|
129
149
|
if (banner) {
|
|
130
|
-
|
|
131
|
-
presentationOptions |= UNNotificationPresentationOptionBanner;
|
|
132
|
-
} else {
|
|
133
|
-
// for iOS 13 we need to set alert
|
|
134
|
-
presentationOptions |= UNNotificationPresentationOptionAlert;
|
|
135
|
-
}
|
|
150
|
+
presentationOptions |= UNNotificationPresentationOptionBanner;
|
|
136
151
|
}
|
|
137
152
|
|
|
138
153
|
if (list) {
|
|
139
|
-
|
|
140
|
-
presentationOptions |= UNNotificationPresentationOptionList;
|
|
141
|
-
} else {
|
|
142
|
-
// for iOS 13 we need to set alert
|
|
143
|
-
presentationOptions |= UNNotificationPresentationOptionAlert;
|
|
144
|
-
}
|
|
154
|
+
presentationOptions |= UNNotificationPresentationOptionList;
|
|
145
155
|
}
|
|
146
156
|
} else if (alert) {
|
|
147
157
|
// TODO: remove alert once it has been fully removed from the notifee API
|
|
148
|
-
presentationOptions |=
|
|
158
|
+
presentationOptions |=
|
|
159
|
+
UNNotificationPresentationOptionBanner | UNNotificationPresentationOptionList;
|
|
149
160
|
}
|
|
150
161
|
|
|
151
162
|
// Emit DELIVERED for every Notifee-owned notification presented in foreground.
|
|
@@ -160,6 +171,9 @@ struct {
|
|
|
160
171
|
}];
|
|
161
172
|
|
|
162
173
|
completionHandler(presentationOptions);
|
|
174
|
+
if (isRollingTimestampNotification) {
|
|
175
|
+
[self topUpRollingTimestampTriggersForLifecycleEvent:@"foreground delivery"];
|
|
176
|
+
}
|
|
163
177
|
|
|
164
178
|
} else if (_originalDelegate != nil && originalUNCDelegateRespondsTo.willPresentNotification) {
|
|
165
179
|
[_originalDelegate userNotificationCenter:center
|
|
@@ -174,15 +188,9 @@ struct {
|
|
|
174
188
|
// @react-native-firebase/messaging). Fall back to the platform default
|
|
175
189
|
// presentation options instead so the system shows the notification as it
|
|
176
190
|
// would if Notifee had not installed a delegate at all.
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
UNNotificationPresentationOptionList | UNNotificationPresentationOptionBadge);
|
|
181
|
-
} else {
|
|
182
|
-
completionHandler(UNNotificationPresentationOptionAlert |
|
|
183
|
-
UNNotificationPresentationOptionSound |
|
|
184
|
-
UNNotificationPresentationOptionBadge);
|
|
185
|
-
}
|
|
191
|
+
completionHandler(UNNotificationPresentationOptionBanner |
|
|
192
|
+
UNNotificationPresentationOptionSound | UNNotificationPresentationOptionList |
|
|
193
|
+
UNNotificationPresentationOptionBadge);
|
|
186
194
|
}
|
|
187
195
|
}
|
|
188
196
|
|
|
@@ -195,6 +203,8 @@ struct {
|
|
|
195
203
|
withCompletionHandler:(void (^)(void))completionHandler {
|
|
196
204
|
NSDictionary *notifeeNotification =
|
|
197
205
|
response.notification.request.content.userInfo[kNotifeeUserInfoNotification];
|
|
206
|
+
BOOL isRollingTimestampNotification =
|
|
207
|
+
[self isRollingTimestampNotificationRequest:response.notification.request];
|
|
198
208
|
|
|
199
209
|
_notificationOpenedAppID = notifeeNotification[@"id"];
|
|
200
210
|
|
|
@@ -234,6 +244,9 @@ struct {
|
|
|
234
244
|
}
|
|
235
245
|
}];
|
|
236
246
|
completionHandler();
|
|
247
|
+
if (isRollingTimestampNotification) {
|
|
248
|
+
[self topUpRollingTimestampTriggersForLifecycleEvent:@"notification response"];
|
|
249
|
+
}
|
|
237
250
|
return;
|
|
238
251
|
}
|
|
239
252
|
|
|
@@ -272,16 +285,12 @@ struct {
|
|
|
272
285
|
// store notification for getInitialNotification
|
|
273
286
|
_initialNotification = [eventDetail copy];
|
|
274
287
|
|
|
275
|
-
// post PRESS/ACTION_PRESS event
|
|
276
|
-
// Set is initial notification to true
|
|
277
|
-
if (_notificationOpenedAppID != nil && _initialNoticationID != nil &&
|
|
278
|
-
[_initialNoticationID isEqualToString:_notificationOpenedAppID]) {
|
|
279
|
-
eventDetail[@"initialNotification"] = @1;
|
|
280
|
-
}
|
|
281
|
-
|
|
282
288
|
[[NotifeeCoreDelegateHolder instance] didReceiveNotifeeCoreEvent:event];
|
|
283
289
|
|
|
284
290
|
completionHandler();
|
|
291
|
+
if (isRollingTimestampNotification) {
|
|
292
|
+
[self topUpRollingTimestampTriggersForLifecycleEvent:@"notification response"];
|
|
293
|
+
}
|
|
285
294
|
} else {
|
|
286
295
|
// Defensive: parseUNNotificationRequest: currently never returns nil,
|
|
287
296
|
// but if it did, the completionHandler contract must still be honored.
|