appsonair-react-native-apppush 0.0.1-alpha

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.
Files changed (46) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +540 -0
  3. package/android/build.gradle +177 -0
  4. package/android/gradle.properties +15 -0
  5. package/android/src/main/AndroidManifest.xml +2 -0
  6. package/android/src/main/AndroidManifestNew.xml +2 -0
  7. package/android/src/main/java/com/appsonairreactnativeapppush/AppsonairReactNativeApppushModuleImpl.kt +767 -0
  8. package/android/src/main/java/com/appsonairreactnativeapppush/AppsonairReactNativeApppushPackage.kt +43 -0
  9. package/android/src/newarch/java/com/appsonairreactnativeapppush/AppsonairReactNativeApppushModule.kt +199 -0
  10. package/android/src/oldarch/java/com/appsonairreactnativeapppush/AppsonairReactNativeApppushModule.kt +249 -0
  11. package/appsonair-react-native-apppush.podspec +77 -0
  12. package/ios/AppsonairReactNativeApppush-Bridging-Header.h +12 -0
  13. package/ios/AppsonairReactNativeApppush.h +28 -0
  14. package/ios/AppsonairReactNativeApppush.mm +494 -0
  15. package/ios/AppsonairReactNativeApppushImpl.swift +594 -0
  16. package/lib/commonjs/NativeAppsonairApppush.js +48 -0
  17. package/lib/commonjs/NativeAppsonairApppush.js.map +1 -0
  18. package/lib/commonjs/index.js +686 -0
  19. package/lib/commonjs/index.js.map +1 -0
  20. package/lib/commonjs/types.js +2 -0
  21. package/lib/commonjs/types.js.map +1 -0
  22. package/lib/module/NativeAppsonairApppush.js +47 -0
  23. package/lib/module/NativeAppsonairApppush.js.map +1 -0
  24. package/lib/module/index.js +612 -0
  25. package/lib/module/index.js.map +1 -0
  26. package/lib/module/types.js +2 -0
  27. package/lib/module/types.js.map +1 -0
  28. package/lib/typescript/commonjs/package.json +1 -0
  29. package/lib/typescript/commonjs/src/NativeAppsonairApppush.d.ts +134 -0
  30. package/lib/typescript/commonjs/src/NativeAppsonairApppush.d.ts.map +1 -0
  31. package/lib/typescript/commonjs/src/index.d.ts +392 -0
  32. package/lib/typescript/commonjs/src/index.d.ts.map +1 -0
  33. package/lib/typescript/commonjs/src/types.d.ts +221 -0
  34. package/lib/typescript/commonjs/src/types.d.ts.map +1 -0
  35. package/lib/typescript/module/package.json +1 -0
  36. package/lib/typescript/module/src/NativeAppsonairApppush.d.ts +134 -0
  37. package/lib/typescript/module/src/NativeAppsonairApppush.d.ts.map +1 -0
  38. package/lib/typescript/module/src/index.d.ts +392 -0
  39. package/lib/typescript/module/src/index.d.ts.map +1 -0
  40. package/lib/typescript/module/src/types.d.ts +221 -0
  41. package/lib/typescript/module/src/types.d.ts.map +1 -0
  42. package/package.json +119 -0
  43. package/react-native.config.js +14 -0
  44. package/src/NativeAppsonairApppush.ts +188 -0
  45. package/src/index.tsx +745 -0
  46. package/src/types.ts +284 -0
@@ -0,0 +1,134 @@
1
+ import { type TurboModule } from 'react-native';
2
+ import type { UnsafeObject } from 'react-native/Libraries/Types/CodegenTypes';
3
+ /**
4
+ * Codegen spec for the AppsOnAir Push TurboModule.
5
+ *
6
+ * This file is consumed by React Native Codegen and compiles to
7
+ * `NativeAppsonairApppushSpec` — a Java abstract class and an ObjC protocol that
8
+ * the native modules implement under the New Architecture. On the Old
9
+ * Architecture the same JS object is served by the legacy bridge module, which
10
+ * exposes an identical method set (see android/src/oldarch and the
11
+ * `RCT_NEW_ARCH_ENABLED` guard in ios/AppsonairReactNativeApppush.mm).
12
+ *
13
+ * Constraints this file must respect — codegen rejects or silently mistypes
14
+ * anything else, so do not "improve" the signatures below:
15
+ *
16
+ * - Parameters and returns are primitives, nullable primitives, `Array<T>`,
17
+ * or `UnsafeObject`. Named object types are avoided deliberately -- see the
18
+ * note above `Spec`.
19
+ * - No string-literal unions. `logLevel`, `importance` and `environment` are
20
+ * plain `string` here and are narrowed to their union types in `index.tsx`,
21
+ * which is the type-safe surface consumers actually import.
22
+ * - No `Record<K, V>` — use `UnsafeObject`.
23
+ * - Methods are `Promise`-returning or `void`; there are no sync methods, so
24
+ * the module never blocks the JS thread.
25
+ */
26
+ /**
27
+ * Object parameters are `UnsafeObject`, not named object types, and that is
28
+ * load-bearing rather than lazy.
29
+ *
30
+ * Codegen compiles a named object type into a generated C++ struct, so the
31
+ * ObjC signature becomes `JS::NativeAppsonairApppush::NativePushConfig &` under the
32
+ * New Architecture while the Old Architecture bridge still passes
33
+ * `NSDictionary *`. The two would no longer share a selector, and
34
+ * ios/AppsonairReactNativeApppush.mm could not implement both from one method body.
35
+ * `UnsafeObject` maps to `NSDictionary *` on both, and to `ReadableMap` on both
36
+ * on Android.
37
+ *
38
+ * The shapes these accept are typed for consumers in src/types.ts -- `PushConfig`,
39
+ * `NotificationChannelConfig` and `BackgroundSyncOptions` -- which is the surface
40
+ * anyone actually imports. Nothing here is untyped at the call site.
41
+ */
42
+ export interface Spec extends TurboModule {
43
+ /**
44
+ * Parity A1/A2: the native signatures share zero parameters — iOS takes
45
+ * `(debug:swizzle:)`, Android takes `(context, debug)`. Each
46
+ * bridge supplies what its platform needs; `Context` is never exposed to JS.
47
+ */
48
+ initialize(config: UnsafeObject): Promise<void>;
49
+ getDeviceId(): Promise<string>;
50
+ getSubscriptionId(): Promise<string | null>;
51
+ setSubscriptionId(id: string): Promise<void>;
52
+ getExternalId(): Promise<string | null>;
53
+ login(externalId: string): Promise<void>;
54
+ logout(): Promise<void>;
55
+ /** APNs hex token on iOS, FCM token on Android. `null` before registration. */
56
+ getToken(): Promise<string | null>;
57
+ /** Parity D4: Android/FCM only. Resolves immediately as a no-op on iOS. */
58
+ refreshToken(): Promise<void>;
59
+ /** Parity B2: Android only. Resolves `null` on iOS. */
60
+ getInstallationId(): Promise<string | null>;
61
+ /** Parity C8: iOS only. Resolves `null` on Android. */
62
+ getApnsEnvironment(): Promise<string | null>;
63
+ requestPermission(fallbackToSettings: boolean): Promise<boolean>;
64
+ getPermission(): Promise<boolean>;
65
+ getPermissionStatus(): Promise<string>;
66
+ canRequestPermission(): Promise<boolean>;
67
+ /** Parity E5: iOS only. Resolves as a no-op on Android. */
68
+ registerForProvisionalAuthorization(): Promise<void>;
69
+ clearAllNotifications(): Promise<void>;
70
+ removeNotification(notificationId: string): Promise<void>;
71
+ removeNotifications(notificationIds: Array<string>): Promise<void>;
72
+ /** Parity F3: Android only. Resolves as a no-op on iOS. */
73
+ removeNotificationGroup(groupKey: string): Promise<void>;
74
+ /** Parity F4: Android only. Resolves as a no-op on iOS. */
75
+ createNotificationChannel(config: UnsafeObject): Promise<void>;
76
+ /** Parity F4: Android only. Resolves as a no-op on iOS. */
77
+ deleteNotificationChannel(channelId: string): Promise<void>;
78
+ getBadgeCount(): Promise<number>;
79
+ setBadgeCount(count: number): Promise<void>;
80
+ incrementBadgeCount(delta: number): Promise<number>;
81
+ clearBadgeCount(): Promise<void>;
82
+ /** Parity G4: iOS only. Resolves as a no-op on Android. */
83
+ setAutoClearBadgeOnForeground(enabled: boolean): Promise<void>;
84
+ /** iOS only. Resolves as a no-op on Android, where FCM always registers. */
85
+ setAutoRegisterForRemoteNotifications(enabled: boolean): Promise<void>;
86
+ addTag(key: string, value: string): Promise<void>;
87
+ addTags(tags: UnsafeObject): Promise<void>;
88
+ removeTag(key: string): Promise<void>;
89
+ removeTags(keys: Array<string>): Promise<void>;
90
+ getTags(): Promise<UnsafeObject>;
91
+ addAlias(label: string, id: string): Promise<void>;
92
+ addAliases(aliases: UnsafeObject): Promise<void>;
93
+ removeAlias(label: string): Promise<void>;
94
+ removeAliases(labels: Array<string>): Promise<void>;
95
+ addEmail(address: string): Promise<void>;
96
+ removeEmail(address: string): Promise<void>;
97
+ setLanguage(languageCode: string): Promise<void>;
98
+ getLanguage(): Promise<string>;
99
+ /** Resolves `{ id, token, optedIn }` from local state on both platforms. */
100
+ getPushSubscription(): Promise<UnsafeObject>;
101
+ optIn(): Promise<void>;
102
+ optOut(): Promise<void>;
103
+ /**
104
+ * The subscription's enabled state as the backend sees it. Android reads it
105
+ * back from /subscriptions; iOS computes the same flag it would send.
106
+ */
107
+ getOptedIn(): Promise<boolean>;
108
+ setConsentRequired(required: boolean): Promise<void>;
109
+ getConsentRequired(): Promise<boolean>;
110
+ setConsentGiven(given: boolean): Promise<void>;
111
+ getConsentGiven(): Promise<boolean>;
112
+ setTestDevice(enabled: boolean): Promise<void>;
113
+ isTestDevice(): Promise<boolean>;
114
+ scheduleBackgroundSync(options: UnsafeObject): Promise<void>;
115
+ cancelBackgroundSync(): Promise<void>;
116
+ setLogLevel(level: string): Promise<void>;
117
+ /**
118
+ * Answers a pending `onNotificationWillDisplay` event. The native side holds
119
+ * the notification until this lands or the timeout elapses, which is what
120
+ * makes `preventDefault()` work across an async bridge.
121
+ *
122
+ * Not called directly — `onNotificationWillDisplay` wires it up.
123
+ */
124
+ completeNotificationWillDisplay(notificationId: string, display: boolean): Promise<void>;
125
+ /**
126
+ * Required by `NativeEventEmitter` on both architectures. Under the New
127
+ * Architecture these also satisfy the TurboModule event-emitter contract.
128
+ */
129
+ addListener(eventName: string): void;
130
+ removeListeners(count: number): void;
131
+ }
132
+ declare const _default: Spec;
133
+ export default _default;
134
+ //# sourceMappingURL=NativeAppsonairApppush.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NativeAppsonairApppush.d.ts","sourceRoot":"","sources":["../../../../src/NativeAppsonairApppush.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,392 @@
1
+ import type { InstallationIdEvent, LogLevel, NotificationOpenedEvent, NotificationReceivedEvent, NotificationWillDisplayEvent, PermissionChangedEvent, PermissionStatus, PushConfig, PushErrorEvent, PushSubscriptionChangedEvent, PushSubscriptionState, RequestPermissionOptions, SilentNotificationEvent, Subscription, TokenUpdatedEvent, UserStateChangedEvent } from './types';
2
+ export * from './types';
3
+ /**
4
+ * Starts the SDK. Await this once, before any other call.
5
+ *
6
+ * On Android the wrapper supplies the `Context` itself; on iOS it resolves the
7
+ * App Group and enables AppDelegate swizzling. Neither detail is exposed here.
8
+ */
9
+ export declare function initialize(config?: PushConfig): Promise<void>;
10
+ /** Whether {@link initialize} has completed in this JS context. */
11
+ export declare function isInitialized(): boolean;
12
+ /** The AppsOnAir-assigned device id. */
13
+ export declare function getDeviceId(): Promise<string>;
14
+ /** The backend-assigned subscription id. `null` until the device registers. */
15
+ export declare function getSubscriptionId(): Promise<string | null>;
16
+ /** The external id linked via {@link login}. `null` while anonymous. */
17
+ export declare function getExternalId(): Promise<string | null>;
18
+ /** Associates this device with your own user id. */
19
+ export declare function login(externalId: string): Promise<void>;
20
+ /** Unlinks the external id, returning the device to an anonymous subscription. */
21
+ export declare function logout(): Promise<void>;
22
+ /** Alias of {@link login}, for teams that prefer the noun. */
23
+ export declare const setUserId: typeof login;
24
+ /** APNs hex token on iOS, FCM token on Android. `null` before registration. */
25
+ export declare function getToken(): Promise<string | null>;
26
+ /** Alias of {@link getToken}. */
27
+ export declare const getDeviceToken: typeof getToken;
28
+ /**
29
+ * Prompts for notification permission and resolves the resulting grant state.
30
+ *
31
+ * Parity E1: Android needs a live Activity. The bridge resolves the current one
32
+ * and rejects if none is attached rather than crashing.
33
+ */
34
+ export declare function requestPermission(options?: RequestPermissionOptions): Promise<boolean>;
35
+ /**
36
+ * Whether notifications are currently permitted.
37
+ *
38
+ * Parity E3/E4/E6: iOS reads a cache and Android reads live, so the iOS bridge
39
+ * refreshes first. The two native shapes (`async` vs sync, `permission` vs
40
+ * `isPermissionGranted`) are collapsed into this one promise.
41
+ */
42
+ export declare function getPermission(): Promise<boolean>;
43
+ /**
44
+ * The granular permission state.
45
+ *
46
+ * Parity C7: iOS reports all five values. **Android reports only `authorized`
47
+ * or `denied`** — it never returns `notDetermined`, so do not gate a
48
+ * cross-platform pre-prompt on that value.
49
+ */
50
+ export declare function getPermissionStatus(): Promise<PermissionStatus>;
51
+ /**
52
+ * Whether a permission prompt can still be shown.
53
+ *
54
+ * Parity E2 — **known divergence, not yet fixed in the native SDKs.** iOS
55
+ * returns `true` only before the user has ever been asked. Android returns
56
+ * `true` whenever permission is not granted, *including after a permanent
57
+ * denial*. Treat a `true` on Android as "not granted", not as "never asked".
58
+ */
59
+ export declare function canRequestPermission(): Promise<boolean>;
60
+ /** Quiet iOS 12+ provisional authorization. **iOS only** — a no-op on Android. */
61
+ export declare function registerForProvisionalAuthorization(): Promise<void>;
62
+ export declare const notifications: {
63
+ /** Dismisses every notification this app has posted. */
64
+ clearAll(): Promise<void>;
65
+ /**
66
+ * Dismisses one notification by its payload `notification_id`.
67
+ *
68
+ * Parity F2: on Android the id is hashed to find the posted notification, so
69
+ * two ids that hash alike could collide. iOS matches the request identifier
70
+ * exactly.
71
+ */
72
+ remove(notificationId: string): Promise<void>;
73
+ /** Dismisses several notifications. Android loops; iOS removes them in one call. */
74
+ removeMany(notificationIds: string[]): Promise<void>;
75
+ /** Dismisses a notification group. **Android only** — a no-op on iOS. */
76
+ removeGroup(groupKey: string): Promise<void>;
77
+ };
78
+ export declare const badge: {
79
+ /**
80
+ * The SDK's badge count.
81
+ *
82
+ * Parity G1/G3: iOS reads the OS badge. Android has no OS read API, so this
83
+ * returns the SDK's own persisted value, which can drift from what the
84
+ * launcher actually shows.
85
+ */
86
+ get(): Promise<number>;
87
+ /**
88
+ * Sets the badge count.
89
+ *
90
+ * Parity G3: reliable on iOS. On Android this is a best-effort launcher
91
+ * broadcast that silently does nothing outside Samsung / MIUI / ASUS — which
92
+ * is why nothing here reports success.
93
+ */
94
+ set(count: number): Promise<void>;
95
+ /** Adds `delta` to the badge and resolves the new value, clamped at 0. */
96
+ increment(delta?: number): Promise<number>;
97
+ /** Clears the badge. */
98
+ clear(): Promise<void>;
99
+ /** Clears the badge whenever the app foregrounds. **iOS only.** */
100
+ setAutoClearOnForeground(enabled: boolean): Promise<void>;
101
+ };
102
+ export declare const user: {
103
+ /** The AppsOnAir device id. */
104
+ getAppsOnAirId(): Promise<string>;
105
+ getExternalId: typeof getExternalId;
106
+ addTag(key: string, value: string): Promise<void>;
107
+ addTags(tags: Record<string, string>): Promise<void>;
108
+ removeTag(key: string): Promise<void>;
109
+ removeTags(keys: string[]): Promise<void>;
110
+ /**
111
+ * The user's tags.
112
+ *
113
+ * **Android round-trips to the backend** once the device has a
114
+ * `subscriptionId`, replacing its local cache with the result; before
115
+ * registration it resolves the local cache without a network call. **iOS reads
116
+ * its local cache only.** So a tag set on another device shows up on Android
117
+ * and not on iOS, and the Android call can reject on a network failure where
118
+ * iOS cannot.
119
+ */
120
+ getTags(): Promise<Record<string, string>>;
121
+ addAlias(label: string, id: string): Promise<void>;
122
+ addAliases(aliases: Record<string, string>): Promise<void>;
123
+ removeAlias(label: string): Promise<void>;
124
+ removeAliases(labels: string[]): Promise<void>;
125
+ /**
126
+ * Adds an email identifier.
127
+ *
128
+ * Parity A5 — **known Android bug.** Android persists emails but never reads
129
+ * them back on restart, so an email added here silently vanishes when the app
130
+ * relaunches. The wrapper cannot work around it; it needs an SDK fix.
131
+ */
132
+ addEmail(address: string): Promise<void>;
133
+ removeEmail(address: string): Promise<void>;
134
+ setLanguage(languageCode: string): Promise<void>;
135
+ /**
136
+ * The device language.
137
+ *
138
+ * Parity 1.5 — Android reads this live; iOS snapshots it once at init and
139
+ * never refreshes, so a mid-session language change is stale on iOS.
140
+ */
141
+ getLanguage(): Promise<string>;
142
+ /** The current push subscription: `{ id, token, optedIn }`. */
143
+ getPushSubscription(): Promise<PushSubscriptionState>;
144
+ /** Opts this device back in to push delivery. */
145
+ optIn(): Promise<void>;
146
+ /** Opts this device out of push delivery without unregistering the token. */
147
+ optOut(): Promise<void>;
148
+ /**
149
+ * The subscription's enabled state as the backend sees it.
150
+ *
151
+ * Distinct from `getPushSubscription().optedIn`, which is the purely local
152
+ * `!optedOut` flag on both platforms. The two derive it differently and
153
+ * converge only in steady state:
154
+ *
155
+ * - **Android** reads it back from `/subscriptions`, so it reflects what the
156
+ * server actually stored. Before the device registers it falls back to the
157
+ * local value without a network call.
158
+ * - **iOS** computes the same flag it would send: an APNs token exists, the
159
+ * user has not opted out, *and* the OS currently grants permission. So
160
+ * revoking permission in Settings flips this to `false` on iOS while
161
+ * Android keeps reporting the server's stored value.
162
+ */
163
+ getOptedIn(): Promise<boolean>;
164
+ };
165
+ export declare const consent: {
166
+ setRequired(required: boolean): Promise<void>;
167
+ getRequired(): Promise<boolean>;
168
+ setGiven(given: boolean): Promise<void>;
169
+ getGiven(): Promise<boolean>;
170
+ };
171
+ export declare const debug: {
172
+ /** Sets SDK log verbosity. Safe to call before {@link initialize}. */
173
+ setLogLevel(level: LogLevel): Promise<void>;
174
+ };
175
+ /** Fires when a notification arrives while the app is in the foreground. */
176
+ export declare function onNotificationReceived(callback: (event: NotificationReceivedEvent) => void): Subscription;
177
+ /** Fires when the user taps a notification or one of its action buttons. */
178
+ export declare function onNotificationOpened(callback: (event: NotificationOpenedEvent) => void): Subscription;
179
+ /**
180
+ * Fires in the foreground *before* the notification is displayed, giving you a
181
+ * chance to suppress it.
182
+ *
183
+ * `preventDefault()` must be called synchronously inside the handler — the
184
+ * native side is holding the notification until this returns, and releases it
185
+ * anyway after a short timeout so a throwing handler cannot wedge delivery.
186
+ *
187
+ * All registered handlers run; the notification is suppressed if *any* of them
188
+ * calls `preventDefault()`.
189
+ *
190
+ * **`preventDefault()` is honoured on Android only.** iOS decides presentation
191
+ * synchronously and cannot wait for a JS answer — see
192
+ * {@link NotificationWillDisplayEvent.preventDefault}. The event itself fires on
193
+ * both platforms.
194
+ */
195
+ export declare function onNotificationWillDisplay(callback: (event: NotificationWillDisplayEvent) => void): Subscription;
196
+ /** Fires when the OS notification permission changes. */
197
+ export declare function onPermissionChanged(callback: (event: PermissionChangedEvent) => void): Subscription;
198
+ /** Fires when the push subscription's token or opt-in state changes. */
199
+ export declare function onSubscriptionChanged(callback: (event: PushSubscriptionChangedEvent) => void): Subscription;
200
+ /** Fires on {@link login} / {@link logout}. */
201
+ export declare function onUserStateChanged(callback: (event: UserStateChangedEvent) => void): Subscription;
202
+ /**
203
+ * Fires when the device registration token is issued or refreshed.
204
+ *
205
+ * This is the push-side counterpart to {@link getToken}: the getter answers
206
+ * "what is the token now", this answers "the token just changed" — which is when
207
+ * your backend needs to hear about it. A token can rotate at any point in a
208
+ * session, so a one-shot `getToken()` at startup will eventually go stale.
209
+ *
210
+ * `environment` is the APNs endpoint the backend must send to. It is
211
+ * `'sandbox'` or `'production'` on iOS and always `null` on Android, where FCM
212
+ * routes for you.
213
+ *
214
+ * Events raised before the first subscriber exists are dropped rather than
215
+ * queued on both platforms, so read {@link getToken} once after subscribing if
216
+ * you need the current value too.
217
+ */
218
+ export declare function onTokenUpdated(callback: (event: TokenUpdatedEvent) => void): Subscription;
219
+ /**
220
+ * Fires on an SDK-level failure — token registration, a denied permission, a
221
+ * missing Firebase config.
222
+ *
223
+ * These are conditions the SDK hits on its own schedule, outside any call you
224
+ * made, so they surface here rather than as a rejected promise. A promise
225
+ * rejection from a method you called carries the same `code` values.
226
+ *
227
+ * Without a subscriber these failures are silent, which is why this is worth
228
+ * wiring even if it only ever logs.
229
+ */
230
+ export declare function onError(callback: (event: PushErrorEvent) => void): Subscription;
231
+ /**
232
+ * Fires for a data-only push that is delivered without being displayed.
233
+ *
234
+ * Supported on both platforms, but they are triggered differently and your
235
+ * backend has to send for both: iOS uses the APNs `content-available` flag,
236
+ * while Android keys off a `silent: "true"` data entry, since FCM has no
237
+ * transport-level equivalent. See {@link SilentNotificationEvent}.
238
+ *
239
+ * iOS invokes the OS completion handler as soon as this event is emitted, so
240
+ * the handler cannot extend the app's background execution window: treat it as
241
+ * a notification that the payload arrived, not as a place to await work.
242
+ */
243
+ export declare function onSilentNotification(callback: (event: SilentNotificationEvent) => void): Subscription;
244
+ /**
245
+ * Fires when the Firebase Installation ID becomes available.
246
+ *
247
+ * **Android only** — the event name is registered on iOS so the two bridges
248
+ * stay diffable, but nothing ever emits it there.
249
+ */
250
+ export declare function onInstallationIdUpdated(callback: (event: InstallationIdEvent) => void): Subscription;
251
+ declare const AppPushService: {
252
+ initialize: typeof initialize;
253
+ isInitialized: typeof isInitialized;
254
+ getDeviceId: typeof getDeviceId;
255
+ getSubscriptionId: typeof getSubscriptionId;
256
+ getExternalId: typeof getExternalId;
257
+ login: typeof login;
258
+ logout: typeof logout;
259
+ setUserId: typeof login;
260
+ getToken: typeof getToken;
261
+ getDeviceToken: typeof getToken;
262
+ requestPermission: typeof requestPermission;
263
+ getPermission: typeof getPermission;
264
+ getPermissionStatus: typeof getPermissionStatus;
265
+ canRequestPermission: typeof canRequestPermission;
266
+ registerForProvisionalAuthorization: typeof registerForProvisionalAuthorization;
267
+ notifications: {
268
+ /** Dismisses every notification this app has posted. */
269
+ clearAll(): Promise<void>;
270
+ /**
271
+ * Dismisses one notification by its payload `notification_id`.
272
+ *
273
+ * Parity F2: on Android the id is hashed to find the posted notification, so
274
+ * two ids that hash alike could collide. iOS matches the request identifier
275
+ * exactly.
276
+ */
277
+ remove(notificationId: string): Promise<void>;
278
+ /** Dismisses several notifications. Android loops; iOS removes them in one call. */
279
+ removeMany(notificationIds: string[]): Promise<void>;
280
+ /** Dismisses a notification group. **Android only** — a no-op on iOS. */
281
+ removeGroup(groupKey: string): Promise<void>;
282
+ };
283
+ badge: {
284
+ /**
285
+ * The SDK's badge count.
286
+ *
287
+ * Parity G1/G3: iOS reads the OS badge. Android has no OS read API, so this
288
+ * returns the SDK's own persisted value, which can drift from what the
289
+ * launcher actually shows.
290
+ */
291
+ get(): Promise<number>;
292
+ /**
293
+ * Sets the badge count.
294
+ *
295
+ * Parity G3: reliable on iOS. On Android this is a best-effort launcher
296
+ * broadcast that silently does nothing outside Samsung / MIUI / ASUS — which
297
+ * is why nothing here reports success.
298
+ */
299
+ set(count: number): Promise<void>;
300
+ /** Adds `delta` to the badge and resolves the new value, clamped at 0. */
301
+ increment(delta?: number): Promise<number>;
302
+ /** Clears the badge. */
303
+ clear(): Promise<void>;
304
+ /** Clears the badge whenever the app foregrounds. **iOS only.** */
305
+ setAutoClearOnForeground(enabled: boolean): Promise<void>;
306
+ };
307
+ user: {
308
+ /** The AppsOnAir device id. */
309
+ getAppsOnAirId(): Promise<string>;
310
+ getExternalId: typeof getExternalId;
311
+ addTag(key: string, value: string): Promise<void>;
312
+ addTags(tags: Record<string, string>): Promise<void>;
313
+ removeTag(key: string): Promise<void>;
314
+ removeTags(keys: string[]): Promise<void>;
315
+ /**
316
+ * The user's tags.
317
+ *
318
+ * **Android round-trips to the backend** once the device has a
319
+ * `subscriptionId`, replacing its local cache with the result; before
320
+ * registration it resolves the local cache without a network call. **iOS reads
321
+ * its local cache only.** So a tag set on another device shows up on Android
322
+ * and not on iOS, and the Android call can reject on a network failure where
323
+ * iOS cannot.
324
+ */
325
+ getTags(): Promise<Record<string, string>>;
326
+ addAlias(label: string, id: string): Promise<void>;
327
+ addAliases(aliases: Record<string, string>): Promise<void>;
328
+ removeAlias(label: string): Promise<void>;
329
+ removeAliases(labels: string[]): Promise<void>;
330
+ /**
331
+ * Adds an email identifier.
332
+ *
333
+ * Parity A5 — **known Android bug.** Android persists emails but never reads
334
+ * them back on restart, so an email added here silently vanishes when the app
335
+ * relaunches. The wrapper cannot work around it; it needs an SDK fix.
336
+ */
337
+ addEmail(address: string): Promise<void>;
338
+ removeEmail(address: string): Promise<void>;
339
+ setLanguage(languageCode: string): Promise<void>;
340
+ /**
341
+ * The device language.
342
+ *
343
+ * Parity 1.5 — Android reads this live; iOS snapshots it once at init and
344
+ * never refreshes, so a mid-session language change is stale on iOS.
345
+ */
346
+ getLanguage(): Promise<string>;
347
+ /** The current push subscription: `{ id, token, optedIn }`. */
348
+ getPushSubscription(): Promise<PushSubscriptionState>;
349
+ /** Opts this device back in to push delivery. */
350
+ optIn(): Promise<void>;
351
+ /** Opts this device out of push delivery without unregistering the token. */
352
+ optOut(): Promise<void>;
353
+ /**
354
+ * The subscription's enabled state as the backend sees it.
355
+ *
356
+ * Distinct from `getPushSubscription().optedIn`, which is the purely local
357
+ * `!optedOut` flag on both platforms. The two derive it differently and
358
+ * converge only in steady state:
359
+ *
360
+ * - **Android** reads it back from `/subscriptions`, so it reflects what the
361
+ * server actually stored. Before the device registers it falls back to the
362
+ * local value without a network call.
363
+ * - **iOS** computes the same flag it would send: an APNs token exists, the
364
+ * user has not opted out, *and* the OS currently grants permission. So
365
+ * revoking permission in Settings flips this to `false` on iOS while
366
+ * Android keeps reporting the server's stored value.
367
+ */
368
+ getOptedIn(): Promise<boolean>;
369
+ };
370
+ consent: {
371
+ setRequired(required: boolean): Promise<void>;
372
+ getRequired(): Promise<boolean>;
373
+ setGiven(given: boolean): Promise<void>;
374
+ getGiven(): Promise<boolean>;
375
+ };
376
+ debug: {
377
+ /** Sets SDK log verbosity. Safe to call before {@link initialize}. */
378
+ setLogLevel(level: LogLevel): Promise<void>;
379
+ };
380
+ onNotificationReceived: typeof onNotificationReceived;
381
+ onNotificationOpened: typeof onNotificationOpened;
382
+ onNotificationWillDisplay: typeof onNotificationWillDisplay;
383
+ onPermissionChanged: typeof onPermissionChanged;
384
+ onSubscriptionChanged: typeof onSubscriptionChanged;
385
+ onUserStateChanged: typeof onUserStateChanged;
386
+ onTokenUpdated: typeof onTokenUpdated;
387
+ onError: typeof onError;
388
+ onSilentNotification: typeof onSilentNotification;
389
+ onInstallationIdUpdated: typeof onInstallationIdUpdated;
390
+ };
391
+ export default AppPushService;
392
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.tsx"],"names":[],"mappings":"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"}