react-native-notify-kit 10.8.0 → 10.9.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 +34 -17
- package/android/build.gradle +50 -4
- package/android/src/main/AndroidManifest.xml +4 -0
- package/android/src/main/java/app/notifee/core/ForegroundService.java +1002 -58
- package/android/src/main/java/app/notifee/core/ForegroundServiceRunLimitReceiver.java +15 -0
- package/android/src/main/java/app/notifee/core/ForegroundServiceRunLimitScheduler.java +461 -0
- package/android/src/main/java/app/notifee/core/NotificationManager.java +6 -0
- package/android/src/main/java/app/notifee/core/event/NotificationEvent.java +6 -0
- package/android/src/main/java/app/notifee/core/model/NotificationAndroidModel.java +29 -0
- package/android/src/main/kotlin/io/invertase/notifee/NotifeeEventSubscriber.kt +3 -0
- package/android/src/test/java/app/notifee/core/ForegroundServiceRunLimitTest.java +2357 -0
- package/android/src/test/java/app/notifee/core/ForegroundServiceTest.java +3093 -21
- package/android/src/test/java/app/notifee/core/ShadowServiceCompatibilityTest.java +170 -0
- package/android/src/test/resources/robolectric.properties +4 -0
- package/cli/dist/cli.js +0 -1
- package/cli/dist/commands/initNse.js +1 -2
- package/cli/dist/lib/detectProject.js +1 -2
- package/cli/dist/lib/initNseCore.js +0 -1
- package/cli/dist/lib/logger.js +0 -1
- package/cli/dist/lib/patchPodfile.js +0 -1
- package/cli/dist/lib/patchXcodeProject.js +22 -3
- package/cli/dist/lib/writeTemplates.js +0 -1
- package/cli/dist/lib/xcode.js +6 -0
- package/cli/dist/templates/NotificationService.swift.tmpl +74 -6
- package/cli/package.json +1 -0
- package/cli/vendor/xcode/AUTHORS +6 -0
- package/cli/vendor/xcode/LICENSE +202 -0
- package/cli/vendor/xcode/NOTICE +5 -0
- package/cli/vendor/xcode/README.md +32 -0
- package/cli/vendor/xcode/UPSTREAM-SHA256.json +12 -0
- package/cli/vendor/xcode/index.js +18 -0
- package/cli/vendor/xcode/lib/parseJob.js +32 -0
- package/cli/vendor/xcode/lib/parser/pbxproj.js +1904 -0
- package/cli/vendor/xcode/lib/parser/pbxproj.pegjs +280 -0
- package/cli/vendor/xcode/lib/pbxFile.js +233 -0
- package/cli/vendor/xcode/lib/pbxProject.js +2205 -0
- package/cli/vendor/xcode/lib/pbxWriter.js +309 -0
- package/dist/NotifeeNativeModule.web.d.ts +2 -2
- package/dist/types/Notification.d.ts +36 -1
- package/dist/types/Notification.js +13 -0
- package/dist/types/Notification.js.map +1 -1
- package/dist/types/NotificationAndroid.d.ts +9 -0
- package/dist/types/NotificationAndroid.js.map +1 -1
- package/dist/validators/validateAndroidNotification.js +26 -1
- package/dist/validators/validateAndroidNotification.js.map +1 -1
- package/dist/validators/validateAndroidStyle.js +6 -0
- package/dist/validators/validateAndroidStyle.js.map +1 -1
- package/dist/validators/validateIOSAttachment.js +3 -1
- package/dist/validators/validateIOSAttachment.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +8 -5
- package/src/NotifeeNativeModule.web.ts +2 -2
- package/src/types/Notification.ts +40 -0
- package/src/types/NotificationAndroid.ts +10 -0
- package/src/validators/validateAndroidNotification.ts +31 -1
- package/src/validators/validateAndroidStyle.ts +10 -2
- package/src/validators/validateIOSAttachment.ts +5 -1
- package/src/version.ts +1 -1
- package/cli/dist/cli.bundle.js +0 -20834
- package/cli/dist/cli.d.ts +0 -2
- package/cli/dist/cli.js.map +0 -1
- package/cli/dist/commands/initNse.d.ts +0 -12
- package/cli/dist/commands/initNse.js.map +0 -1
- package/cli/dist/lib/detectProject.d.ts +0 -12
- package/cli/dist/lib/detectProject.js.map +0 -1
- package/cli/dist/lib/initNseCore.d.ts +0 -8
- package/cli/dist/lib/initNseCore.js.map +0 -1
- package/cli/dist/lib/logger.d.ts +0 -4
- package/cli/dist/lib/logger.js.map +0 -1
- package/cli/dist/lib/patchPodfile.d.ts +0 -23
- package/cli/dist/lib/patchPodfile.js.map +0 -1
- package/cli/dist/lib/patchXcodeProject.d.ts +0 -41
- package/cli/dist/lib/patchXcodeProject.js.map +0 -1
- package/cli/dist/lib/writeTemplates.d.ts +0 -11
- package/cli/dist/lib/writeTemplates.js.map +0 -1
- package/cli/dist/templates/templates/Info.plist.tmpl +0 -29
- package/cli/dist/templates/templates/NotificationService.swift.tmpl +0 -100
- package/cli/dist/templates/templates/NotifyKitNSE.entitlements.tmpl +0 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateIOSAttachment.js","sourceRoot":"","sources":["../../src/validators/validateIOSAttachment.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,
|
|
1
|
+
{"version":3,"file":"validateIOSAttachment.js","sourceRoot":"","sources":["../../src/validators/validateIOSAttachment.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.9.0";
|
package/dist/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-notify-kit",
|
|
3
|
-
"version": "10.
|
|
3
|
+
"version": "10.9.0",
|
|
4
4
|
"author": "Marco Crupi",
|
|
5
5
|
"description": "Maintained Notifee-compatible React Native notifications library for Android, iOS, FCM Mode, rich notifications, foreground services, and Expo CNG development builds.",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"test:server": "jest --config jest.config.server.js",
|
|
34
34
|
"prepare": "yarn run build",
|
|
35
35
|
"prepack": "yarn run build:server && cd ../.. && bash build_ios_core.sh && bash scripts/verify-ios-core-generation.sh && bash scripts/prepack-cli.sh",
|
|
36
|
-
"postpack": "
|
|
36
|
+
"postpack": "node ../../scripts/cli-artifacts.cjs postpack",
|
|
37
37
|
"prepublishOnly": "cd ../.. && yarn run build:core",
|
|
38
38
|
"format:android": "google-java-format --replace -i $(find . -type f -name \"*.java\" ! -path \"*/node_modules/*\" ! -path \"*/generated/*\")",
|
|
39
39
|
"format:android:check": "google-java-format --set-exit-if-changed --replace -i $(find . -type f -name \"*.java\" ! -path \"*/node_modules/*\" ! -path \"*/generated/*\")",
|
|
@@ -56,13 +56,14 @@
|
|
|
56
56
|
"react-native": "0.85.3",
|
|
57
57
|
"rimraf": "^3.0.2",
|
|
58
58
|
"ts-jest": "^29.2.5",
|
|
59
|
-
"typescript": "^5.9.3"
|
|
59
|
+
"typescript": "^5.9.3",
|
|
60
|
+
"xcode": "^3.0.1"
|
|
60
61
|
},
|
|
61
62
|
"optionalDependencies": {
|
|
62
63
|
"chalk": "^4.1.0",
|
|
63
64
|
"commander": "^12.0.0",
|
|
64
65
|
"plist": "^3.1.0",
|
|
65
|
-
"
|
|
66
|
+
"simple-plist": "^1.3.1"
|
|
66
67
|
},
|
|
67
68
|
"peerDependencies": {
|
|
68
69
|
"expo": "*",
|
|
@@ -131,6 +132,8 @@
|
|
|
131
132
|
"/server/tsconfig.json",
|
|
132
133
|
"/server/package.json",
|
|
133
134
|
"/cli/dist",
|
|
134
|
-
"/cli/bin"
|
|
135
|
+
"/cli/bin",
|
|
136
|
+
"/cli/vendor",
|
|
137
|
+
"/cli/package.json"
|
|
135
138
|
]
|
|
136
139
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { NativeModules } from 'react-native';
|
|
2
2
|
import NotifeeJSEventEmitter from './NotifeeJSEventEmitter';
|
|
3
3
|
|
|
4
4
|
export interface NativeModuleConfig {
|
|
@@ -19,7 +19,7 @@ export default class NotifeeNativeModule {
|
|
|
19
19
|
return NotifeeJSEventEmitter;
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
public get native():
|
|
22
|
+
public get native(): typeof NativeModules {
|
|
23
23
|
return {};
|
|
24
24
|
}
|
|
25
25
|
}
|
|
@@ -417,6 +417,21 @@ export enum EventType {
|
|
|
417
417
|
* Event type is sent when a notification wants to start a foreground service but a foreground service is already started.
|
|
418
418
|
*/
|
|
419
419
|
FG_ALREADY_EXIST = 8,
|
|
420
|
+
|
|
421
|
+
/**
|
|
422
|
+
* Event type for an Android Foreground Service timeout handled by the native timeout path.
|
|
423
|
+
*
|
|
424
|
+
* Delivery to JavaScript is best-effort; JavaScript execution is not guaranteed.
|
|
425
|
+
* This event does not confirm completed Android service teardown, guarantee cancellation of
|
|
426
|
+
* JavaScript work, or authorize a new Foreground Service start.
|
|
427
|
+
*
|
|
428
|
+
* @platform android
|
|
429
|
+
*/
|
|
430
|
+
FG_TIMEOUT = 9,
|
|
431
|
+
|
|
432
|
+
/** Best-effort Android voluntary run-limit handling, after native teardown attempts.
|
|
433
|
+
* Does not certify AMS teardown, task completion or JavaScript cancellation. */
|
|
434
|
+
FG_RUN_LIMIT_REACHED = 10,
|
|
420
435
|
}
|
|
421
436
|
|
|
422
437
|
/**
|
|
@@ -425,6 +440,15 @@ export enum EventType {
|
|
|
425
440
|
* View the [Events](/react-native/events) documentation to learn more.
|
|
426
441
|
*/
|
|
427
442
|
export interface EventDetail {
|
|
443
|
+
/** Native handling of an accepted voluntary expiry; no delivery guarantee. */
|
|
444
|
+
foregroundServiceRunLimit?: {
|
|
445
|
+
requestedDurationMs: number;
|
|
446
|
+
deadlineElapsed: number;
|
|
447
|
+
deliveredElapsed: number;
|
|
448
|
+
demotion: 'returned' | 'failed';
|
|
449
|
+
conditionalStop: 'accepted' | 'refused' | 'deferred' | 'failed';
|
|
450
|
+
};
|
|
451
|
+
|
|
428
452
|
/**
|
|
429
453
|
* The notification this event relates to.
|
|
430
454
|
*
|
|
@@ -436,6 +460,7 @@ export interface EventDetail {
|
|
|
436
460
|
* - [`EventType.DELIVERED`](/react-native/reference/eventtype#delivered)
|
|
437
461
|
* - [`EventType.TRIGGER_NOTIFICATION_CREATED`](/react-native/reference/eventtype#trigger_notification_created)
|
|
438
462
|
* - [`EventType.FG_ALREADY_EXIST`](/react-native/reference/eventtype#fg_already_exist)
|
|
463
|
+
* - [`EventType.FG_TIMEOUT`](/react-native/reference/eventtype#fg_timeout)
|
|
439
464
|
*/
|
|
440
465
|
notification?: Notification;
|
|
441
466
|
|
|
@@ -494,6 +519,21 @@ export interface EventDetail {
|
|
|
494
519
|
* @platform android API Level >= 28
|
|
495
520
|
*/
|
|
496
521
|
blocked?: boolean;
|
|
522
|
+
|
|
523
|
+
/**
|
|
524
|
+
* The start command identifier reported by Android's timeout callback for `EventType.FG_TIMEOUT`.
|
|
525
|
+
*
|
|
526
|
+
* @platform android
|
|
527
|
+
*/
|
|
528
|
+
startId?: number;
|
|
529
|
+
|
|
530
|
+
/**
|
|
531
|
+
* The Foreground Service type reported by Android's timeout callback for `EventType.FG_TIMEOUT`.
|
|
532
|
+
* A value of `-1` is preserved when the callback overload does not provide an explicit type.
|
|
533
|
+
*
|
|
534
|
+
* @platform android
|
|
535
|
+
*/
|
|
536
|
+
fgsType?: number;
|
|
497
537
|
}
|
|
498
538
|
|
|
499
539
|
/**
|
|
@@ -39,6 +39,16 @@ export interface NotificationAndroid {
|
|
|
39
39
|
*/
|
|
40
40
|
asForegroundService?: boolean;
|
|
41
41
|
|
|
42
|
+
/**
|
|
43
|
+
* Best-effort attempt to demote (REMOVE) and stop a single dataSync foreground run.
|
|
44
|
+
* Android API 35+ only. Disabled when undefined. Integer milliseconds, 60,000–18,000,000.
|
|
45
|
+
* Measured from the first successful promotion using elapsed realtime, including sleep.
|
|
46
|
+
* Same-ID updates do not extend the deadline; changing/enabling it requires a new run.
|
|
47
|
+
* Inexact alarms may arrive minutes late or never. A resolved displayNotification Promise
|
|
48
|
+
* does not confirm scheduling. This does not cancel JavaScript or application work.
|
|
49
|
+
*/
|
|
50
|
+
foregroundServiceBestEffortStopAfterMs?: number;
|
|
51
|
+
|
|
42
52
|
/**
|
|
43
53
|
* When set to `true` the screen will light up when the notification is displayed.
|
|
44
54
|
*
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* Copyright (c) 2016-present Invertase Limited
|
|
3
3
|
*/
|
|
4
|
-
import { Image } from 'react-native';
|
|
4
|
+
import { Image, Platform } from 'react-native';
|
|
5
5
|
|
|
6
6
|
import {
|
|
7
7
|
objectHasProperty,
|
|
@@ -126,6 +126,31 @@ export default function validateAndroidNotification(
|
|
|
126
126
|
out.asForegroundService = android.asForegroundService;
|
|
127
127
|
}
|
|
128
128
|
|
|
129
|
+
const runLimit = android.foregroundServiceBestEffortStopAfterMs;
|
|
130
|
+
if (!isUndefined(runLimit)) {
|
|
131
|
+
const path = "'notification.android.foregroundServiceBestEffortStopAfterMs'";
|
|
132
|
+
if (!Number.isSafeInteger(runLimit) || runLimit < 60000 || runLimit > 18000000) {
|
|
133
|
+
throw new Error(`${path} expected a safe integer between 60000 and 18000000 milliseconds.`);
|
|
134
|
+
}
|
|
135
|
+
if (!out.asForegroundService) {
|
|
136
|
+
throw new Error(`${path} requires asForegroundService: true.`);
|
|
137
|
+
}
|
|
138
|
+
if (Platform.OS === 'android' && Number(Platform.Version) < 35) {
|
|
139
|
+
throw new Error(`${path} requires Android API 35+.`);
|
|
140
|
+
}
|
|
141
|
+
if (
|
|
142
|
+
android.foregroundServiceTypes !== undefined &&
|
|
143
|
+
(!isArray(android.foregroundServiceTypes) ||
|
|
144
|
+
android.foregroundServiceTypes.length !== 1 ||
|
|
145
|
+
android.foregroundServiceTypes[0] !==
|
|
146
|
+
AndroidForegroundServiceType.FOREGROUND_SERVICE_TYPE_DATA_SYNC)
|
|
147
|
+
) {
|
|
148
|
+
throw new Error(`${path} requires a single dataSync foreground service type.`);
|
|
149
|
+
}
|
|
150
|
+
// An omitted type is resolved and checked against the merged manifest before native START.
|
|
151
|
+
out.foregroundServiceBestEffortStopAfterMs = runLimit;
|
|
152
|
+
}
|
|
153
|
+
|
|
129
154
|
/**
|
|
130
155
|
* foregroundServiceBehavior
|
|
131
156
|
*/
|
|
@@ -341,6 +366,11 @@ export default function validateAndroidNotification(
|
|
|
341
366
|
|
|
342
367
|
if (isNumber(android.largeIcon) || isObject(android.largeIcon)) {
|
|
343
368
|
const image = Image.resolveAssetSource(android.largeIcon);
|
|
369
|
+
if (!image || !isString(image.uri) || /^[\s\u0085]*$/.test(image.uri)) {
|
|
370
|
+
throw new Error(
|
|
371
|
+
"'notification.android.largeIcon' expected a React Native ImageResource value or a valid string URL.",
|
|
372
|
+
);
|
|
373
|
+
}
|
|
344
374
|
out.largeIcon = image.uri;
|
|
345
375
|
} else {
|
|
346
376
|
out.largeIcon = android.largeIcon;
|
|
@@ -36,7 +36,11 @@ export function validateAndroidBigPictureStyle(
|
|
|
36
36
|
|
|
37
37
|
if (isNumber(style.picture) || isObject(style.picture)) {
|
|
38
38
|
const image = Image.resolveAssetSource(style.picture);
|
|
39
|
-
|
|
39
|
+
if (!image || !isString(image.uri) || /^[\s\u0085]*$/.test(image.uri)) {
|
|
40
|
+
throw new Error(
|
|
41
|
+
"'notification.android.style' BigPictureStyle: 'picture' expected a number or object created using the 'require()' method or a valid string URL.",
|
|
42
|
+
);
|
|
43
|
+
}
|
|
40
44
|
out.picture = image.uri;
|
|
41
45
|
}
|
|
42
46
|
|
|
@@ -53,7 +57,11 @@ export function validateAndroidBigPictureStyle(
|
|
|
53
57
|
}
|
|
54
58
|
if (isNumber(style.largeIcon) || isObject(style.largeIcon)) {
|
|
55
59
|
const image = Image.resolveAssetSource(style.largeIcon);
|
|
56
|
-
|
|
60
|
+
if (!image || !isString(image.uri) || /^[\s\u0085]*$/.test(image.uri)) {
|
|
61
|
+
throw new Error(
|
|
62
|
+
"'notification.android.style' BigPictureStyle: 'largeIcon' expected a React Native ImageResource value or a valid string URL.",
|
|
63
|
+
);
|
|
64
|
+
}
|
|
57
65
|
out.largeIcon = image.uri;
|
|
58
66
|
} else {
|
|
59
67
|
out.largeIcon = style.largeIcon;
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
* Copyright (c) 2016-present Invertase Limited
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
// @ts-ignore
|
|
6
5
|
import { Image } from 'react-native';
|
|
7
6
|
|
|
8
7
|
import {
|
|
@@ -42,6 +41,11 @@ export default function validateIOSAttachment(
|
|
|
42
41
|
|
|
43
42
|
if (isNumber(attachment.url) || isObject(attachment.url)) {
|
|
44
43
|
const image = Image.resolveAssetSource(attachment.url);
|
|
44
|
+
if (!image || !isString(image.uri) || /^[\s\u0085]*$/.test(image.uri)) {
|
|
45
|
+
throw new Error(
|
|
46
|
+
"'attachment.url' expected a React Native ImageResource value or a valid string URL.",
|
|
47
|
+
);
|
|
48
|
+
}
|
|
45
49
|
out.url = image.uri;
|
|
46
50
|
}
|
|
47
51
|
|
package/src/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Generated by genversion.
|
|
2
|
-
export const version = '10.
|
|
2
|
+
export const version = '10.9.0';
|