@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,209 @@
|
|
|
1
|
+
// Copyright 2018-present 650 Industries. All rights reserved.
|
|
2
|
+
|
|
3
|
+
#import <EXNotifications/EXNotificationCenterDelegate.h>
|
|
4
|
+
#import <ExpoModulesCore/EXDefines.h>
|
|
5
|
+
#import <EXNotifications/EXNotificationsDelegate.h>
|
|
6
|
+
|
|
7
|
+
@interface EXNotificationCenterDelegate ()
|
|
8
|
+
|
|
9
|
+
@property (nonatomic, strong) NSPointerArray *delegates;
|
|
10
|
+
@property (nonatomic, strong) NSMutableArray<UNNotificationResponse *> *pendingNotificationResponses;
|
|
11
|
+
|
|
12
|
+
@end
|
|
13
|
+
|
|
14
|
+
@implementation EXNotificationCenterDelegate
|
|
15
|
+
|
|
16
|
+
EX_REGISTER_SINGLETON_MODULE(NotificationCenterDelegate);
|
|
17
|
+
|
|
18
|
+
- (instancetype)init
|
|
19
|
+
{
|
|
20
|
+
if (self = [super init]) {
|
|
21
|
+
_delegates = [NSPointerArray weakObjectsPointerArray];
|
|
22
|
+
_pendingNotificationResponses = [NSMutableArray array];
|
|
23
|
+
}
|
|
24
|
+
return self;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
# pragma mark - UIApplicationDelegate
|
|
28
|
+
|
|
29
|
+
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary<UIApplicationLaunchOptionsKey,id> *)launchOptions
|
|
30
|
+
{
|
|
31
|
+
if ([UNUserNotificationCenter currentNotificationCenter].delegate) {
|
|
32
|
+
EXLogWarn(@"[expo-notifications] EXNotificationCenterDelegate encountered already present delegate of UNUserNotificationCenter: %@. "
|
|
33
|
+
"EXNotificationCenterDelegate will not overwrite the value not to break other features of your app. "
|
|
34
|
+
"In return, expo-notifications may not work properly. "
|
|
35
|
+
"To fix this problem either remove setting of the second delegate "
|
|
36
|
+
"or set the delegate to an instance of EXNotificationCenterDelegate manually afterwards.",
|
|
37
|
+
[UNUserNotificationCenter currentNotificationCenter].delegate);
|
|
38
|
+
return YES;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
[[UNUserNotificationCenter currentNotificationCenter] setDelegate:self];
|
|
42
|
+
return YES;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
|
|
46
|
+
{
|
|
47
|
+
__block int delegatesCalled = 0;
|
|
48
|
+
__block int delegatesCompleted = 0;
|
|
49
|
+
__block BOOL delegatingCompleted = NO;
|
|
50
|
+
__block BOOL delegatesFailed = 0;
|
|
51
|
+
__block UIBackgroundFetchResult resultSum = UIBackgroundFetchResultNoData;
|
|
52
|
+
__block void (^completionHandlerCaller)(void) = ^{
|
|
53
|
+
if (delegatingCompleted && delegatesCompleted == delegatesCalled) {
|
|
54
|
+
if (delegatesCompleted == delegatesFailed) {
|
|
55
|
+
// If all delegates failed to fetch result, let's let the OS know about that
|
|
56
|
+
completionHandler(UIBackgroundFetchResultFailed);
|
|
57
|
+
} else {
|
|
58
|
+
// If at least one succeeded, let's take it as read and respond with that result.
|
|
59
|
+
completionHandler(resultSum);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
for (int i = 0; i < _delegates.count; i++) {
|
|
65
|
+
id pointer = [_delegates pointerAtIndex:i];
|
|
66
|
+
if ([pointer respondsToSelector:@selector(application:didReceiveRemoteNotification:fetchCompletionHandler:)]) {
|
|
67
|
+
[pointer application:application didReceiveRemoteNotification:userInfo fetchCompletionHandler:^(UIBackgroundFetchResult result) {
|
|
68
|
+
@synchronized (self) {
|
|
69
|
+
if (result == UIBackgroundFetchResultFailed) {
|
|
70
|
+
delegatesFailed += 1;
|
|
71
|
+
} else if (result == UIBackgroundFetchResultNewData) {
|
|
72
|
+
resultSum = UIBackgroundFetchResultNewData;
|
|
73
|
+
}
|
|
74
|
+
delegatesCompleted += 1;
|
|
75
|
+
completionHandlerCaller();
|
|
76
|
+
}
|
|
77
|
+
}];
|
|
78
|
+
@synchronized (self) {
|
|
79
|
+
delegatesCalled += 1;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
@synchronized (self) {
|
|
84
|
+
delegatingCompleted = YES;
|
|
85
|
+
completionHandlerCaller();
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
# pragma mark - UNUserNotificationCenterDelegate
|
|
90
|
+
|
|
91
|
+
- (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler
|
|
92
|
+
{
|
|
93
|
+
__block int delegatesCalled = 0;
|
|
94
|
+
__block int delegatesCompleted = 0;
|
|
95
|
+
__block BOOL delegatingCompleted = NO;
|
|
96
|
+
__block UNNotificationPresentationOptions optionsSum = UNNotificationPresentationOptionNone;
|
|
97
|
+
__block void (^completionHandlerCaller)(void) = ^{
|
|
98
|
+
if (delegatingCompleted && delegatesCompleted == delegatesCalled) {
|
|
99
|
+
completionHandler(optionsSum);
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
for (int i = 0; i < _delegates.count; i++) {
|
|
104
|
+
id pointer = [_delegates pointerAtIndex:i];
|
|
105
|
+
if ([pointer respondsToSelector:@selector(userNotificationCenter:willPresentNotification:withCompletionHandler:)]) {
|
|
106
|
+
[pointer userNotificationCenter:center willPresentNotification:notification withCompletionHandler:^(UNNotificationPresentationOptions options) {
|
|
107
|
+
@synchronized (self) {
|
|
108
|
+
delegatesCompleted += 1;
|
|
109
|
+
optionsSum = optionsSum | options;
|
|
110
|
+
completionHandlerCaller();
|
|
111
|
+
}
|
|
112
|
+
}];
|
|
113
|
+
@synchronized (self) {
|
|
114
|
+
delegatesCalled += 1;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
@synchronized (self) {
|
|
119
|
+
delegatingCompleted = YES;
|
|
120
|
+
completionHandlerCaller();
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)(void))completionHandler
|
|
125
|
+
{
|
|
126
|
+
// Save response to pending responses array if none of the handlers will handle it.
|
|
127
|
+
BOOL responseWillBeHandledByAppropriateDelegate = NO;
|
|
128
|
+
for (int i = 0; i < _delegates.count; i++) {
|
|
129
|
+
id pointer = [_delegates pointerAtIndex:i];
|
|
130
|
+
if ([pointer respondsToSelector:@selector(userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:)]) {
|
|
131
|
+
responseWillBeHandledByAppropriateDelegate = YES;
|
|
132
|
+
break;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
if (!responseWillBeHandledByAppropriateDelegate) {
|
|
136
|
+
[_pendingNotificationResponses addObject:response];
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
__block int delegatesCalled = 0;
|
|
140
|
+
__block int delegatesCompleted = 0;
|
|
141
|
+
__block BOOL delegatingCompleted = NO;
|
|
142
|
+
void (^completionHandlerCaller)(void) = ^{
|
|
143
|
+
if (delegatingCompleted && delegatesCompleted == delegatesCalled) {
|
|
144
|
+
completionHandler();
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
for (int i = 0; i < _delegates.count; i++) {
|
|
149
|
+
id pointer = [_delegates pointerAtIndex:i];
|
|
150
|
+
if ([pointer respondsToSelector:@selector(userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:)]) {
|
|
151
|
+
[pointer userNotificationCenter:center didReceiveNotificationResponse:response withCompletionHandler:^{
|
|
152
|
+
@synchronized (self) {
|
|
153
|
+
delegatesCompleted += 1;
|
|
154
|
+
completionHandlerCaller();
|
|
155
|
+
}
|
|
156
|
+
}];
|
|
157
|
+
@synchronized (self) {
|
|
158
|
+
delegatesCalled += 1;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
@synchronized (self) {
|
|
163
|
+
delegatingCompleted = YES;
|
|
164
|
+
completionHandlerCaller();
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
- (void)userNotificationCenter:(UNUserNotificationCenter *)center openSettingsForNotification:(UNNotification *)notification
|
|
169
|
+
{
|
|
170
|
+
if (@available(iOS 12.0, *)) {
|
|
171
|
+
for (int i = 0; i < _delegates.count; i++) {
|
|
172
|
+
id pointer = [_delegates pointerAtIndex:i];
|
|
173
|
+
if ([pointer respondsToSelector:@selector(userNotificationCenter:openSettingsForNotification:)]) {
|
|
174
|
+
[pointer userNotificationCenter:center openSettingsForNotification:notification];
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
# pragma mark - EXNotificationCenterDelegate
|
|
181
|
+
|
|
182
|
+
- (void)addDelegate:(id<EXNotificationsDelegate>)delegate
|
|
183
|
+
{
|
|
184
|
+
[_delegates addPointer:(__bridge void * _Nullable)(delegate)];
|
|
185
|
+
if ([delegate respondsToSelector:@selector(userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:)]) {
|
|
186
|
+
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
|
|
187
|
+
for (UNNotificationResponse *response in _pendingNotificationResponses) {
|
|
188
|
+
[delegate userNotificationCenter:center didReceiveNotificationResponse:response withCompletionHandler:^{
|
|
189
|
+
// completion handler doesn't need to do anything
|
|
190
|
+
}];
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
- (void)removeDelegate:(id<EXNotificationsDelegate>)delegate
|
|
196
|
+
{
|
|
197
|
+
for (int i = 0; i < _delegates.count; i++) {
|
|
198
|
+
id pointer = [_delegates pointerAtIndex:i];
|
|
199
|
+
if (pointer == (__bridge void * _Nullable)(delegate) || !pointer) {
|
|
200
|
+
[_delegates removePointerAtIndex:i];
|
|
201
|
+
i--;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
// compact doesn't work, that's why we need the `|| !pointer` above
|
|
205
|
+
// http://www.openradar.me/15396578
|
|
206
|
+
[_delegates compact];
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
@end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// Copyright 2018-present 650 Industries. All rights reserved.
|
|
2
|
+
|
|
3
|
+
#import <UserNotifications/UserNotifications.h>
|
|
4
|
+
|
|
5
|
+
NS_ASSUME_NONNULL_BEGIN
|
|
6
|
+
|
|
7
|
+
@interface EXNotificationSerializer : NSObject
|
|
8
|
+
|
|
9
|
+
+ (NSDictionary *)serializedNotification:(UNNotification *)notification;
|
|
10
|
+
+ (NSDictionary *)serializedNotificationRequest:(UNNotificationRequest *)notificationRequest;
|
|
11
|
+
+ (NSDictionary *)serializedNotificationResponse:(UNNotificationResponse *)notificationResponse;
|
|
12
|
+
+ (NSDictionary *)serializedNotificationContent:(UNNotificationRequest *)request;
|
|
13
|
+
|
|
14
|
+
@end
|
|
15
|
+
|
|
16
|
+
NS_ASSUME_NONNULL_END
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
// Copyright 2018-present 650 Industries. All rights reserved.
|
|
2
|
+
|
|
3
|
+
#import <EXNotifications/EXNotificationSerializer.h>
|
|
4
|
+
#import <CoreLocation/CoreLocation.h>
|
|
5
|
+
|
|
6
|
+
NS_ASSUME_NONNULL_BEGIN
|
|
7
|
+
|
|
8
|
+
static NSString * const EXNotificationResponseDefaultActionIdentifier = @"expo.modules.notifications.actions.DEFAULT";
|
|
9
|
+
|
|
10
|
+
@implementation EXNotificationSerializer
|
|
11
|
+
|
|
12
|
+
+ (NSDictionary *)serializedNotificationResponse:(UNNotificationResponse *)response
|
|
13
|
+
{
|
|
14
|
+
NSMutableDictionary *serializedResponse = [NSMutableDictionary dictionary];
|
|
15
|
+
NSString *actionIdentifier = response.actionIdentifier;
|
|
16
|
+
if ([UNNotificationDefaultActionIdentifier isEqualToString:actionIdentifier]) {
|
|
17
|
+
actionIdentifier = EXNotificationResponseDefaultActionIdentifier;
|
|
18
|
+
}
|
|
19
|
+
serializedResponse[@"actionIdentifier"] = actionIdentifier;
|
|
20
|
+
serializedResponse[@"notification"] = [self serializedNotification:response.notification];
|
|
21
|
+
if ([response isKindOfClass:[UNTextInputNotificationResponse class]]) {
|
|
22
|
+
UNTextInputNotificationResponse *textInputResponse = (UNTextInputNotificationResponse *)response;
|
|
23
|
+
serializedResponse[@"userText"] = textInputResponse.userText ?: [NSNull null];
|
|
24
|
+
}
|
|
25
|
+
return serializedResponse;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
+ (NSDictionary *)serializedNotification:(UNNotification *)notification
|
|
29
|
+
{
|
|
30
|
+
NSMutableDictionary *serializedNotification = [NSMutableDictionary dictionary];
|
|
31
|
+
serializedNotification[@"request"] = [self serializedNotificationRequest:notification.request];
|
|
32
|
+
serializedNotification[@"date"] = @(notification.date.timeIntervalSince1970);
|
|
33
|
+
return serializedNotification;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
+ (NSDictionary *)serializedNotificationRequest:(UNNotificationRequest *)request
|
|
37
|
+
{
|
|
38
|
+
NSMutableDictionary *serializedRequest = [NSMutableDictionary dictionary];
|
|
39
|
+
serializedRequest[@"identifier"] = request.identifier;
|
|
40
|
+
serializedRequest[@"content"] = [self serializedNotificationContent:request];
|
|
41
|
+
serializedRequest[@"trigger"] = [self serializedNotificationTrigger:request];
|
|
42
|
+
return serializedRequest;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
+ (NSDictionary *)serializedNotificationContent:(UNNotificationRequest *)request
|
|
46
|
+
{
|
|
47
|
+
UNNotificationContent *content = request.content;
|
|
48
|
+
NSMutableDictionary *serializedContent = [NSMutableDictionary dictionary];
|
|
49
|
+
serializedContent[@"title"] = content.title ?: [NSNull null];
|
|
50
|
+
serializedContent[@"subtitle"] = content.subtitle ?: [NSNull null];
|
|
51
|
+
serializedContent[@"body"] = content.body ?: [NSNull null];
|
|
52
|
+
serializedContent[@"badge"] = content.badge ?: [NSNull null];
|
|
53
|
+
serializedContent[@"sound"] = [self serializedNotificationSound:content.sound] ?: [NSNull null];
|
|
54
|
+
serializedContent[@"launchImageName"] = content.launchImageName ?: [NSNull null];
|
|
55
|
+
serializedContent[@"data"] = [self serializedNotificationData:request] ?: [NSNull null];
|
|
56
|
+
serializedContent[@"attachments"] = [self serializedNotificationAttachments:content.attachments];
|
|
57
|
+
|
|
58
|
+
if (@available(iOS 12.0, *)) {
|
|
59
|
+
serializedContent[@"summaryArgument"] = content.summaryArgument ?: [NSNull null];
|
|
60
|
+
serializedContent[@"summaryArgumentCount"] = @(content.summaryArgumentCount);
|
|
61
|
+
}
|
|
62
|
+
serializedContent[@"categoryIdentifier"] = content.categoryIdentifier ? content.categoryIdentifier : [NSNull null];
|
|
63
|
+
serializedContent[@"threadIdentifier"] = content.threadIdentifier ?: [NSNull null];
|
|
64
|
+
if (@available(iOS 13.0, *)) {
|
|
65
|
+
serializedContent[@"targetContentIdentifier"] = content.targetContentIdentifier ?: [NSNull null];
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return serializedContent;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
+ (NSDictionary *)serializedNotificationData:(UNNotificationRequest *)request
|
|
72
|
+
{
|
|
73
|
+
BOOL isRemote = [request.trigger isKindOfClass:[UNPushNotificationTrigger class]];
|
|
74
|
+
return isRemote ? request.content.userInfo[@"body"] : request.content.userInfo;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
+ (NSString *)serializedNotificationSound:(UNNotificationSound *)sound
|
|
78
|
+
{
|
|
79
|
+
// nil compared to defaultCriticalSound returns true
|
|
80
|
+
if (!sound) {
|
|
81
|
+
return nil;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
if (@available(iOS 12.0, *)) {
|
|
85
|
+
if ([[UNNotificationSound defaultCriticalSound] isEqual:sound]) {
|
|
86
|
+
return @"defaultCritical";
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
if ([[UNNotificationSound defaultSound] isEqual:sound]) {
|
|
91
|
+
return @"default";
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
return @"custom";
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
+ (NSArray *)serializedNotificationAttachments:(NSArray<UNNotificationAttachment *> *)attachments
|
|
98
|
+
{
|
|
99
|
+
NSMutableArray *serializedAttachments = [NSMutableArray array];
|
|
100
|
+
for (UNNotificationAttachment *attachment in attachments) {
|
|
101
|
+
[serializedAttachments addObject:[self serializedNotificationAttachment:attachment]];
|
|
102
|
+
}
|
|
103
|
+
return serializedAttachments;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
+ (NSDictionary *)serializedNotificationAttachment:(UNNotificationAttachment *)attachment
|
|
107
|
+
{
|
|
108
|
+
NSMutableDictionary *serializedAttachment = [NSMutableDictionary dictionary];
|
|
109
|
+
serializedAttachment[@"identifier"] = attachment.identifier ?: [NSNull null];
|
|
110
|
+
serializedAttachment[@"url"] = attachment.URL.absoluteString ?: [NSNull null];
|
|
111
|
+
serializedAttachment[@"type"] = attachment.type ?: [NSNull null];
|
|
112
|
+
return serializedAttachment;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
+ (NSDictionary *)serializedNotificationTrigger:(UNNotificationRequest *)request
|
|
116
|
+
{
|
|
117
|
+
UNNotificationTrigger *trigger = request.trigger;
|
|
118
|
+
NSMutableDictionary *serializedTrigger = [NSMutableDictionary dictionary];
|
|
119
|
+
serializedTrigger[@"class"] = NSStringFromClass(trigger.class);
|
|
120
|
+
if ([trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
|
|
121
|
+
serializedTrigger[@"type"] = @"push";
|
|
122
|
+
serializedTrigger[@"payload"] = request.content.userInfo;
|
|
123
|
+
} else if ([trigger isKindOfClass:[UNCalendarNotificationTrigger class]]) {
|
|
124
|
+
serializedTrigger[@"type"] = @"calendar";
|
|
125
|
+
serializedTrigger[@"repeats"] = @(trigger.repeats);
|
|
126
|
+
UNCalendarNotificationTrigger *calendarTrigger = (UNCalendarNotificationTrigger *)trigger;
|
|
127
|
+
serializedTrigger[@"dateComponents"] = [self serializedDateComponents:calendarTrigger.dateComponents];
|
|
128
|
+
#if !(TARGET_OS_MACCATALYST)
|
|
129
|
+
} else if ([trigger isKindOfClass:[UNLocationNotificationTrigger class]]) {
|
|
130
|
+
serializedTrigger[@"type"] = @"location";
|
|
131
|
+
serializedTrigger[@"repeats"] = @(trigger.repeats);
|
|
132
|
+
UNLocationNotificationTrigger *locationTrigger = (UNLocationNotificationTrigger *)trigger;
|
|
133
|
+
serializedTrigger[@"region"] = [self serializedRegion:locationTrigger.region];
|
|
134
|
+
#endif
|
|
135
|
+
} else if ([trigger isKindOfClass:[UNTimeIntervalNotificationTrigger class]]) {
|
|
136
|
+
serializedTrigger[@"type"] = @"timeInterval";
|
|
137
|
+
UNTimeIntervalNotificationTrigger *timeIntervalTrigger = (UNTimeIntervalNotificationTrigger *)trigger;
|
|
138
|
+
serializedTrigger[@"seconds"] = @(timeIntervalTrigger.timeInterval);
|
|
139
|
+
serializedTrigger[@"repeats"] = @(trigger.repeats);
|
|
140
|
+
} else {
|
|
141
|
+
serializedTrigger[@"type"] = @"unknown";
|
|
142
|
+
}
|
|
143
|
+
return serializedTrigger;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
+ (NSDictionary *)serializedDateComponents:(NSDateComponents *)dateComponents
|
|
147
|
+
{
|
|
148
|
+
NSMutableDictionary *serializedComponents = [NSMutableDictionary dictionary];
|
|
149
|
+
NSArray<NSNumber *> *autoConvertedUnits = [[self calendarUnitsConversionMap] allKeys];
|
|
150
|
+
for (NSNumber *calendarUnitNumber in autoConvertedUnits) {
|
|
151
|
+
NSCalendarUnit calendarUnit = [calendarUnitNumber unsignedIntegerValue];
|
|
152
|
+
NSInteger unitValue = [dateComponents valueForComponent:calendarUnit];
|
|
153
|
+
if (unitValue != NSDateComponentUndefined) {
|
|
154
|
+
serializedComponents[[self keyForCalendarUnit:calendarUnit]] = @([dateComponents valueForComponent:calendarUnit]);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
serializedComponents[@"calendar"] = dateComponents.calendar.calendarIdentifier ?: [NSNull null];
|
|
158
|
+
serializedComponents[@"timeZone"] = dateComponents.timeZone.description ?: [NSNull null];
|
|
159
|
+
serializedComponents[@"isLeapMonth"] = @(dateComponents.isLeapMonth);
|
|
160
|
+
return serializedComponents;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
+ (NSDictionary *)calendarUnitsConversionMap
|
|
164
|
+
{
|
|
165
|
+
static NSDictionary *keysMap = nil;
|
|
166
|
+
if (!keysMap) {
|
|
167
|
+
keysMap = @{
|
|
168
|
+
@(NSCalendarUnitEra): @"era",
|
|
169
|
+
@(NSCalendarUnitYear): @"year",
|
|
170
|
+
@(NSCalendarUnitMonth): @"month",
|
|
171
|
+
@(NSCalendarUnitDay): @"day",
|
|
172
|
+
@(NSCalendarUnitHour): @"hour",
|
|
173
|
+
@(NSCalendarUnitMinute): @"minute",
|
|
174
|
+
@(NSCalendarUnitSecond): @"second",
|
|
175
|
+
@(NSCalendarUnitWeekday): @"weekday",
|
|
176
|
+
@(NSCalendarUnitWeekdayOrdinal): @"weekdayOrdinal",
|
|
177
|
+
@(NSCalendarUnitQuarter): @"quarter",
|
|
178
|
+
@(NSCalendarUnitWeekOfMonth): @"weekOfMonth",
|
|
179
|
+
@(NSCalendarUnitWeekOfYear): @"weekOfYear",
|
|
180
|
+
@(NSCalendarUnitYearForWeekOfYear): @"yearForWeekOfYear",
|
|
181
|
+
@(NSCalendarUnitNanosecond): @"nanosecond"
|
|
182
|
+
// NSCalendarUnitCalendar and NSCalendarUnitTimeZone
|
|
183
|
+
// should be handled separately
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
return keysMap;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
+ (NSString *)keyForCalendarUnit:(NSCalendarUnit)calendarUnit
|
|
190
|
+
{
|
|
191
|
+
return [self calendarUnitsConversionMap][@(calendarUnit)];
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
+ (NSDictionary *)serializedRegion:(CLRegion *)region
|
|
195
|
+
{
|
|
196
|
+
NSMutableDictionary *serializedRegion = [NSMutableDictionary dictionary];
|
|
197
|
+
serializedRegion[@"identifier"] = region.identifier;
|
|
198
|
+
serializedRegion[@"notifyOnEntry"] = @(region.notifyOnEntry);
|
|
199
|
+
serializedRegion[@"notifyOnExit"] = @(region.notifyOnExit);
|
|
200
|
+
if ([region isKindOfClass:[CLCircularRegion class]]) {
|
|
201
|
+
serializedRegion[@"type"] = @"circular";
|
|
202
|
+
CLCircularRegion *circularRegion = (CLCircularRegion *)region;
|
|
203
|
+
NSDictionary *serializedCenter = @{
|
|
204
|
+
@"latitude": @(circularRegion.center.latitude),
|
|
205
|
+
@"longitude": @(circularRegion.center.longitude)
|
|
206
|
+
};
|
|
207
|
+
serializedRegion[@"center"] = serializedCenter;
|
|
208
|
+
serializedRegion[@"radius"] = @(circularRegion.radius);
|
|
209
|
+
} else if ([region isKindOfClass:[CLBeaconRegion class]]) {
|
|
210
|
+
serializedRegion[@"type"] = @"beacon";
|
|
211
|
+
CLBeaconRegion *beaconRegion = (CLBeaconRegion *)region;
|
|
212
|
+
serializedRegion[@"notifyEntryStateOnDisplay"] = @(beaconRegion.notifyEntryStateOnDisplay);
|
|
213
|
+
serializedRegion[@"major"] = beaconRegion.major ?: [NSNull null];
|
|
214
|
+
serializedRegion[@"minor"] = beaconRegion.minor ?: [NSNull null];
|
|
215
|
+
if (@available(iOS 13.0, *)) {
|
|
216
|
+
serializedRegion[@"uuid"] = beaconRegion.UUID;
|
|
217
|
+
NSDictionary *serializedConstraint = @{
|
|
218
|
+
@"uuid": beaconRegion.beaconIdentityConstraint.UUID,
|
|
219
|
+
@"major": beaconRegion.beaconIdentityConstraint.major ?: [NSNull null],
|
|
220
|
+
@"minor": beaconRegion.beaconIdentityConstraint.minor ?: [NSNull null],
|
|
221
|
+
};
|
|
222
|
+
serializedRegion[@"beaconIdentityConstraint"] = serializedConstraint;
|
|
223
|
+
}
|
|
224
|
+
} else {
|
|
225
|
+
serializedRegion[@"type"] = @"unknown";
|
|
226
|
+
}
|
|
227
|
+
return serializedRegion;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
@end
|
|
231
|
+
|
|
232
|
+
NS_ASSUME_NONNULL_END
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// Copyright 2018-present 650 Industries. All rights reserved.
|
|
2
|
+
|
|
3
|
+
#import <Foundation/Foundation.h>
|
|
4
|
+
#import <UIKit/UIKit.h>
|
|
5
|
+
#import <UserNotifications/UserNotifications.h>
|
|
6
|
+
|
|
7
|
+
NS_ASSUME_NONNULL_BEGIN
|
|
8
|
+
|
|
9
|
+
@protocol EXNotificationsDelegate <NSObject>
|
|
10
|
+
|
|
11
|
+
@optional
|
|
12
|
+
|
|
13
|
+
# pragma mark - UIApplicationDelegate
|
|
14
|
+
|
|
15
|
+
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler;
|
|
16
|
+
|
|
17
|
+
# pragma mark - UNUserNotificationCenterDelegate
|
|
18
|
+
|
|
19
|
+
- (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler;
|
|
20
|
+
|
|
21
|
+
- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)(void))completionHandler;
|
|
22
|
+
|
|
23
|
+
- (void)userNotificationCenter:(UNUserNotificationCenter *)center openSettingsForNotification:(UNNotification *)notification;
|
|
24
|
+
|
|
25
|
+
@end
|
|
26
|
+
|
|
27
|
+
NS_ASSUME_NONNULL_END
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// Copyright 2018-present 650 Industries. All rights reserved.
|
|
2
|
+
|
|
3
|
+
#import <ExpoModulesCore/EXExportedModule.h>
|
|
4
|
+
#import <ExpoModulesCore/EXEventEmitter.h>
|
|
5
|
+
#import <ExpoModulesCore/EXModuleRegistryConsumer.h>
|
|
6
|
+
#import <ExpoModulesCore/EXEventEmitterService.h>
|
|
7
|
+
|
|
8
|
+
#import <EXNotifications/EXNotificationsDelegate.h>
|
|
9
|
+
|
|
10
|
+
static NSString * const onDidReceiveNotification = @"onDidReceiveNotification";
|
|
11
|
+
static NSString * const onDidReceiveNotificationResponse = @"onDidReceiveNotificationResponse";
|
|
12
|
+
|
|
13
|
+
@interface EXNotificationsEmitter : EXExportedModule <EXEventEmitter, EXModuleRegistryConsumer, EXNotificationsDelegate>
|
|
14
|
+
|
|
15
|
+
@property (nonatomic, weak, readonly) id<EXEventEmitterService> eventEmitter;
|
|
16
|
+
|
|
17
|
+
@end
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
// Copyright 2018-present 650 Industries. All rights reserved.
|
|
2
|
+
|
|
3
|
+
#import <EXNotifications/EXNotificationsEmitter.h>
|
|
4
|
+
#import <EXNotifications/EXNotificationSerializer.h>
|
|
5
|
+
#import <EXNotifications/EXNotificationCenterDelegate.h>
|
|
6
|
+
|
|
7
|
+
#import <ExpoModulesCore/EXEventEmitterService.h>
|
|
8
|
+
|
|
9
|
+
@interface EXNotificationsEmitter ()
|
|
10
|
+
|
|
11
|
+
@property (nonatomic, weak) id<EXNotificationCenterDelegate> notificationCenterDelegate;
|
|
12
|
+
|
|
13
|
+
@property (nonatomic, assign) BOOL isBeingObserved;
|
|
14
|
+
@property (nonatomic, assign) BOOL isListening;
|
|
15
|
+
|
|
16
|
+
@property (nonatomic, weak) id<EXEventEmitterService> eventEmitter;
|
|
17
|
+
|
|
18
|
+
@property (nonatomic, strong) UNNotificationResponse *lastNotificationResponse;
|
|
19
|
+
|
|
20
|
+
@end
|
|
21
|
+
|
|
22
|
+
@implementation EXNotificationsEmitter
|
|
23
|
+
|
|
24
|
+
EX_EXPORT_MODULE(ExpoNotificationsEmitter);
|
|
25
|
+
|
|
26
|
+
EX_EXPORT_METHOD_AS(getLastNotificationResponseAsync,
|
|
27
|
+
getLastNotificationResponseAsyncWithResolver:(EXPromiseResolveBlock)resolve reject:(EXPromiseRejectBlock)reject)
|
|
28
|
+
{
|
|
29
|
+
resolve(_lastNotificationResponse ? [self serializedNotificationResponse:_lastNotificationResponse] : [NSNull null]);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
# pragma mark - EXModuleRegistryConsumer
|
|
33
|
+
|
|
34
|
+
- (void)setModuleRegistry:(EXModuleRegistry *)moduleRegistry
|
|
35
|
+
{
|
|
36
|
+
_eventEmitter = [moduleRegistry getModuleImplementingProtocol:@protocol(EXEventEmitterService)];
|
|
37
|
+
_notificationCenterDelegate = [moduleRegistry getSingletonModuleForName:@"NotificationCenterDelegate"];
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
# pragma mark - EXEventEmitter
|
|
41
|
+
|
|
42
|
+
- (NSArray<NSString *> *)supportedEvents
|
|
43
|
+
{
|
|
44
|
+
return @[onDidReceiveNotification, onDidReceiveNotificationResponse];
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
- (void)startObserving
|
|
48
|
+
{
|
|
49
|
+
[self setIsBeingObserved:YES];
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
- (void)stopObserving
|
|
53
|
+
{
|
|
54
|
+
[self setIsBeingObserved:NO];
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
- (void)setIsBeingObserved:(BOOL)isBeingObserved
|
|
58
|
+
{
|
|
59
|
+
_isBeingObserved = isBeingObserved;
|
|
60
|
+
BOOL shouldListen = _isBeingObserved;
|
|
61
|
+
if (shouldListen && !_isListening) {
|
|
62
|
+
[_notificationCenterDelegate addDelegate:self];
|
|
63
|
+
_isListening = YES;
|
|
64
|
+
} else if (!shouldListen && _isListening) {
|
|
65
|
+
[_notificationCenterDelegate removeDelegate:self];
|
|
66
|
+
_isListening = NO;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
# pragma mark - EXNotificationsDelegate
|
|
71
|
+
|
|
72
|
+
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
|
|
73
|
+
{
|
|
74
|
+
// Background task execution would happen here.
|
|
75
|
+
completionHandler(UIBackgroundFetchResultNoData);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)(void))completionHandler
|
|
79
|
+
{
|
|
80
|
+
_lastNotificationResponse = response;
|
|
81
|
+
[self sendEventWithName:onDidReceiveNotificationResponse body:[self serializedNotificationResponse:response]];
|
|
82
|
+
completionHandler();
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
- (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler
|
|
86
|
+
{
|
|
87
|
+
[self sendEventWithName:onDidReceiveNotification body:[self serializedNotification:notification]];
|
|
88
|
+
completionHandler(UNNotificationPresentationOptionNone);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
- (void)sendEventWithName:(NSString *)eventName body:(id)body
|
|
92
|
+
{
|
|
93
|
+
// Silence React Native warning: "Sending ... with no listeners registered."
|
|
94
|
+
// See: https://github.com/expo/expo/pull/10883#pullrequestreview-529183413
|
|
95
|
+
// While in practice we don't need to verify this, as as of the end of 2020
|
|
96
|
+
// we wouldn't send any event to JS if we weren't being observed because
|
|
97
|
+
// we wouldn't be subscribed to the notification center delegate it's nice
|
|
98
|
+
// to be sure this problem won't ever arise.
|
|
99
|
+
if (_isBeingObserved) {
|
|
100
|
+
[_eventEmitter sendEventWithName:eventName body:body];
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
- (NSDictionary *)serializedNotification:(UNNotification *)notification
|
|
105
|
+
{
|
|
106
|
+
return [EXNotificationSerializer serializedNotification:notification];
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
- (NSDictionary *)serializedNotificationResponse:(UNNotificationResponse *)notificationResponse
|
|
110
|
+
{
|
|
111
|
+
return [EXNotificationSerializer serializedNotificationResponse:notificationResponse];
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
@end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// Copyright 2018-present 650 Industries. All rights reserved.
|
|
2
|
+
|
|
3
|
+
#import <ExpoModulesCore/EXExportedModule.h>
|
|
4
|
+
#import <ExpoModulesCore/EXEventEmitter.h>
|
|
5
|
+
#import <ExpoModulesCore/EXModuleRegistryConsumer.h>
|
|
6
|
+
|
|
7
|
+
#import <EXNotifications/EXNotificationsDelegate.h>
|
|
8
|
+
#import <EXNotifications/EXSingleNotificationHandlerTask.h>
|
|
9
|
+
|
|
10
|
+
@interface EXNotificationsHandlerModule : EXExportedModule <EXEventEmitter, EXModuleRegistryConsumer, EXNotificationsDelegate, EXSingleNotificationHandlerTaskDelegate>
|
|
11
|
+
|
|
12
|
+
@end
|