@amazon-devices/expo-notifications 2.0.9000000000-rn-83
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/.eslintrc.js +2 -0
- package/CHANGELOG.md +478 -0
- package/LICENSE +7 -0
- package/README.kepler.md +3 -0
- package/README.md +2003 -0
- package/THIRD_PARTY_NOTICES.txt +4 -0
- package/android/build.gradle +125 -0
- package/android/src/main/AndroidManifest.xml +39 -0
- package/android/src/main/java/expo/modules/notifications/Exceptions.kt +22 -0
- package/android/src/main/java/expo/modules/notifications/NotificationsPackage.java +34 -0
- package/android/src/main/java/expo/modules/notifications/Utils.kt +19 -0
- package/android/src/main/java/expo/modules/notifications/badge/BadgeHelper.kt +24 -0
- package/android/src/main/java/expo/modules/notifications/badge/BadgeModule.kt +22 -0
- package/android/src/main/java/expo/modules/notifications/notifications/ArgumentsNotificationContentBuilder.java +149 -0
- package/android/src/main/java/expo/modules/notifications/notifications/JSONNotificationContentBuilder.java +203 -0
- package/android/src/main/java/expo/modules/notifications/notifications/NotificationManager.java +119 -0
- package/android/src/main/java/expo/modules/notifications/notifications/NotificationSerializer.java +202 -0
- package/android/src/main/java/expo/modules/notifications/notifications/RemoteMessageSerializer.java +104 -0
- package/android/src/main/java/expo/modules/notifications/notifications/SoundResolver.java +58 -0
- package/android/src/main/java/expo/modules/notifications/notifications/background/BackgroundRemoteNotificationTaskConsumer.java +123 -0
- package/android/src/main/java/expo/modules/notifications/notifications/background/ExpoBackgroundNotificationTasksModule.kt +33 -0
- package/android/src/main/java/expo/modules/notifications/notifications/categories/ExpoNotificationCategoriesModule.kt +149 -0
- package/android/src/main/java/expo/modules/notifications/notifications/categories/serializers/ExpoNotificationsCategoriesSerializer.java +67 -0
- package/android/src/main/java/expo/modules/notifications/notifications/categories/serializers/NotificationsCategoriesSerializer.java +11 -0
- package/android/src/main/java/expo/modules/notifications/notifications/channels/AbstractNotificationsChannelsProvider.java +81 -0
- package/android/src/main/java/expo/modules/notifications/notifications/channels/AndroidXNotificationsChannelsProvider.java +38 -0
- package/android/src/main/java/expo/modules/notifications/notifications/channels/InvalidVibrationPatternException.java +14 -0
- package/android/src/main/java/expo/modules/notifications/notifications/channels/NotificationChannelGroupManagerModule.kt +70 -0
- package/android/src/main/java/expo/modules/notifications/notifications/channels/NotificationChannelManagerModule.kt +83 -0
- package/android/src/main/java/expo/modules/notifications/notifications/channels/NotificationsChannelsProvider.java +13 -0
- package/android/src/main/java/expo/modules/notifications/notifications/channels/managers/AndroidXNotificationsChannelGroupManager.java +67 -0
- package/android/src/main/java/expo/modules/notifications/notifications/channels/managers/AndroidXNotificationsChannelManager.java +196 -0
- package/android/src/main/java/expo/modules/notifications/notifications/channels/managers/NotificationsChannelGroupManager.java +28 -0
- package/android/src/main/java/expo/modules/notifications/notifications/channels/managers/NotificationsChannelManager.java +28 -0
- package/android/src/main/java/expo/modules/notifications/notifications/channels/serializers/ExpoNotificationsChannelGroupSerializer.java +55 -0
- package/android/src/main/java/expo/modules/notifications/notifications/channels/serializers/ExpoNotificationsChannelSerializer.java +101 -0
- package/android/src/main/java/expo/modules/notifications/notifications/channels/serializers/NotificationsChannelGroupSerializer.java +20 -0
- package/android/src/main/java/expo/modules/notifications/notifications/channels/serializers/NotificationsChannelSerializer.java +35 -0
- package/android/src/main/java/expo/modules/notifications/notifications/emitting/NotificationsEmitter.kt +78 -0
- package/android/src/main/java/expo/modules/notifications/notifications/enums/AudioContentType.java +45 -0
- package/android/src/main/java/expo/modules/notifications/notifications/enums/AudioUsage.java +55 -0
- package/android/src/main/java/expo/modules/notifications/notifications/enums/NotificationImportance.java +48 -0
- package/android/src/main/java/expo/modules/notifications/notifications/enums/NotificationPriority.java +51 -0
- package/android/src/main/java/expo/modules/notifications/notifications/enums/NotificationVisibility.java +44 -0
- package/android/src/main/java/expo/modules/notifications/notifications/handling/NotificationsHandler.kt +127 -0
- package/android/src/main/java/expo/modules/notifications/notifications/handling/SingleNotificationHandlerTask.java +131 -0
- package/android/src/main/java/expo/modules/notifications/notifications/interfaces/NotificationBuilder.java +35 -0
- package/android/src/main/java/expo/modules/notifications/notifications/interfaces/NotificationListener.java +37 -0
- package/android/src/main/java/expo/modules/notifications/notifications/interfaces/NotificationManager.java +22 -0
- package/android/src/main/java/expo/modules/notifications/notifications/interfaces/NotificationPresentationEffect.java +11 -0
- package/android/src/main/java/expo/modules/notifications/notifications/interfaces/NotificationPresentationEffectsManager.java +7 -0
- package/android/src/main/java/expo/modules/notifications/notifications/interfaces/NotificationTrigger.java +19 -0
- package/android/src/main/java/expo/modules/notifications/notifications/interfaces/SchedulableNotificationTrigger.java +20 -0
- package/android/src/main/java/expo/modules/notifications/notifications/model/Notification.java +59 -0
- package/android/src/main/java/expo/modules/notifications/notifications/model/NotificationAction.java +63 -0
- package/android/src/main/java/expo/modules/notifications/notifications/model/NotificationBehavior.java +84 -0
- package/android/src/main/java/expo/modules/notifications/notifications/model/NotificationCategory.java +61 -0
- package/android/src/main/java/expo/modules/notifications/notifications/model/NotificationContent.java +356 -0
- package/android/src/main/java/expo/modules/notifications/notifications/model/NotificationRequest.java +66 -0
- package/android/src/main/java/expo/modules/notifications/notifications/model/NotificationResponse.java +60 -0
- package/android/src/main/java/expo/modules/notifications/notifications/model/TextInputNotificationAction.java +42 -0
- package/android/src/main/java/expo/modules/notifications/notifications/model/TextInputNotificationResponse.java +42 -0
- package/android/src/main/java/expo/modules/notifications/notifications/model/triggers/FirebaseNotificationTrigger.java +61 -0
- package/android/src/main/java/expo/modules/notifications/notifications/presentation/ExpoNotificationPresentationEffectsManager.java +63 -0
- package/android/src/main/java/expo/modules/notifications/notifications/presentation/ExpoNotificationPresentationModule.kt +113 -0
- package/android/src/main/java/expo/modules/notifications/notifications/presentation/builders/BaseNotificationBuilder.java +50 -0
- package/android/src/main/java/expo/modules/notifications/notifications/presentation/builders/CategoryAwareNotificationBuilder.java +80 -0
- package/android/src/main/java/expo/modules/notifications/notifications/presentation/builders/ChannelAwareNotificationBuilder.java +135 -0
- package/android/src/main/java/expo/modules/notifications/notifications/presentation/builders/ExpoNotificationBuilder.java +295 -0
- package/android/src/main/java/expo/modules/notifications/notifications/presentation/effects/BaseNotificationEffect.java +53 -0
- package/android/src/main/java/expo/modules/notifications/notifications/scheduling/NotificationScheduler.kt +235 -0
- package/android/src/main/java/expo/modules/notifications/notifications/triggers/ChannelAwareTrigger.java +49 -0
- package/android/src/main/java/expo/modules/notifications/notifications/triggers/DailyTrigger.java +76 -0
- package/android/src/main/java/expo/modules/notifications/notifications/triggers/DateTrigger.java +64 -0
- package/android/src/main/java/expo/modules/notifications/notifications/triggers/TimeIntervalTrigger.java +87 -0
- package/android/src/main/java/expo/modules/notifications/notifications/triggers/WeeklyTrigger.java +85 -0
- package/android/src/main/java/expo/modules/notifications/notifications/triggers/YearlyTrigger.java +94 -0
- package/android/src/main/java/expo/modules/notifications/permissions/NotificationPermissionsModule.kt +124 -0
- package/android/src/main/java/expo/modules/notifications/serverregistration/InstallationId.java +134 -0
- package/android/src/main/java/expo/modules/notifications/serverregistration/RegistrationInfo.kt +24 -0
- package/android/src/main/java/expo/modules/notifications/serverregistration/ServerRegistrationModule.kt +32 -0
- package/android/src/main/java/expo/modules/notifications/service/ExpoFirebaseMessagingService.kt +15 -0
- package/android/src/main/java/expo/modules/notifications/service/NotificationForwarderActivity.kt +33 -0
- package/android/src/main/java/expo/modules/notifications/service/NotificationsService.kt +780 -0
- package/android/src/main/java/expo/modules/notifications/service/delegates/Base64Serialization.kt +33 -0
- package/android/src/main/java/expo/modules/notifications/service/delegates/ExpoCategoriesDelegate.kt +21 -0
- package/android/src/main/java/expo/modules/notifications/service/delegates/ExpoHandlingDelegate.kt +146 -0
- package/android/src/main/java/expo/modules/notifications/service/delegates/ExpoPresentationDelegate.kt +193 -0
- package/android/src/main/java/expo/modules/notifications/service/delegates/ExpoSchedulingDelegate.kt +117 -0
- package/android/src/main/java/expo/modules/notifications/service/delegates/FirebaseMessagingDelegate.kt +126 -0
- package/android/src/main/java/expo/modules/notifications/service/delegates/SharedPreferencesNotificationCategoriesStore.kt +106 -0
- package/android/src/main/java/expo/modules/notifications/service/delegates/SharedPreferencesNotificationsStore.kt +119 -0
- package/android/src/main/java/expo/modules/notifications/service/interfaces/CategoriesDelegate.kt +14 -0
- package/android/src/main/java/expo/modules/notifications/service/interfaces/FirebaseMessagingDelegate.kt +20 -0
- package/android/src/main/java/expo/modules/notifications/service/interfaces/HandlingDelegate.kt +10 -0
- package/android/src/main/java/expo/modules/notifications/service/interfaces/PresentationDelegate.kt +11 -0
- package/android/src/main/java/expo/modules/notifications/service/interfaces/SchedulingDelegate.kt +13 -0
- package/android/src/main/java/expo/modules/notifications/tokens/PushTokenManager.java +88 -0
- package/android/src/main/java/expo/modules/notifications/tokens/PushTokenModule.kt +91 -0
- package/android/src/main/java/expo/modules/notifications/tokens/interfaces/FirebaseTokenListener.java +16 -0
- package/android/src/main/java/expo/modules/notifications/tokens/interfaces/PushTokenListener.java +14 -0
- package/android/src/main/java/expo/modules/notifications/tokens/interfaces/PushTokenManager.java +22 -0
- package/android/src/main/res/values/strings.xml +4 -0
- package/app.plugin.js +1 -0
- package/build/BackgroundNotificationTasksModule.d.ts +4 -0
- package/build/BackgroundNotificationTasksModule.d.ts.map +1 -0
- package/build/BackgroundNotificationTasksModule.js +7 -0
- package/build/BackgroundNotificationTasksModule.js.map +1 -0
- package/build/BackgroundNotificationTasksModule.kepler.d.ts +3 -0
- package/build/BackgroundNotificationTasksModule.kepler.d.ts.map +1 -0
- package/build/BackgroundNotificationTasksModule.kepler.js +9 -0
- package/build/BackgroundNotificationTasksModule.kepler.js.map +1 -0
- package/build/BackgroundNotificationTasksModule.native.d.ts +4 -0
- package/build/BackgroundNotificationTasksModule.native.d.ts.map +1 -0
- package/build/BackgroundNotificationTasksModule.native.js +3 -0
- package/build/BackgroundNotificationTasksModule.native.js.map +1 -0
- package/build/BackgroundNotificationTasksModule.types.d.ts +11 -0
- package/build/BackgroundNotificationTasksModule.types.d.ts.map +1 -0
- package/build/BackgroundNotificationTasksModule.types.js +7 -0
- package/build/BackgroundNotificationTasksModule.types.js.map +1 -0
- package/build/BackgroundNotificationTasksModule.web.d.ts +6 -0
- package/build/BackgroundNotificationTasksModule.web.d.ts.map +1 -0
- package/build/BackgroundNotificationTasksModule.web.js +9 -0
- package/build/BackgroundNotificationTasksModule.web.js.map +1 -0
- package/build/BadgeModule.d.ts +4 -0
- package/build/BadgeModule.d.ts.map +1 -0
- package/build/BadgeModule.js +5 -0
- package/build/BadgeModule.js.map +1 -0
- package/build/BadgeModule.kepler.d.ts +3 -0
- package/build/BadgeModule.kepler.d.ts.map +1 -0
- package/build/BadgeModule.kepler.js +9 -0
- package/build/BadgeModule.kepler.js.map +1 -0
- package/build/BadgeModule.native.d.ts +4 -0
- package/build/BadgeModule.native.d.ts.map +1 -0
- package/build/BadgeModule.native.js +12 -0
- package/build/BadgeModule.native.js.map +1 -0
- package/build/BadgeModule.types.d.ts +10 -0
- package/build/BadgeModule.types.d.ts.map +1 -0
- package/build/BadgeModule.types.js +2 -0
- package/build/BadgeModule.types.js.map +1 -0
- package/build/BadgeModule.web.d.ts +4 -0
- package/build/BadgeModule.web.d.ts.map +1 -0
- package/build/BadgeModule.web.js +26 -0
- package/build/BadgeModule.web.js.map +1 -0
- package/build/DevicePushTokenAutoRegistration.fx.d.ts +15 -0
- package/build/DevicePushTokenAutoRegistration.fx.d.ts.map +1 -0
- package/build/DevicePushTokenAutoRegistration.fx.js +87 -0
- package/build/DevicePushTokenAutoRegistration.fx.js.map +1 -0
- package/build/NotificationCategoriesModule.d.ts +4 -0
- package/build/NotificationCategoriesModule.d.ts.map +1 -0
- package/build/NotificationCategoriesModule.js +13 -0
- package/build/NotificationCategoriesModule.js.map +1 -0
- package/build/NotificationCategoriesModule.kepler.d.ts +3 -0
- package/build/NotificationCategoriesModule.kepler.d.ts.map +1 -0
- package/build/NotificationCategoriesModule.kepler.js +10 -0
- package/build/NotificationCategoriesModule.kepler.js.map +1 -0
- package/build/NotificationCategoriesModule.native.d.ts +4 -0
- package/build/NotificationCategoriesModule.native.d.ts.map +1 -0
- package/build/NotificationCategoriesModule.native.js +3 -0
- package/build/NotificationCategoriesModule.native.js.map +1 -0
- package/build/NotificationCategoriesModule.types.d.ts +17 -0
- package/build/NotificationCategoriesModule.types.d.ts.map +1 -0
- package/build/NotificationCategoriesModule.types.js +2 -0
- package/build/NotificationCategoriesModule.types.js.map +1 -0
- package/build/NotificationCategoriesModule.web.d.ts +8 -0
- package/build/NotificationCategoriesModule.web.d.ts.map +1 -0
- package/build/NotificationCategoriesModule.web.js +12 -0
- package/build/NotificationCategoriesModule.web.js.map +1 -0
- package/build/NotificationChannelGroupManager.d.ts +4 -0
- package/build/NotificationChannelGroupManager.d.ts.map +1 -0
- package/build/NotificationChannelGroupManager.js +5 -0
- package/build/NotificationChannelGroupManager.js.map +1 -0
- package/build/NotificationChannelGroupManager.kepler.d.ts +3 -0
- package/build/NotificationChannelGroupManager.kepler.d.ts.map +1 -0
- package/build/NotificationChannelGroupManager.kepler.js +9 -0
- package/build/NotificationChannelGroupManager.kepler.js.map +1 -0
- package/build/NotificationChannelGroupManager.native.d.ts +4 -0
- package/build/NotificationChannelGroupManager.native.d.ts.map +1 -0
- package/build/NotificationChannelGroupManager.native.js +3 -0
- package/build/NotificationChannelGroupManager.native.js.map +1 -0
- package/build/NotificationChannelGroupManager.types.d.ts +28 -0
- package/build/NotificationChannelGroupManager.types.d.ts.map +1 -0
- package/build/NotificationChannelGroupManager.types.js +2 -0
- package/build/NotificationChannelGroupManager.types.js.map +1 -0
- package/build/NotificationChannelManager.d.ts +4 -0
- package/build/NotificationChannelManager.d.ts.map +1 -0
- package/build/NotificationChannelManager.js +5 -0
- package/build/NotificationChannelManager.js.map +1 -0
- package/build/NotificationChannelManager.kepler.d.ts +3 -0
- package/build/NotificationChannelManager.kepler.d.ts.map +1 -0
- package/build/NotificationChannelManager.kepler.js +9 -0
- package/build/NotificationChannelManager.kepler.js.map +1 -0
- package/build/NotificationChannelManager.native.d.ts +4 -0
- package/build/NotificationChannelManager.native.d.ts.map +1 -0
- package/build/NotificationChannelManager.native.js +3 -0
- package/build/NotificationChannelManager.native.js.map +1 -0
- package/build/NotificationChannelManager.types.d.ts +91 -0
- package/build/NotificationChannelManager.types.d.ts.map +1 -0
- package/build/NotificationChannelManager.types.js +53 -0
- package/build/NotificationChannelManager.types.js.map +1 -0
- package/build/NotificationPermissions.d.ts +56 -0
- package/build/NotificationPermissions.d.ts.map +1 -0
- package/build/NotificationPermissions.js +79 -0
- package/build/NotificationPermissions.js.map +1 -0
- package/build/NotificationPermissions.types.d.ts +94 -0
- package/build/NotificationPermissions.types.d.ts.map +1 -0
- package/build/NotificationPermissions.types.js +21 -0
- package/build/NotificationPermissions.types.js.map +1 -0
- package/build/NotificationPermissionsModule.d.ts +4 -0
- package/build/NotificationPermissionsModule.d.ts.map +1 -0
- package/build/NotificationPermissionsModule.js +67 -0
- package/build/NotificationPermissionsModule.js.map +1 -0
- package/build/NotificationPermissionsModule.kepler.d.ts +3 -0
- package/build/NotificationPermissionsModule.kepler.d.ts.map +1 -0
- package/build/NotificationPermissionsModule.kepler.js +9 -0
- package/build/NotificationPermissionsModule.kepler.js.map +1 -0
- package/build/NotificationPermissionsModule.native.d.ts +4 -0
- package/build/NotificationPermissionsModule.native.d.ts.map +1 -0
- package/build/NotificationPermissionsModule.native.js +3 -0
- package/build/NotificationPermissionsModule.native.js.map +1 -0
- package/build/NotificationPermissionsModule.types.d.ts +7 -0
- package/build/NotificationPermissionsModule.types.d.ts.map +1 -0
- package/build/NotificationPermissionsModule.types.js +2 -0
- package/build/NotificationPermissionsModule.types.js.map +1 -0
- package/build/NotificationPresenterModule.d.ts +4 -0
- package/build/NotificationPresenterModule.d.ts.map +1 -0
- package/build/NotificationPresenterModule.js +5 -0
- package/build/NotificationPresenterModule.js.map +1 -0
- package/build/NotificationPresenterModule.kepler.d.ts +4 -0
- package/build/NotificationPresenterModule.kepler.d.ts.map +1 -0
- package/build/NotificationPresenterModule.kepler.js +55 -0
- package/build/NotificationPresenterModule.kepler.js.map +1 -0
- package/build/NotificationPresenterModule.native.d.ts +4 -0
- package/build/NotificationPresenterModule.native.d.ts.map +1 -0
- package/build/NotificationPresenterModule.native.js +3 -0
- package/build/NotificationPresenterModule.native.js.map +1 -0
- package/build/NotificationPresenterModule.types.d.ts +9 -0
- package/build/NotificationPresenterModule.types.d.ts.map +1 -0
- package/build/NotificationPresenterModule.types.js +2 -0
- package/build/NotificationPresenterModule.types.js.map +1 -0
- package/build/NotificationScheduler.d.ts +4 -0
- package/build/NotificationScheduler.d.ts.map +1 -0
- package/build/NotificationScheduler.js +5 -0
- package/build/NotificationScheduler.js.map +1 -0
- package/build/NotificationScheduler.kepler.d.ts +4 -0
- package/build/NotificationScheduler.kepler.d.ts.map +1 -0
- package/build/NotificationScheduler.kepler.js +50 -0
- package/build/NotificationScheduler.kepler.js.map +1 -0
- package/build/NotificationScheduler.native.d.ts +4 -0
- package/build/NotificationScheduler.native.d.ts.map +1 -0
- package/build/NotificationScheduler.native.js +3 -0
- package/build/NotificationScheduler.native.js.map +1 -0
- package/build/NotificationScheduler.types.d.ts +65 -0
- package/build/NotificationScheduler.types.d.ts.map +1 -0
- package/build/NotificationScheduler.types.js +2 -0
- package/build/NotificationScheduler.types.js.map +1 -0
- package/build/Notifications.types.d.ts +666 -0
- package/build/Notifications.types.d.ts.map +1 -0
- package/build/Notifications.types.js +12 -0
- package/build/Notifications.types.js.map +1 -0
- package/build/NotificationsEmitter.d.ts +75 -0
- package/build/NotificationsEmitter.d.ts.map +1 -0
- package/build/NotificationsEmitter.js +95 -0
- package/build/NotificationsEmitter.js.map +1 -0
- package/build/NotificationsEmitterModule.d.ts +4 -0
- package/build/NotificationsEmitterModule.d.ts.map +1 -0
- package/build/NotificationsEmitterModule.js +12 -0
- package/build/NotificationsEmitterModule.js.map +1 -0
- package/build/NotificationsEmitterModule.kepler.d.ts +3 -0
- package/build/NotificationsEmitterModule.kepler.d.ts.map +1 -0
- package/build/NotificationsEmitterModule.kepler.js +9 -0
- package/build/NotificationsEmitterModule.kepler.js.map +1 -0
- package/build/NotificationsEmitterModule.native.d.ts +4 -0
- package/build/NotificationsEmitterModule.native.d.ts.map +1 -0
- package/build/NotificationsEmitterModule.native.js +3 -0
- package/build/NotificationsEmitterModule.native.js.map +1 -0
- package/build/NotificationsEmitterModule.types.d.ts +6 -0
- package/build/NotificationsEmitterModule.types.d.ts.map +1 -0
- package/build/NotificationsEmitterModule.types.js +2 -0
- package/build/NotificationsEmitterModule.types.js.map +1 -0
- package/build/NotificationsHandler.d.ts +60 -0
- package/build/NotificationsHandler.d.ts.map +1 -0
- package/build/NotificationsHandler.js +72 -0
- package/build/NotificationsHandler.js.map +1 -0
- package/build/NotificationsHandlerModule.d.ts +4 -0
- package/build/NotificationsHandlerModule.d.ts.map +1 -0
- package/build/NotificationsHandlerModule.js +12 -0
- package/build/NotificationsHandlerModule.js.map +1 -0
- package/build/NotificationsHandlerModule.kepler.d.ts +3 -0
- package/build/NotificationsHandlerModule.kepler.d.ts.map +1 -0
- package/build/NotificationsHandlerModule.kepler.js +9 -0
- package/build/NotificationsHandlerModule.kepler.js.map +1 -0
- package/build/NotificationsHandlerModule.native.d.ts +4 -0
- package/build/NotificationsHandlerModule.native.d.ts.map +1 -0
- package/build/NotificationsHandlerModule.native.js +3 -0
- package/build/NotificationsHandlerModule.native.js.map +1 -0
- package/build/NotificationsHandlerModule.types.d.ts +6 -0
- package/build/NotificationsHandlerModule.types.d.ts.map +1 -0
- package/build/NotificationsHandlerModule.types.js +2 -0
- package/build/NotificationsHandlerModule.types.js.map +1 -0
- package/build/PushTokenManager.d.ts +4 -0
- package/build/PushTokenManager.d.ts.map +1 -0
- package/build/PushTokenManager.js +12 -0
- package/build/PushTokenManager.js.map +1 -0
- package/build/PushTokenManager.kepler.d.ts +3 -0
- package/build/PushTokenManager.kepler.d.ts.map +1 -0
- package/build/PushTokenManager.kepler.js +9 -0
- package/build/PushTokenManager.kepler.js.map +1 -0
- package/build/PushTokenManager.native.d.ts +4 -0
- package/build/PushTokenManager.native.d.ts.map +1 -0
- package/build/PushTokenManager.native.js +3 -0
- package/build/PushTokenManager.native.js.map +1 -0
- package/build/PushTokenManager.types.d.ts +6 -0
- package/build/PushTokenManager.types.d.ts.map +1 -0
- package/build/PushTokenManager.types.js +2 -0
- package/build/PushTokenManager.types.js.map +1 -0
- package/build/ServerRegistrationModule.d.ts +4 -0
- package/build/ServerRegistrationModule.d.ts.map +1 -0
- package/build/ServerRegistrationModule.js +5 -0
- package/build/ServerRegistrationModule.js.map +1 -0
- package/build/ServerRegistrationModule.kepler.d.ts +3 -0
- package/build/ServerRegistrationModule.kepler.d.ts.map +1 -0
- package/build/ServerRegistrationModule.kepler.js +9 -0
- package/build/ServerRegistrationModule.kepler.js.map +1 -0
- package/build/ServerRegistrationModule.native.d.ts +4 -0
- package/build/ServerRegistrationModule.native.d.ts.map +1 -0
- package/build/ServerRegistrationModule.native.js +3 -0
- package/build/ServerRegistrationModule.native.js.map +1 -0
- package/build/ServerRegistrationModule.types.d.ts +7 -0
- package/build/ServerRegistrationModule.types.d.ts.map +1 -0
- package/build/ServerRegistrationModule.types.js +2 -0
- package/build/ServerRegistrationModule.types.js.map +1 -0
- package/build/ServerRegistrationModule.web.d.ts +4 -0
- package/build/ServerRegistrationModule.web.d.ts.map +1 -0
- package/build/ServerRegistrationModule.web.js +50 -0
- package/build/ServerRegistrationModule.web.js.map +1 -0
- package/build/TokenEmitter.d.ts +42 -0
- package/build/TokenEmitter.d.ts.map +1 -0
- package/build/TokenEmitter.js +44 -0
- package/build/TokenEmitter.js.map +1 -0
- package/build/Tokens.types.d.ts +99 -0
- package/build/Tokens.types.d.ts.map +1 -0
- package/build/Tokens.types.js +2 -0
- package/build/Tokens.types.js.map +1 -0
- package/build/cancelAllScheduledNotificationsAsync.d.ts +7 -0
- package/build/cancelAllScheduledNotificationsAsync.d.ts.map +1 -0
- package/build/cancelAllScheduledNotificationsAsync.js +14 -0
- package/build/cancelAllScheduledNotificationsAsync.js.map +1 -0
- package/build/cancelScheduledNotificationAsync.d.ts +22 -0
- package/build/cancelScheduledNotificationAsync.d.ts.map +1 -0
- package/build/cancelScheduledNotificationAsync.js +29 -0
- package/build/cancelScheduledNotificationAsync.js.map +1 -0
- package/build/deleteNotificationCategoryAsync.d.ts +11 -0
- package/build/deleteNotificationCategoryAsync.d.ts.map +1 -0
- package/build/deleteNotificationCategoryAsync.js +19 -0
- package/build/deleteNotificationCategoryAsync.js.map +1 -0
- package/build/deleteNotificationChannelAsync.android.d.ts +2 -0
- package/build/deleteNotificationChannelAsync.android.d.ts.map +1 -0
- package/build/deleteNotificationChannelAsync.android.js +9 -0
- package/build/deleteNotificationChannelAsync.android.js.map +1 -0
- package/build/deleteNotificationChannelAsync.d.ts +9 -0
- package/build/deleteNotificationChannelAsync.d.ts.map +1 -0
- package/build/deleteNotificationChannelAsync.js +11 -0
- package/build/deleteNotificationChannelAsync.js.map +1 -0
- package/build/deleteNotificationChannelGroupAsync.android.d.ts +2 -0
- package/build/deleteNotificationChannelGroupAsync.android.d.ts.map +1 -0
- package/build/deleteNotificationChannelGroupAsync.android.js +9 -0
- package/build/deleteNotificationChannelGroupAsync.android.js.map +1 -0
- package/build/deleteNotificationChannelGroupAsync.d.ts +9 -0
- package/build/deleteNotificationChannelGroupAsync.d.ts.map +1 -0
- package/build/deleteNotificationChannelGroupAsync.js +11 -0
- package/build/deleteNotificationChannelGroupAsync.js.map +1 -0
- package/build/dismissAllNotificationsAsync.d.ts +7 -0
- package/build/dismissAllNotificationsAsync.d.ts.map +1 -0
- package/build/dismissAllNotificationsAsync.js +14 -0
- package/build/dismissAllNotificationsAsync.js.map +1 -0
- package/build/dismissNotificationAsync.d.ts +8 -0
- package/build/dismissNotificationAsync.d.ts.map +1 -0
- package/build/dismissNotificationAsync.js +15 -0
- package/build/dismissNotificationAsync.js.map +1 -0
- package/build/getAllScheduledNotificationsAsync.d.ts +8 -0
- package/build/getAllScheduledNotificationsAsync.d.ts.map +1 -0
- package/build/getAllScheduledNotificationsAsync.js +14 -0
- package/build/getAllScheduledNotificationsAsync.js.map +1 -0
- package/build/getBadgeCountAsync.d.ts +8 -0
- package/build/getBadgeCountAsync.d.ts.map +1 -0
- package/build/getBadgeCountAsync.js +15 -0
- package/build/getBadgeCountAsync.js.map +1 -0
- package/build/getDevicePushTokenAsync.d.ts +8 -0
- package/build/getDevicePushTokenAsync.d.ts.map +1 -0
- package/build/getDevicePushTokenAsync.js +27 -0
- package/build/getDevicePushTokenAsync.js.map +1 -0
- package/build/getDevicePushTokenAsync.web.d.ts +3 -0
- package/build/getDevicePushTokenAsync.web.d.ts.map +1 -0
- package/build/getDevicePushTokenAsync.web.js +84 -0
- package/build/getDevicePushTokenAsync.web.js.map +1 -0
- package/build/getExpoPushTokenAsync.d.ts +40 -0
- package/build/getExpoPushTokenAsync.d.ts.map +1 -0
- package/build/getExpoPushTokenAsync.js +177 -0
- package/build/getExpoPushTokenAsync.js.map +1 -0
- package/build/getNextTriggerDateAsync.d.ts +26 -0
- package/build/getNextTriggerDateAsync.d.ts.map +1 -0
- package/build/getNextTriggerDateAsync.js +33 -0
- package/build/getNextTriggerDateAsync.js.map +1 -0
- package/build/getNotificationCategoriesAsync.d.ts +11 -0
- package/build/getNotificationCategoriesAsync.d.ts.map +1 -0
- package/build/getNotificationCategoriesAsync.js +18 -0
- package/build/getNotificationCategoriesAsync.js.map +1 -0
- package/build/getNotificationChannelAsync.android.d.ts +3 -0
- package/build/getNotificationChannelAsync.android.d.ts.map +1 -0
- package/build/getNotificationChannelAsync.android.js +9 -0
- package/build/getNotificationChannelAsync.android.js.map +1 -0
- package/build/getNotificationChannelAsync.d.ts +11 -0
- package/build/getNotificationChannelAsync.d.ts.map +1 -0
- package/build/getNotificationChannelAsync.js +13 -0
- package/build/getNotificationChannelAsync.js.map +1 -0
- package/build/getNotificationChannelGroupAsync.android.d.ts +3 -0
- package/build/getNotificationChannelGroupAsync.android.d.ts.map +1 -0
- package/build/getNotificationChannelGroupAsync.android.js +9 -0
- package/build/getNotificationChannelGroupAsync.android.js.map +1 -0
- package/build/getNotificationChannelGroupAsync.d.ts +12 -0
- package/build/getNotificationChannelGroupAsync.d.ts.map +1 -0
- package/build/getNotificationChannelGroupAsync.js +14 -0
- package/build/getNotificationChannelGroupAsync.js.map +1 -0
- package/build/getNotificationChannelGroupsAsync.android.d.ts +3 -0
- package/build/getNotificationChannelGroupsAsync.android.d.ts.map +1 -0
- package/build/getNotificationChannelGroupsAsync.android.js +9 -0
- package/build/getNotificationChannelGroupsAsync.android.js.map +1 -0
- package/build/getNotificationChannelGroupsAsync.d.ts +10 -0
- package/build/getNotificationChannelGroupsAsync.d.ts.map +1 -0
- package/build/getNotificationChannelGroupsAsync.js +12 -0
- package/build/getNotificationChannelGroupsAsync.js.map +1 -0
- package/build/getNotificationChannelsAsync.android.d.ts +3 -0
- package/build/getNotificationChannelsAsync.android.d.ts.map +1 -0
- package/build/getNotificationChannelsAsync.android.js +9 -0
- package/build/getNotificationChannelsAsync.android.js.map +1 -0
- package/build/getNotificationChannelsAsync.d.ts +10 -0
- package/build/getNotificationChannelsAsync.d.ts.map +1 -0
- package/build/getNotificationChannelsAsync.js +12 -0
- package/build/getNotificationChannelsAsync.js.map +1 -0
- package/build/getPresentedNotificationsAsync.d.ts +9 -0
- package/build/getPresentedNotificationsAsync.d.ts.map +1 -0
- package/build/getPresentedNotificationsAsync.js +15 -0
- package/build/getPresentedNotificationsAsync.js.map +1 -0
- package/build/index.d.ts +39 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +39 -0
- package/build/index.js.map +1 -0
- package/build/kepler/NotificationContent.d.ts +43 -0
- package/build/kepler/NotificationContent.d.ts.map +1 -0
- package/build/kepler/NotificationContent.js +96 -0
- package/build/kepler/NotificationContent.js.map +1 -0
- package/build/kepler/index.d.ts +3 -0
- package/build/kepler/index.d.ts.map +1 -0
- package/build/kepler/index.js +15 -0
- package/build/kepler/index.js.map +1 -0
- package/build/kepler/native-notification-manager.d.ts +3 -0
- package/build/kepler/native-notification-manager.d.ts.map +1 -0
- package/build/kepler/native-notification-manager.js +10 -0
- package/build/kepler/native-notification-manager.js.map +1 -0
- package/build/kepler/types/NotificationManagerTypes.d.ts +373 -0
- package/build/kepler/types/NotificationManagerTypes.d.ts.map +1 -0
- package/build/kepler/types/NotificationManagerTypes.js +279 -0
- package/build/kepler/types/NotificationManagerTypes.js.map +1 -0
- package/build/kepler/types/index.d.ts +3 -0
- package/build/kepler/types/index.d.ts.map +1 -0
- package/build/kepler/types/index.js +15 -0
- package/build/kepler/types/index.js.map +1 -0
- package/build/presentNotificationAsync.d.ts +11 -0
- package/build/presentNotificationAsync.d.ts.map +1 -0
- package/build/presentNotificationAsync.js +22 -0
- package/build/presentNotificationAsync.js.map +1 -0
- package/build/registerTaskAsync.d.ts +29 -0
- package/build/registerTaskAsync.d.ts.map +1 -0
- package/build/registerTaskAsync.js +37 -0
- package/build/registerTaskAsync.js.map +1 -0
- package/build/scheduleNotificationAsync.d.ts +60 -0
- package/build/scheduleNotificationAsync.d.ts.map +1 -0
- package/build/scheduleNotificationAsync.js +261 -0
- package/build/scheduleNotificationAsync.js.map +1 -0
- package/build/setBadgeCountAsync.d.ts +19 -0
- package/build/setBadgeCountAsync.d.ts.map +1 -0
- package/build/setBadgeCountAsync.js +19 -0
- package/build/setBadgeCountAsync.js.map +1 -0
- package/build/setNotificationCategoryAsync.d.ts +15 -0
- package/build/setNotificationCategoryAsync.d.ts.map +1 -0
- package/build/setNotificationCategoryAsync.js +22 -0
- package/build/setNotificationCategoryAsync.js.map +1 -0
- package/build/setNotificationChannelAsync.android.d.ts +3 -0
- package/build/setNotificationChannelAsync.android.d.ts.map +1 -0
- package/build/setNotificationChannelAsync.android.js +9 -0
- package/build/setNotificationChannelAsync.android.js.map +1 -0
- package/build/setNotificationChannelAsync.d.ts +22 -0
- package/build/setNotificationChannelAsync.d.ts.map +1 -0
- package/build/setNotificationChannelAsync.js +24 -0
- package/build/setNotificationChannelAsync.js.map +1 -0
- package/build/setNotificationChannelGroupAsync.android.d.ts +3 -0
- package/build/setNotificationChannelGroupAsync.android.d.ts.map +1 -0
- package/build/setNotificationChannelGroupAsync.android.js +9 -0
- package/build/setNotificationChannelGroupAsync.android.js.map +1 -0
- package/build/setNotificationChannelGroupAsync.d.ts +12 -0
- package/build/setNotificationChannelGroupAsync.d.ts.map +1 -0
- package/build/setNotificationChannelGroupAsync.js +14 -0
- package/build/setNotificationChannelGroupAsync.js.map +1 -0
- package/build/unregisterForNotificationsAsync.d.ts +2 -0
- package/build/unregisterForNotificationsAsync.d.ts.map +1 -0
- package/build/unregisterForNotificationsAsync.js +10 -0
- package/build/unregisterForNotificationsAsync.js.map +1 -0
- package/build/unregisterTaskAsync.d.ts +7 -0
- package/build/unregisterTaskAsync.d.ts.map +1 -0
- package/build/unregisterTaskAsync.js +15 -0
- package/build/unregisterTaskAsync.js.map +1 -0
- package/build/useLastNotificationResponse.d.ts +38 -0
- package/build/useLastNotificationResponse.d.ts.map +1 -0
- package/build/useLastNotificationResponse.js +63 -0
- package/build/useLastNotificationResponse.js.map +1 -0
- package/build/utils/keplerUuidUtils.d.ts +5 -0
- package/build/utils/keplerUuidUtils.d.ts.map +1 -0
- package/build/utils/keplerUuidUtils.js +15 -0
- package/build/utils/keplerUuidUtils.js.map +1 -0
- package/build/utils/updateDevicePushTokenAsync.d.ts +3 -0
- package/build/utils/updateDevicePushTokenAsync.d.ts.map +1 -0
- package/build/utils/updateDevicePushTokenAsync.js +115 -0
- package/build/utils/updateDevicePushTokenAsync.js.map +1 -0
- package/expo-module.config.json +20 -0
- package/ios/EXNotifications/Building/EXNotificationBuilder.h +19 -0
- package/ios/EXNotifications/Building/EXNotificationBuilder.m +91 -0
- package/ios/EXNotifications/EXBadgeModule.h +11 -0
- package/ios/EXNotifications/EXBadgeModule.m +36 -0
- package/ios/EXNotifications/EXServerRegistrationModule.h +19 -0
- package/ios/EXNotifications/EXServerRegistrationModule.m +194 -0
- package/ios/EXNotifications/Notifications/Background/EXBackgroundNotificationTasksModule.h +16 -0
- package/ios/EXNotifications/Notifications/Background/EXBackgroundNotificationTasksModule.m +62 -0
- package/ios/EXNotifications/Notifications/Background/EXBackgroundRemoteNotificationConsumer.h +14 -0
- package/ios/EXNotifications/Notifications/Background/EXBackgroundRemoteNotificationConsumer.m +51 -0
- package/ios/EXNotifications/Notifications/Categories/EXNotificationCategoriesModule.h +25 -0
- package/ios/EXNotifications/Notifications/Categories/EXNotificationCategoriesModule.m +217 -0
- package/ios/EXNotifications/Notifications/EXNotificationCenterDelegate.h +29 -0
- package/ios/EXNotifications/Notifications/EXNotificationCenterDelegate.m +209 -0
- package/ios/EXNotifications/Notifications/EXNotificationSerializer.h +16 -0
- package/ios/EXNotifications/Notifications/EXNotificationSerializer.m +232 -0
- package/ios/EXNotifications/Notifications/EXNotificationsDelegate.h +27 -0
- package/ios/EXNotifications/Notifications/Emitter/EXNotificationsEmitter.h +17 -0
- package/ios/EXNotifications/Notifications/Emitter/EXNotificationsEmitter.m +114 -0
- package/ios/EXNotifications/Notifications/Handler/EXNotificationsHandlerModule.h +12 -0
- package/ios/EXNotifications/Notifications/Handler/EXNotificationsHandlerModule.m +109 -0
- package/ios/EXNotifications/Notifications/Handler/EXSingleNotificationHandlerTask.h +33 -0
- package/ios/EXNotifications/Notifications/Handler/EXSingleNotificationHandlerTask.m +124 -0
- package/ios/EXNotifications/Notifications/NSDictionary+EXNotificationsVerifyingClass.h +7 -0
- package/ios/EXNotifications/Notifications/NSDictionary+EXNotificationsVerifyingClass.m +19 -0
- package/ios/EXNotifications/Notifications/Presenting/EXNotificationPresentationModule.h +13 -0
- package/ios/EXNotifications/Notifications/Presenting/EXNotificationPresentationModule.m +124 -0
- package/ios/EXNotifications/Notifications/Scheduling/EXNotificationSchedulerModule.h +21 -0
- package/ios/EXNotifications/Notifications/Scheduling/EXNotificationSchedulerModule.m +263 -0
- package/ios/EXNotifications/Permissions/EXLegacyRemoteNotificationPermissionRequester.h +13 -0
- package/ios/EXNotifications/Permissions/EXLegacyRemoteNotificationPermissionRequester.m +135 -0
- package/ios/EXNotifications/Permissions/EXNotificationPermissionsModule.h +8 -0
- package/ios/EXNotifications/Permissions/EXNotificationPermissionsModule.m +67 -0
- package/ios/EXNotifications/Permissions/EXRemoteNotificationPermissionSingletonModule.h +29 -0
- package/ios/EXNotifications/Permissions/EXRemoteNotificationPermissionSingletonModule.m +68 -0
- package/ios/EXNotifications/Permissions/EXUserFacingNotificationsPermissionsRequester.h +15 -0
- package/ios/EXNotifications/Permissions/EXUserFacingNotificationsPermissionsRequester.m +202 -0
- package/ios/EXNotifications/PushToken/EXPushTokenListener.h +14 -0
- package/ios/EXNotifications/PushToken/EXPushTokenManager.h +24 -0
- package/ios/EXNotifications/PushToken/EXPushTokenManager.m +63 -0
- package/ios/EXNotifications/PushToken/EXPushTokenModule.h +9 -0
- package/ios/EXNotifications/PushToken/EXPushTokenModule.m +154 -0
- package/ios/EXNotifications.podspec +25 -0
- package/package.json +67 -0
- package/plugin/build/withNotifications.d.ts +28 -0
- package/plugin/build/withNotifications.js +12 -0
- package/plugin/build/withNotificationsAndroid.d.ts +42 -0
- package/plugin/build/withNotificationsAndroid.js +184 -0
- package/plugin/build/withNotificationsIOS.d.ts +14 -0
- package/plugin/build/withNotificationsIOS.js +58 -0
- package/plugin/jest.config.js +1 -0
- package/plugin/src/withNotifications.ts +40 -0
- package/plugin/src/withNotificationsAndroid.ts +239 -0
- package/plugin/src/withNotificationsIOS.ts +78 -0
- package/plugin/tsconfig.json +9 -0
- package/src/BackgroundNotificationTasksModule.kepler.ts +8 -0
- package/src/BackgroundNotificationTasksModule.native.ts +7 -0
- package/src/BackgroundNotificationTasksModule.ts +8 -0
- package/src/BackgroundNotificationTasksModule.types.ts +12 -0
- package/src/BackgroundNotificationTasksModule.web.ts +8 -0
- package/src/BadgeModule.kepler.ts +8 -0
- package/src/BadgeModule.native.ts +15 -0
- package/src/BadgeModule.ts +6 -0
- package/src/BadgeModule.types.ts +11 -0
- package/src/BadgeModule.web.ts +28 -0
- package/src/DevicePushTokenAutoRegistration.fx.ts +119 -0
- package/src/NotificationCategoriesModule.kepler.ts +10 -0
- package/src/NotificationCategoriesModule.native.ts +7 -0
- package/src/NotificationCategoriesModule.ts +15 -0
- package/src/NotificationCategoriesModule.types.ts +22 -0
- package/src/NotificationCategoriesModule.web.ts +17 -0
- package/src/NotificationChannelGroupManager.kepler.ts +8 -0
- package/src/NotificationChannelGroupManager.native.ts +7 -0
- package/src/NotificationChannelGroupManager.ts +6 -0
- package/src/NotificationChannelGroupManager.types.ts +34 -0
- package/src/NotificationChannelManager.kepler.ts +8 -0
- package/src/NotificationChannelManager.native.ts +5 -0
- package/src/NotificationChannelManager.ts +6 -0
- package/src/NotificationChannelManager.types.ts +115 -0
- package/src/NotificationPermissions.ts +91 -0
- package/src/NotificationPermissions.types.ts +102 -0
- package/src/NotificationPermissionsModule.kepler.ts +8 -0
- package/src/NotificationPermissionsModule.native.ts +7 -0
- package/src/NotificationPermissionsModule.ts +83 -0
- package/src/NotificationPermissionsModule.types.ts +13 -0
- package/src/NotificationPresenterModule.kepler.ts +67 -0
- package/src/NotificationPresenterModule.native.ts +5 -0
- package/src/NotificationPresenterModule.ts +6 -0
- package/src/NotificationPresenterModule.types.ts +13 -0
- package/src/NotificationScheduler.kepler.ts +63 -0
- package/src/NotificationScheduler.native.ts +5 -0
- package/src/NotificationScheduler.ts +6 -0
- package/src/NotificationScheduler.types.ts +89 -0
- package/src/Notifications.types.ts +722 -0
- package/src/NotificationsEmitter.ts +111 -0
- package/src/NotificationsEmitterModule.kepler.ts +8 -0
- package/src/NotificationsEmitterModule.native.ts +5 -0
- package/src/NotificationsEmitterModule.ts +17 -0
- package/src/NotificationsEmitterModule.types.ts +7 -0
- package/src/NotificationsHandler.ts +120 -0
- package/src/NotificationsHandlerModule.kepler.ts +8 -0
- package/src/NotificationsHandlerModule.native.ts +5 -0
- package/src/NotificationsHandlerModule.ts +17 -0
- package/src/NotificationsHandlerModule.types.ts +10 -0
- package/src/PushTokenManager.kepler.ts +8 -0
- package/src/PushTokenManager.native.ts +5 -0
- package/src/PushTokenManager.ts +17 -0
- package/src/PushTokenManager.types.ts +6 -0
- package/src/ServerRegistrationModule.kepler.ts +8 -0
- package/src/ServerRegistrationModule.native.ts +7 -0
- package/src/ServerRegistrationModule.ts +6 -0
- package/src/ServerRegistrationModule.types.ts +7 -0
- package/src/ServerRegistrationModule.web.ts +56 -0
- package/src/TokenEmitter.ts +56 -0
- package/src/Tokens.types.ts +110 -0
- package/src/cancelAllScheduledNotificationsAsync.ts +16 -0
- package/src/cancelScheduledNotificationAsync.ts +31 -0
- package/src/deleteNotificationCategoryAsync.ts +23 -0
- package/src/deleteNotificationChannelAsync.android.ts +11 -0
- package/src/deleteNotificationChannelAsync.ts +10 -0
- package/src/deleteNotificationChannelGroupAsync.android.ts +11 -0
- package/src/deleteNotificationChannelGroupAsync.ts +10 -0
- package/src/dismissAllNotificationsAsync.ts +16 -0
- package/src/dismissNotificationAsync.ts +19 -0
- package/src/getAllScheduledNotificationsAsync.ts +17 -0
- package/src/getBadgeCountAsync.ts +17 -0
- package/src/getDevicePushTokenAsync.ts +31 -0
- package/src/getDevicePushTokenAsync.web.ts +122 -0
- package/src/getExpoPushTokenAsync.ts +238 -0
- package/src/getNextTriggerDateAsync.ts +38 -0
- package/src/getNotificationCategoriesAsync.ts +21 -0
- package/src/getNotificationChannelAsync.android.ts +13 -0
- package/src/getNotificationChannelAsync.ts +16 -0
- package/src/getNotificationChannelGroupAsync.android.ts +14 -0
- package/src/getNotificationChannelGroupAsync.ts +17 -0
- package/src/getNotificationChannelGroupsAsync.android.ts +13 -0
- package/src/getNotificationChannelGroupsAsync.ts +15 -0
- package/src/getNotificationChannelsAsync.android.ts +11 -0
- package/src/getNotificationChannelsAsync.ts +13 -0
- package/src/getPresentedNotificationsAsync.ts +18 -0
- package/src/index.ts +38 -0
- package/src/kepler/NotificationContent.ts +119 -0
- package/src/kepler/index.ts +16 -0
- package/src/kepler/native-notification-manager.ts +10 -0
- package/src/kepler/types/NotificationManagerTypes.ts +508 -0
- package/src/kepler/types/index.ts +16 -0
- package/src/presentNotificationAsync.ts +32 -0
- package/src/registerTaskAsync.ts +39 -0
- package/src/scheduleNotificationAsync.ts +335 -0
- package/src/setBadgeCountAsync.ts +32 -0
- package/src/setNotificationCategoryAsync.ts +37 -0
- package/src/setNotificationChannelAsync.android.ts +15 -0
- package/src/setNotificationChannelAsync.ts +28 -0
- package/src/setNotificationChannelGroupAsync.android.ts +18 -0
- package/src/setNotificationChannelGroupAsync.ts +21 -0
- package/src/unregisterForNotificationsAsync.ts +11 -0
- package/src/unregisterTaskAsync.ts +17 -0
- package/src/useLastNotificationResponse.ts +70 -0
- package/src/utils/keplerUuidUtils.ts +29 -0
- package/src/utils/updateDevicePushTokenAsync.ts +147 -0
- package/tsconfig.json +9 -0
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
// Copyright 2018-present 650 Industries. All rights reserved.
|
|
2
|
+
|
|
3
|
+
#import <EXNotifications/EXServerRegistrationModule.h>
|
|
4
|
+
|
|
5
|
+
// noop (used by code transform to ensure the versioning isn't applied)
|
|
6
|
+
#define EX_UNVERSIONED(symbol) symbol
|
|
7
|
+
|
|
8
|
+
static NSString * const kEXDeviceInstallationUUIDKey = EX_UNVERSIONED(@"EXDeviceInstallationUUIDKey");
|
|
9
|
+
static NSString * const kEXDeviceInstallationUUIDLegacyKey = EX_UNVERSIONED(@"EXDeviceInstallUUIDKey");
|
|
10
|
+
|
|
11
|
+
static NSString * const kEXRegistrationInfoKey = EX_UNVERSIONED(@"EXNotificationRegistrationInfoKey");
|
|
12
|
+
|
|
13
|
+
@implementation EXServerRegistrationModule
|
|
14
|
+
|
|
15
|
+
EX_EXPORT_MODULE(NotificationsServerRegistrationModule)
|
|
16
|
+
|
|
17
|
+
EX_EXPORT_METHOD_AS(getInstallationIdAsync,
|
|
18
|
+
getInstallationIdAsyncWithResolver:(EXPromiseResolveBlock)resolve
|
|
19
|
+
rejecter:(EXPromiseRejectBlock)reject)
|
|
20
|
+
{
|
|
21
|
+
resolve([self getInstallationId]);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
- (NSString *)getInstallationId
|
|
25
|
+
{
|
|
26
|
+
NSString *installationId = [self fetchInstallationId];
|
|
27
|
+
if (installationId) {
|
|
28
|
+
return installationId;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
installationId = [[NSUUID UUID] UUIDString];
|
|
32
|
+
[self setInstallationId:installationId error:NULL];
|
|
33
|
+
return installationId;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
- (nullable NSString *)fetchInstallationId
|
|
37
|
+
{
|
|
38
|
+
NSString *installationId;
|
|
39
|
+
CFTypeRef keychainResult = NULL;
|
|
40
|
+
|
|
41
|
+
if (SecItemCopyMatching((__bridge CFDictionaryRef)[self installationIdGetQuery], &keychainResult) == noErr) {
|
|
42
|
+
NSData *result = (__bridge_transfer NSData *)keychainResult;
|
|
43
|
+
NSString *value = [[NSString alloc] initWithData:result
|
|
44
|
+
encoding:NSUTF8StringEncoding];
|
|
45
|
+
// `initWithUUIDString` returns nil if string is not a valid UUID
|
|
46
|
+
if ([[NSUUID alloc] initWithUUIDString:value]) {
|
|
47
|
+
installationId = value;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
if (installationId) {
|
|
52
|
+
return installationId;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
NSString *legacyUUID = [[NSUserDefaults standardUserDefaults] stringForKey:kEXDeviceInstallationUUIDLegacyKey];
|
|
56
|
+
if (legacyUUID) {
|
|
57
|
+
installationId = legacyUUID;
|
|
58
|
+
|
|
59
|
+
NSError *error = nil;
|
|
60
|
+
if ([self setInstallationId:installationId error:&error]) {
|
|
61
|
+
// We only remove the value from old storage once it's set and saved in the new storage.
|
|
62
|
+
[[NSUserDefaults standardUserDefaults] removeObjectForKey:kEXDeviceInstallationUUIDLegacyKey];
|
|
63
|
+
} else {
|
|
64
|
+
NSLog(@"Could not migrate device installation UUID from legacy storage: %@", error.description);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return installationId;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
- (BOOL)setInstallationId:(NSString *)installationId error:(NSError **)error
|
|
72
|
+
{
|
|
73
|
+
// Delete existing UUID so we don't need to handle "duplicate item" error
|
|
74
|
+
SecItemDelete((__bridge CFDictionaryRef)[self installationIdSearchQuery]);
|
|
75
|
+
|
|
76
|
+
OSStatus status = SecItemAdd((__bridge CFDictionaryRef)[self installationIdSetQuery:installationId], NULL);
|
|
77
|
+
if (status != errSecSuccess && error) {
|
|
78
|
+
*error = [NSError errorWithDomain:NSOSStatusErrorDomain code:status userInfo:nil];
|
|
79
|
+
}
|
|
80
|
+
return status == errSecSuccess;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
# pragma mark - Keychain dictionaries
|
|
84
|
+
|
|
85
|
+
- (NSDictionary *)keychainSearchQueryFor:(NSString *)key merging:(NSDictionary *)dictionaryToMerge
|
|
86
|
+
{
|
|
87
|
+
NSData *encodedKey = [key dataUsingEncoding:NSUTF8StringEncoding];
|
|
88
|
+
NSMutableDictionary *query = [NSMutableDictionary dictionaryWithDictionary:@{
|
|
89
|
+
(__bridge id)kSecClass:(__bridge id)kSecClassGenericPassword,
|
|
90
|
+
(__bridge id)kSecAttrService:[NSBundle mainBundle].bundleIdentifier,
|
|
91
|
+
(__bridge id)kSecAttrGeneric:encodedKey,
|
|
92
|
+
(__bridge id)kSecAttrAccount:encodedKey
|
|
93
|
+
}];
|
|
94
|
+
[query addEntriesFromDictionary:dictionaryToMerge];
|
|
95
|
+
return query;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
# pragma mark Installation ID
|
|
99
|
+
|
|
100
|
+
- (NSDictionary *)installationIdSearchQueryMerging:(NSDictionary *)dictionaryToMerge
|
|
101
|
+
{
|
|
102
|
+
return [self keychainSearchQueryFor:kEXDeviceInstallationUUIDKey merging:dictionaryToMerge];
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
- (NSDictionary *)installationIdSearchQuery
|
|
106
|
+
{
|
|
107
|
+
return [self installationIdSearchQueryMerging:@{}];
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
- (NSDictionary *)installationIdGetQuery
|
|
111
|
+
{
|
|
112
|
+
return [self installationIdSearchQueryMerging:@{
|
|
113
|
+
(__bridge id)kSecMatchLimit:(__bridge id)kSecMatchLimitOne,
|
|
114
|
+
(__bridge id)kSecReturnData:(__bridge id)kCFBooleanTrue
|
|
115
|
+
}];
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
- (NSDictionary *)installationIdSetQuery:(NSString *)deviceInstallationUUID
|
|
119
|
+
{
|
|
120
|
+
return [self installationIdSearchQueryMerging:@{
|
|
121
|
+
(__bridge id)kSecValueData:[deviceInstallationUUID dataUsingEncoding:NSUTF8StringEncoding],
|
|
122
|
+
(__bridge id)kSecAttrAccessible:(__bridge id)kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
|
|
123
|
+
}];
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
# pragma mark Registration information
|
|
127
|
+
|
|
128
|
+
- (NSDictionary *)registrationSearchQueryMerging:(NSDictionary *)dictionaryToMerge
|
|
129
|
+
{
|
|
130
|
+
return [self keychainSearchQueryFor:kEXRegistrationInfoKey merging:dictionaryToMerge];
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
- (NSDictionary *)registrationSearchQuery
|
|
134
|
+
{
|
|
135
|
+
return [self registrationSearchQueryMerging:@{}];
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
- (NSDictionary *)registrationGetQuery
|
|
139
|
+
{
|
|
140
|
+
return [self registrationSearchQueryMerging:@{
|
|
141
|
+
(__bridge id)kSecMatchLimit:(__bridge id)kSecMatchLimitOne,
|
|
142
|
+
(__bridge id)kSecReturnData:(__bridge id)kCFBooleanTrue
|
|
143
|
+
}];
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
- (NSDictionary *)registrationSetQuery:(NSString *)registration
|
|
147
|
+
{
|
|
148
|
+
return [self registrationSearchQueryMerging:@{
|
|
149
|
+
(__bridge id)kSecValueData:[registration dataUsingEncoding:NSUTF8StringEncoding],
|
|
150
|
+
(__bridge id)kSecAttrAccessible:(__bridge id)kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
|
|
151
|
+
}];
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
EX_EXPORT_METHOD_AS(getRegistrationInfoAsync,
|
|
155
|
+
getRegistrationInfoAsyncWithResolver:(EXPromiseResolveBlock)resolve
|
|
156
|
+
rejecter:(EXPromiseRejectBlock)reject)
|
|
157
|
+
{
|
|
158
|
+
CFTypeRef keychainResult = NULL;
|
|
159
|
+
OSStatus status = SecItemCopyMatching((__bridge CFDictionaryRef)[self registrationGetQuery], &keychainResult);
|
|
160
|
+
if (status == noErr) {
|
|
161
|
+
NSData *result = (__bridge_transfer NSData *)keychainResult;
|
|
162
|
+
NSString *value = [[NSString alloc] initWithData:result
|
|
163
|
+
encoding:NSUTF8StringEncoding];
|
|
164
|
+
resolve(value);
|
|
165
|
+
} else if (status == errSecItemNotFound) {
|
|
166
|
+
resolve(nil);
|
|
167
|
+
} else {
|
|
168
|
+
NSError *error = [NSError errorWithDomain:NSOSStatusErrorDomain code:status userInfo:nil];
|
|
169
|
+
reject(@"ERR_NOTIFICATIONS_KEYCHAIN_ACCESS", @"Could not fetch registration information from keychain.", error);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
EX_EXPORT_METHOD_AS(setRegistrationInfoAsync,
|
|
174
|
+
setRegistrationInfoAsync:(NSString *)registrationInfo
|
|
175
|
+
resolver:(EXPromiseResolveBlock)resolve
|
|
176
|
+
rejecter:(EXPromiseRejectBlock)reject)
|
|
177
|
+
{
|
|
178
|
+
// Delete existing registration so we don't need to handle "duplicate item" error
|
|
179
|
+
SecItemDelete((__bridge CFDictionaryRef)[self registrationSearchQuery]);
|
|
180
|
+
|
|
181
|
+
if (registrationInfo) {
|
|
182
|
+
OSStatus status = SecItemAdd((__bridge CFDictionaryRef)[self registrationSetQuery:registrationInfo], NULL);
|
|
183
|
+
if (status == errSecSuccess) {
|
|
184
|
+
resolve(nil);
|
|
185
|
+
} else {
|
|
186
|
+
NSError *error = [NSError errorWithDomain:NSOSStatusErrorDomain code:status userInfo:nil];
|
|
187
|
+
reject(@"ERR_NOTIFICATIONS_KEYCHAIN_ACCESS", @"Could not save registration information into keychain.", error);
|
|
188
|
+
}
|
|
189
|
+
} else {
|
|
190
|
+
resolve(nil);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
@end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// Copyright 2021-present 650 Industries. All rights reserved.
|
|
2
|
+
|
|
3
|
+
#import <ExpoModulesCore/EXExportedModule.h>
|
|
4
|
+
#import <ExpoModulesCore/EXModuleRegistryConsumer.h>
|
|
5
|
+
#import <EXNotifications/EXNotificationsDelegate.h>
|
|
6
|
+
|
|
7
|
+
typedef NS_ENUM(NSUInteger, EXBackgroundNotificationResult) {
|
|
8
|
+
EXBackgroundNotificationResultNoData = 1,
|
|
9
|
+
EXBackgroundNotificationResultNewData = 2,
|
|
10
|
+
EXBackgroundNotificationResultFailed = 3,
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
@interface EXBackgroundNotificationTasksModule : EXExportedModule <EXModuleRegistryConsumer>
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
@end
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
// Copyright 2018-present 650 Industries. All rights reserved.
|
|
2
|
+
|
|
3
|
+
#import <EXNotifications/EXBackgroundNotificationTasksModule.h>
|
|
4
|
+
#import <EXNotifications/EXBackgroundRemoteNotificationConsumer.h>
|
|
5
|
+
#import <ExpoModulesCore/EXTaskManagerInterface.h>
|
|
6
|
+
|
|
7
|
+
@interface EXBackgroundNotificationTasksModule ()
|
|
8
|
+
|
|
9
|
+
@property (nonatomic, weak) id<EXTaskManagerInterface> taskManager;
|
|
10
|
+
|
|
11
|
+
@end
|
|
12
|
+
|
|
13
|
+
@implementation EXBackgroundNotificationTasksModule
|
|
14
|
+
|
|
15
|
+
EX_EXPORT_MODULE(ExpoBackgroundNotificationTasksModule);
|
|
16
|
+
|
|
17
|
+
# pragma mark - EXModuleRegistryConsumer
|
|
18
|
+
|
|
19
|
+
- (void)setModuleRegistry:(EXModuleRegistry *)moduleRegistry
|
|
20
|
+
{
|
|
21
|
+
_taskManager = [moduleRegistry getModuleImplementingProtocol:@protocol(EXTaskManagerInterface)];
|
|
22
|
+
}
|
|
23
|
+
# pragma mark - Exported methods
|
|
24
|
+
|
|
25
|
+
EX_EXPORT_METHOD_AS(registerTaskAsync,
|
|
26
|
+
registerTaskWithName:(nonnull NSString *)taskName
|
|
27
|
+
resolve:(EXPromiseResolveBlock)resolve
|
|
28
|
+
reject:(EXPromiseRejectBlock)reject)
|
|
29
|
+
{
|
|
30
|
+
if (![_taskManager hasBackgroundModeEnabled:@"remote-notification"]) {
|
|
31
|
+
return reject(
|
|
32
|
+
@"E_BACKGROUND_REMOTE_NOTIFICATIONS_DISABLED",
|
|
33
|
+
@"Background remote notifications have not been configured. To enable it, add `remote-notification` to `UIBackgroundModes` in the application's Info.plist file.",
|
|
34
|
+
nil
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
@try {
|
|
39
|
+
[_taskManager registerTaskWithName:taskName
|
|
40
|
+
consumer:EXBackgroundRemoteNotificationConsumer.class
|
|
41
|
+
options:@{}];
|
|
42
|
+
}
|
|
43
|
+
@catch (NSException *e) {
|
|
44
|
+
return reject(e.name, e.reason, nil);
|
|
45
|
+
}
|
|
46
|
+
resolve(nil);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
EX_EXPORT_METHOD_AS(unregisterTaskAsync,
|
|
50
|
+
unregisterTaskWithName:(nonnull NSString *)taskName
|
|
51
|
+
resolve:(EXPromiseResolveBlock)resolve
|
|
52
|
+
reject:(EXPromiseRejectBlock)reject)
|
|
53
|
+
{
|
|
54
|
+
@try {
|
|
55
|
+
[_taskManager unregisterTaskWithName:taskName consumerClass:[EXBackgroundRemoteNotificationConsumer class]];
|
|
56
|
+
} @catch (NSException *e) {
|
|
57
|
+
return reject(e.name, e.reason, nil);
|
|
58
|
+
}
|
|
59
|
+
resolve(nil);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
@end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// Copyright 2021-present 650 Industries. All rights reserved.
|
|
2
|
+
|
|
3
|
+
#import <Foundation/Foundation.h>
|
|
4
|
+
#import <ExpoModulesCore/EXTaskConsumerInterface.h>
|
|
5
|
+
|
|
6
|
+
NS_ASSUME_NONNULL_BEGIN
|
|
7
|
+
|
|
8
|
+
@interface EXBackgroundRemoteNotificationConsumer : NSObject <EXTaskConsumerInterface>
|
|
9
|
+
|
|
10
|
+
@property (nonatomic, strong) id<EXTaskInterface> task;
|
|
11
|
+
|
|
12
|
+
@end
|
|
13
|
+
|
|
14
|
+
NS_ASSUME_NONNULL_END
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
// Copyright 2021-present 650 Industries. All rights reserved.
|
|
2
|
+
|
|
3
|
+
#import <EXNotifications/EXBackgroundNotificationTasksModule.h>
|
|
4
|
+
#import <EXNotifications/EXBackgroundRemoteNotificationConsumer.h>
|
|
5
|
+
#import <ExpoModulesCore/EXTaskInterface.h>
|
|
6
|
+
|
|
7
|
+
@implementation EXBackgroundRemoteNotificationConsumer
|
|
8
|
+
|
|
9
|
+
+ (BOOL)supportsLaunchReason:(EXTaskLaunchReason)launchReason
|
|
10
|
+
{
|
|
11
|
+
return launchReason == EXTaskLaunchReasonRemoteNotification;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
- (NSString *)taskType
|
|
15
|
+
{
|
|
16
|
+
return @"remote-notification";
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// Associating task to the consumer.
|
|
20
|
+
- (void)didRegisterTask:(id<EXTaskInterface>)task
|
|
21
|
+
{
|
|
22
|
+
_task = task;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// Method that is being called when the JS app just finished launching,
|
|
26
|
+
// after the native app was launched with the launch reason supported by the consumer.
|
|
27
|
+
// For background notifications, `application:didReceiveRemoteNotification:fetchCompletionHandler:` is the entry point of this method,
|
|
28
|
+
// so the task can be executed immediately here
|
|
29
|
+
- (void)didBecomeReadyToExecuteWithData:(NSDictionary *)data
|
|
30
|
+
{
|
|
31
|
+
[_task executeWithData:data withError:nil];
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// Translate result received from JS to another (native) type that is then used for example as an argument in completion callbacks.
|
|
35
|
+
- (NSUInteger)normalizeTaskResult:(id)result
|
|
36
|
+
{
|
|
37
|
+
if (!result || result == [NSNull null]) {
|
|
38
|
+
return UIBackgroundFetchResultNoData;
|
|
39
|
+
}
|
|
40
|
+
switch ([result unsignedIntegerValue]) {
|
|
41
|
+
case EXBackgroundNotificationResultNewData:
|
|
42
|
+
return UIBackgroundFetchResultNewData;
|
|
43
|
+
case EXBackgroundNotificationResultFailed:
|
|
44
|
+
return UIBackgroundFetchResultFailed;
|
|
45
|
+
case EXBackgroundNotificationResultNoData:
|
|
46
|
+
default:
|
|
47
|
+
return UIBackgroundFetchResultNoData;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
@end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// Copyright 2018-present 650 Industries. All rights reserved.
|
|
2
|
+
|
|
3
|
+
#import <ExpoModulesCore/EXExportedModule.h>
|
|
4
|
+
#import <EXNotifications/EXNotificationsDelegate.h>
|
|
5
|
+
|
|
6
|
+
@interface EXNotificationCategoriesModule : EXExportedModule <EXNotificationsDelegate>
|
|
7
|
+
|
|
8
|
+
- (void)getNotificationCategoriesAsyncWithResolver:(EXPromiseResolveBlock)resolve reject:(EXPromiseRejectBlock)reject;
|
|
9
|
+
- (void)setNotificationCategoryWithCategoryId:(NSString *)categoryId
|
|
10
|
+
actions:(NSArray *)actions
|
|
11
|
+
options:(NSDictionary *)options
|
|
12
|
+
resolve:(EXPromiseResolveBlock)resolve
|
|
13
|
+
reject:(EXPromiseRejectBlock)reject;
|
|
14
|
+
- (void)deleteNotificationCategoryWithCategoryId:(NSString *)categoryId
|
|
15
|
+
resolve:(EXPromiseResolveBlock)resolve
|
|
16
|
+
reject:(EXPromiseRejectBlock)reject;
|
|
17
|
+
- (NSMutableDictionary *)serializeCategory:(UNNotificationCategory *)category;
|
|
18
|
+
- (UNNotificationCategory *)createCategoryWithId:(NSString*)categoryId
|
|
19
|
+
actions:(NSArray *)actions
|
|
20
|
+
options:(NSDictionary *)options;
|
|
21
|
+
- (NSMutableDictionary *)serializeCategoryOptions:(UNNotificationCategory *)category;
|
|
22
|
+
- (NSMutableArray *)serializeActions:(NSArray<UNNotificationAction *>*)actions;
|
|
23
|
+
- (NSMutableDictionary *)serializeActionOptions:(NSUInteger)options;
|
|
24
|
+
|
|
25
|
+
@end
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
// Copyright 2018-present 650 Industries. All rights reserved.
|
|
2
|
+
|
|
3
|
+
#import <EXNotifications/EXNotificationCategoriesModule.h>
|
|
4
|
+
#import <EXNotifications/EXNotificationCenterDelegate.h>
|
|
5
|
+
|
|
6
|
+
@implementation EXNotificationCategoriesModule
|
|
7
|
+
|
|
8
|
+
EX_EXPORT_MODULE(ExpoNotificationCategoriesModule);
|
|
9
|
+
|
|
10
|
+
# pragma mark - Exported methods
|
|
11
|
+
|
|
12
|
+
EX_EXPORT_METHOD_AS(getNotificationCategoriesAsync,
|
|
13
|
+
getNotificationCategoriesAsyncWithResolver:(EXPromiseResolveBlock)resolve reject:(EXPromiseRejectBlock)reject)
|
|
14
|
+
{
|
|
15
|
+
[[UNUserNotificationCenter currentNotificationCenter] getNotificationCategoriesWithCompletionHandler:^(NSSet<UNNotificationCategory *> *categories) {
|
|
16
|
+
NSMutableArray* existingCategories = [NSMutableArray new];
|
|
17
|
+
for (UNNotificationCategory *category in categories) {
|
|
18
|
+
[existingCategories addObject:[self serializeCategory:category]];
|
|
19
|
+
}
|
|
20
|
+
resolve(existingCategories);
|
|
21
|
+
}];
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
EX_EXPORT_METHOD_AS(setNotificationCategoryAsync,
|
|
25
|
+
setNotificationCategoryWithCategoryId:(NSString *)categoryId
|
|
26
|
+
actions:(NSArray *)actions
|
|
27
|
+
options:(NSDictionary *)options
|
|
28
|
+
resolve:(EXPromiseResolveBlock)resolve reject:(EXPromiseRejectBlock)reject)
|
|
29
|
+
{
|
|
30
|
+
UNNotificationCategory *newCategory = [EXNotificationCategoriesModule createCategoryWithId:categoryId
|
|
31
|
+
actions:actions
|
|
32
|
+
options:options];
|
|
33
|
+
|
|
34
|
+
[[UNUserNotificationCenter currentNotificationCenter] getNotificationCategoriesWithCompletionHandler:^(NSSet<UNNotificationCategory *> *categories) {
|
|
35
|
+
NSMutableSet<UNNotificationCategory *> *newCategories = [categories mutableCopy] ?: [[NSMutableSet alloc] init];
|
|
36
|
+
for (UNNotificationCategory *category in newCategories) {
|
|
37
|
+
if ([category.identifier isEqualToString:newCategory.identifier]) {
|
|
38
|
+
[newCategories removeObject:category];
|
|
39
|
+
break;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
[newCategories addObject:newCategory];
|
|
43
|
+
[[UNUserNotificationCenter currentNotificationCenter] setNotificationCategories:newCategories];
|
|
44
|
+
resolve([self serializeCategory:newCategory]);
|
|
45
|
+
}];
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
EX_EXPORT_METHOD_AS(deleteNotificationCategoryAsync,
|
|
49
|
+
deleteNotificationCategoryWithCategoryId:(NSString *)categoryId
|
|
50
|
+
resolve:(EXPromiseResolveBlock)resolve reject:(EXPromiseRejectBlock)reject)
|
|
51
|
+
{
|
|
52
|
+
[[UNUserNotificationCenter currentNotificationCenter] getNotificationCategoriesWithCompletionHandler:^(NSSet<UNNotificationCategory *> *categories) {
|
|
53
|
+
BOOL didDelete = NO;
|
|
54
|
+
NSMutableSet<UNNotificationCategory *> *newCategories = [categories mutableCopy];
|
|
55
|
+
for (UNNotificationCategory *category in newCategories) {
|
|
56
|
+
if ([category.identifier isEqualToString:categoryId]) {
|
|
57
|
+
[newCategories removeObject:category];
|
|
58
|
+
didDelete = YES;
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
[[UNUserNotificationCenter currentNotificationCenter] setNotificationCategories:newCategories];
|
|
63
|
+
resolve(@(didDelete));
|
|
64
|
+
}];
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
# pragma mark- Internal
|
|
68
|
+
|
|
69
|
+
+ (UNNotificationCategory *)createCategoryWithId:(NSString*)categoryId
|
|
70
|
+
actions:(NSArray *)actions
|
|
71
|
+
options:(NSDictionary *)options
|
|
72
|
+
{
|
|
73
|
+
NSArray<NSString *> *intentIdentifiers = options[@"intentIdentifiers"];
|
|
74
|
+
NSString *previewPlaceholder = options[@"previewPlaceholder"];
|
|
75
|
+
NSString *categorySummaryFormat = options[@"categorySummaryFormat"];
|
|
76
|
+
|
|
77
|
+
NSMutableArray<UNNotificationAction *> *actionsArray = [[NSMutableArray alloc] init];
|
|
78
|
+
for (NSDictionary<NSString *, id> *actionParams in actions) {
|
|
79
|
+
[actionsArray addObject:[self parseNotificationActionFromParams:actionParams]];
|
|
80
|
+
}
|
|
81
|
+
UNNotificationCategoryOptions categoryOptions = [self parseNotificationCategoryOptionsFromParams: options];
|
|
82
|
+
UNNotificationCategory *newCategory;
|
|
83
|
+
if (@available(iOS 12, *)) {
|
|
84
|
+
newCategory = [UNNotificationCategory categoryWithIdentifier:categoryId
|
|
85
|
+
actions:actionsArray
|
|
86
|
+
intentIdentifiers:intentIdentifiers
|
|
87
|
+
hiddenPreviewsBodyPlaceholder:previewPlaceholder
|
|
88
|
+
categorySummaryFormat:categorySummaryFormat
|
|
89
|
+
options:categoryOptions];
|
|
90
|
+
} else if (@available(iOS 11, *)) {
|
|
91
|
+
newCategory = [UNNotificationCategory categoryWithIdentifier:categoryId
|
|
92
|
+
actions:actionsArray
|
|
93
|
+
intentIdentifiers:intentIdentifiers
|
|
94
|
+
hiddenPreviewsBodyPlaceholder:previewPlaceholder
|
|
95
|
+
options:categoryOptions];
|
|
96
|
+
} else {
|
|
97
|
+
newCategory = [UNNotificationCategory categoryWithIdentifier:categoryId
|
|
98
|
+
actions:actionsArray
|
|
99
|
+
intentIdentifiers:intentIdentifiers
|
|
100
|
+
options:categoryOptions];
|
|
101
|
+
}
|
|
102
|
+
return newCategory;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
+ (UNNotificationAction *)parseNotificationActionFromParams:(NSDictionary *)params
|
|
106
|
+
{
|
|
107
|
+
NSString *identifier = params[@"identifier"];
|
|
108
|
+
NSString *buttonTitle = params[@"buttonTitle"];
|
|
109
|
+
UNNotificationActionOptions options = UNNotificationActionOptionNone;
|
|
110
|
+
|
|
111
|
+
if (params[@"options"][@"opensAppToForeground"] == nil || [params[@"options"][@"opensAppToForeground"] boolValue]) {
|
|
112
|
+
options += UNNotificationActionOptionForeground;
|
|
113
|
+
}
|
|
114
|
+
if ([params[@"options"][@"isDestructive"] boolValue]) {
|
|
115
|
+
options += UNNotificationActionOptionDestructive;
|
|
116
|
+
}
|
|
117
|
+
if ([params[@"options"][@"isAuthenticationRequired"] boolValue]) {
|
|
118
|
+
options += UNNotificationActionOptionAuthenticationRequired;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
if ([params[@"textInput"] isKindOfClass:[NSDictionary class]]) {
|
|
122
|
+
return [UNTextInputNotificationAction actionWithIdentifier:identifier
|
|
123
|
+
title:buttonTitle
|
|
124
|
+
options:options
|
|
125
|
+
textInputButtonTitle:params[@"textInput"][@"submitButtonTitle"]
|
|
126
|
+
textInputPlaceholder:params[@"textInput"][@"placeholder"]];
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
return [UNNotificationAction actionWithIdentifier:identifier title:buttonTitle options:options];
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
+ (UNNotificationCategoryOptions )parseNotificationCategoryOptionsFromParams:(NSDictionary *)params
|
|
133
|
+
{
|
|
134
|
+
UNNotificationCategoryOptions options = UNNotificationCategoryOptionNone;
|
|
135
|
+
if ([params[@"customDismissAction"] boolValue]) {
|
|
136
|
+
options += UNNotificationCategoryOptionCustomDismissAction;
|
|
137
|
+
}
|
|
138
|
+
if ([params[@"allowInCarPlay"] boolValue]) {
|
|
139
|
+
options += UNNotificationCategoryOptionAllowInCarPlay;
|
|
140
|
+
}
|
|
141
|
+
if (@available(iOS 11, *)) {
|
|
142
|
+
if ([params[@"showTitle"] boolValue]) {
|
|
143
|
+
options += UNNotificationCategoryOptionHiddenPreviewsShowTitle;
|
|
144
|
+
}
|
|
145
|
+
if ([params[@"showSubtitle"] boolValue]) {
|
|
146
|
+
options += UNNotificationCategoryOptionHiddenPreviewsShowSubtitle;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
if (@available(iOS 13, *)) {
|
|
150
|
+
if ([params[@"allowAnnouncement"] boolValue]) {
|
|
151
|
+
options += UNNotificationCategoryOptionAllowAnnouncement;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
return options;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
- (NSMutableDictionary *)serializeCategory:(UNNotificationCategory *)category
|
|
159
|
+
{
|
|
160
|
+
NSMutableDictionary* serializedCategory = [NSMutableDictionary dictionary];
|
|
161
|
+
serializedCategory[@"identifier"] = category.identifier;
|
|
162
|
+
serializedCategory[@"actions"] = [self serializeActions: category.actions];
|
|
163
|
+
serializedCategory[@"options"] = [self serializeCategoryOptions: category];
|
|
164
|
+
return serializedCategory;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
- (NSMutableDictionary *)serializeCategoryOptions:(UNNotificationCategory *)category
|
|
168
|
+
{
|
|
169
|
+
NSMutableDictionary* serializedOptions = [NSMutableDictionary dictionary];
|
|
170
|
+
serializedOptions[@"intentIdentifiers"] = category.intentIdentifiers;
|
|
171
|
+
serializedOptions[@"customDismissAction"] = [NSNumber numberWithBool:((category.options & UNNotificationCategoryOptionCustomDismissAction) != 0)];
|
|
172
|
+
serializedOptions[@"allowInCarPlay"] = [NSNumber numberWithBool:((category.options & UNNotificationCategoryOptionAllowInCarPlay) != 0)];
|
|
173
|
+
if (@available(iOS 11, *)) {
|
|
174
|
+
serializedOptions[@"previewPlaceholder"] = category.hiddenPreviewsBodyPlaceholder;
|
|
175
|
+
serializedOptions[@"showTitle"] = [NSNumber numberWithBool:((category.options & UNNotificationCategoryOptionHiddenPreviewsShowTitle) != 0)];
|
|
176
|
+
serializedOptions[@"showSubtitle"] = [NSNumber numberWithBool:((category.options & UNNotificationCategoryOptionHiddenPreviewsShowSubtitle) != 0)];
|
|
177
|
+
}
|
|
178
|
+
if (@available(iOS 12, *)) {
|
|
179
|
+
serializedOptions[@"categorySummaryFormat"] = category.categorySummaryFormat;
|
|
180
|
+
}
|
|
181
|
+
if (@available(iOS 13, *)) {
|
|
182
|
+
serializedOptions[@"allowAnnouncement"] = [NSNumber numberWithBool:((category.options & UNNotificationActionOptionAuthenticationRequired) != 0)];
|
|
183
|
+
}
|
|
184
|
+
return serializedOptions;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
- (NSMutableArray *)serializeActions:(NSArray<UNNotificationAction *>*)actions
|
|
188
|
+
{
|
|
189
|
+
NSMutableArray* serializedActions = [NSMutableArray new];
|
|
190
|
+
for (NSUInteger i = 0; i < [actions count]; i++)
|
|
191
|
+
{
|
|
192
|
+
NSMutableDictionary *actionDictionary = [NSMutableDictionary dictionary];
|
|
193
|
+
actionDictionary[@"buttonTitle"] = actions[i].title;
|
|
194
|
+
actionDictionary[@"identifier"] = actions[i].identifier;
|
|
195
|
+
actionDictionary[@"options"] = [self serializeActionOptions:actions[i].options];
|
|
196
|
+
if ([actions[i] isKindOfClass:[UNTextInputNotificationAction class]]) {
|
|
197
|
+
UNTextInputNotificationAction *textInputAction = (UNTextInputNotificationAction *)actions[i];
|
|
198
|
+
NSMutableDictionary *textInputOptions = [NSMutableDictionary dictionary];
|
|
199
|
+
textInputOptions[@"placeholder"] = textInputAction.textInputPlaceholder;
|
|
200
|
+
textInputOptions[@"submitButtonTitle"] = textInputAction.textInputButtonTitle;
|
|
201
|
+
actionDictionary[@"textInput"] = textInputOptions;
|
|
202
|
+
}
|
|
203
|
+
[serializedActions addObject:actionDictionary];
|
|
204
|
+
}
|
|
205
|
+
return serializedActions;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
- (NSMutableDictionary *)serializeActionOptions:(NSUInteger)options
|
|
209
|
+
{
|
|
210
|
+
NSMutableDictionary* serializedOptions = [NSMutableDictionary dictionary];
|
|
211
|
+
serializedOptions[@"opensAppToForeground"] = [NSNumber numberWithBool:((options & UNNotificationActionOptionForeground) != 0)];
|
|
212
|
+
serializedOptions[@"isDestructive"] = [NSNumber numberWithBool:((options & UNNotificationActionOptionDestructive) != 0)];
|
|
213
|
+
serializedOptions[@"isAuthenticationRequired"] = [NSNumber numberWithBool:((options & UNNotificationActionOptionAuthenticationRequired) != 0)];
|
|
214
|
+
return serializedOptions;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
@end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// Copyright 2018-present 650 Industries. All rights reserved.
|
|
2
|
+
|
|
3
|
+
#import <Foundation/Foundation.h>
|
|
4
|
+
#import <UIKit/UIKit.h>
|
|
5
|
+
#import <ExpoModulesCore/EXSingletonModule.h>
|
|
6
|
+
#import <UserNotifications/UserNotifications.h>
|
|
7
|
+
#import <EXNotifications/EXNotificationsDelegate.h>
|
|
8
|
+
|
|
9
|
+
NS_ASSUME_NONNULL_BEGIN
|
|
10
|
+
|
|
11
|
+
@protocol EXNotificationCenterDelegate
|
|
12
|
+
|
|
13
|
+
- (void)addDelegate:(id<EXNotificationsDelegate>)delegate;
|
|
14
|
+
- (void)removeDelegate:(id<EXNotificationsDelegate>)delegate;
|
|
15
|
+
|
|
16
|
+
@end
|
|
17
|
+
|
|
18
|
+
@interface EXNotificationCenterDelegate : EXSingletonModule <UIApplicationDelegate, UNUserNotificationCenterDelegate, EXNotificationCenterDelegate>
|
|
19
|
+
|
|
20
|
+
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(nullable NSDictionary<UIApplicationLaunchOptionsKey,id> *)launchOptions;
|
|
21
|
+
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler;
|
|
22
|
+
|
|
23
|
+
- (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler;
|
|
24
|
+
- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)(void))completionHandler;
|
|
25
|
+
- (void)userNotificationCenter:(UNUserNotificationCenter *)center openSettingsForNotification:(nullable UNNotification *)notification;
|
|
26
|
+
|
|
27
|
+
@end
|
|
28
|
+
|
|
29
|
+
NS_ASSUME_NONNULL_END
|