UNPKG

9.5 kBTypeScriptView Raw
1/**
2 * Copyright (c) Meta Platforms, Inc. and affiliates.
3 *
4 * This source code is licensed under the MIT license found in the
5 * LICENSE file in the root directory of this source tree.
6 *
7 * @format
8 */
9
10export interface PushNotificationPermissions {
11 alert?: boolean | undefined;
12 badge?: boolean | undefined;
13 sound?: boolean | undefined;
14}
15
16export interface PushNotification {
17 /**
18 * An alias for `getAlert` to get the notification's main message string
19 */
20 getMessage(): string | Object;
21
22 /**
23 * Gets the sound string from the `aps` object
24 */
25 getSound(): string;
26
27 /**
28 * Gets the category string from the `aps` object
29 */
30 getCategory(): string;
31
32 /**
33 * Gets the notification's main message from the `aps` object
34 */
35 getAlert(): string | Object;
36
37 /**
38 * Gets the content-available number from the `aps` object
39 */
40 getContentAvailable(): number;
41
42 /**
43 * Gets the badge count number from the `aps` object
44 */
45 getBadgeCount(): number;
46
47 /**
48 * Gets the data object on the notif
49 */
50 getData(): Object;
51
52 /**
53 * Gets the thread ID on the notif
54 */
55 getThreadId(): string;
56
57 /**
58 * iOS Only
59 * Signifies remote notification handling is complete
60 */
61 finish(result: string): void;
62}
63
64type PresentLocalNotificationDetails = {
65 alertBody: string;
66 alertAction: string;
67 alertTitle?: string | undefined;
68 soundName?: string | undefined;
69 category?: string | undefined;
70 userInfo?: Object | undefined;
71 applicationIconBadgeNumber?: number | undefined;
72};
73
74type ScheduleLocalNotificationDetails = {
75 alertAction?: string | undefined;
76 alertBody?: string | undefined;
77 alertTitle?: string | undefined;
78 applicationIconBadgeNumber?: number | undefined;
79 category?: string | undefined;
80 fireDate?: number | string | undefined;
81 isSilent?: boolean | undefined;
82 repeatInterval?:
83 | 'year'
84 | 'month'
85 | 'week'
86 | 'day'
87 | 'hour'
88 | 'minute'
89 | undefined;
90 soundName?: string | undefined;
91 userInfo?: Object | undefined;
92};
93
94export type PushNotificationEventName =
95 | 'notification'
96 | 'localNotification'
97 | 'register'
98 | 'registrationError';
99
100type FetchResult = {
101 NewData: 'UIBackgroundFetchResultNewData';
102 NoData: 'UIBackgroundFetchResultNoData';
103 ResultFailed: 'UIBackgroundFetchResultFailed';
104};
105
106/**
107 * Handle push notifications for your app, including permission handling and icon badge number.
108 * @see https://reactnative.dev/docs/pushnotificationios#content
109 *
110 * //FIXME: BGR: The documentation seems completely off compared to the actual js implementation. I could never get the example to run
111 */
112export interface PushNotificationIOSStatic {
113 /**
114 * Schedules the localNotification for immediate presentation.
115 * details is an object containing:
116 * alertBody : The message displayed in the notification alert.
117 * alertAction : The "action" displayed beneath an actionable notification. Defaults to "view";
118 * soundName : The sound played when the notification is fired (optional).
119 * category : The category of this notification, required for actionable notifications (optional).
120 * userInfo : An optional object containing additional notification data.
121 * applicationIconBadgeNumber (optional) : The number to display as the app's icon badge. The default value of this property is 0, which means that no badge is displayed.
122 */
123 presentLocalNotification(details: PresentLocalNotificationDetails): void;
124
125 /**
126 * Schedules the localNotification for future presentation.
127 * details is an object containing:
128 * fireDate : The date and time when the system should deliver the notification.
129 * alertBody : The message displayed in the notification alert.
130 * alertAction : The "action" displayed beneath an actionable notification. Defaults to "view";
131 * soundName : The sound played when the notification is fired (optional).
132 * category : The category of this notification, required for actionable notifications (optional).
133 * userInfo : An optional object containing additional notification data.
134 * applicationIconBadgeNumber (optional) : The number to display as the app's icon badge. Setting the number to 0 removes the icon badge.
135 */
136 scheduleLocalNotification(details: ScheduleLocalNotificationDetails): void;
137
138 /**
139 * Cancels all scheduled localNotifications
140 */
141 cancelAllLocalNotifications(): void;
142
143 /**
144 * Remove all delivered notifications from Notification Center.
145 */
146 removeAllDeliveredNotifications(): void;
147
148 /**
149 * Provides you with a list of the app’s notifications that are still displayed in Notification Center.
150 */
151 getDeliveredNotifications(callback: (notifications: Object[]) => void): void;
152
153 /**
154 * Removes the specified notifications from Notification Center
155 */
156 removeDeliveredNotifications(identifiers: string[]): void;
157
158 /**
159 * Cancel local notifications.
160 * Optionally restricts the set of canceled notifications to those notifications whose userInfo fields match the corresponding fields in the userInfo argument.
161 */
162 cancelLocalNotifications(userInfo: Object): void;
163
164 /**
165 * Sets the badge number for the app icon on the home screen
166 */
167 setApplicationIconBadgeNumber(number: number): void;
168
169 /**
170 * Gets the current badge number for the app icon on the home screen
171 */
172 getApplicationIconBadgeNumber(callback: (badge: number) => void): void;
173
174 /**
175 * Gets the local notifications that are currently scheduled.
176 */
177 getScheduledLocalNotifications(
178 callback: (notifications: ScheduleLocalNotificationDetails[]) => void,
179 ): void;
180
181 /**
182 * Attaches a listener to remote notifications while the app is running in the
183 * foreground or the background.
184 *
185 * The handler will get be invoked with an instance of `PushNotificationIOS`
186 *
187 * The type MUST be 'notification'
188 */
189 addEventListener(
190 type: 'notification' | 'localNotification',
191 handler: (notification: PushNotification) => void,
192 ): void;
193
194 /**
195 * Fired when the user registers for remote notifications.
196 *
197 * The handler will be invoked with a hex string representing the deviceToken.
198 *
199 * The type MUST be 'register'
200 */
201 addEventListener(
202 type: 'register',
203 handler: (deviceToken: string) => void,
204 ): void;
205
206 /**
207 * Fired when the user fails to register for remote notifications.
208 * Typically occurs when APNS is having issues, or the device is a simulator.
209 *
210 * The handler will be invoked with {message: string, code: number, details: any}.
211 *
212 * The type MUST be 'registrationError'
213 */
214 addEventListener(
215 type: 'registrationError',
216 handler: (error: {message: string; code: number; details: any}) => void,
217 ): void;
218
219 /**
220 * Removes the event listener. Do this in `componentWillUnmount` to prevent
221 * memory leaks
222 */
223 removeEventListener(
224 type: PushNotificationEventName,
225 handler:
226 | ((notification: PushNotification) => void)
227 | ((deviceToken: string) => void)
228 | ((error: {message: string; code: number; details: any}) => void),
229 ): void;
230
231 /**
232 * Requests all notification permissions from iOS, prompting the user's
233 * dialog box.
234 */
235 requestPermissions(permissions?: PushNotificationPermissions[]): void;
236
237 /**
238 * Requests all notification permissions from iOS, prompting the user's
239 * dialog box.
240 */
241 requestPermissions(
242 permissions?: PushNotificationPermissions,
243 ): Promise<PushNotificationPermissions>;
244
245 /**
246 * Unregister for all remote notifications received via Apple Push
247 * Notification service.
248 * You should call this method in rare circumstances only, such as when
249 * a new version of the app removes support for all types of remote
250 * notifications. Users can temporarily prevent apps from receiving
251 * remote notifications through the Notifications section of the
252 * Settings app. Apps unregistered through this method can always
253 * re-register.
254 */
255 abandonPermissions(): void;
256
257 /**
258 * See what push permissions are currently enabled. `callback` will be
259 * invoked with a `permissions` object:
260 *
261 * - `alert` :boolean
262 * - `badge` :boolean
263 * - `sound` :boolean
264 */
265 checkPermissions(
266 callback: (permissions: PushNotificationPermissions) => void,
267 ): void;
268
269 /**
270 * This method returns a promise that resolves to either the notification
271 * object if the app was launched by a push notification, or `null` otherwise.
272 */
273 getInitialNotification(): Promise<PushNotification | null>;
274
275 /**
276 * iOS fetch results that best describe the result of a finished remote notification handler.
277 * For a list of possible values, see `PushNotificationIOS.FetchResult`.
278 */
279 FetchResult: FetchResult;
280}
281
282/**
283 * PushNotificationIOS has been extracted from react-native core and will be removed in a future release.
284 * It can now be installed and imported from `@react-native-community/push-notification-ios` instead of 'react-native'.
285 * @see https://github.com/react-native-community/react-native-push-notification-ios
286 * @deprecated
287 */
288export const PushNotificationIOS: PushNotificationIOSStatic;
289/**
290 * PushNotificationIOS has been extracted from react-native core and will be removed in a future release.
291 * It can now be installed and imported from `@react-native-community/push-notification-ios` instead of 'react-native'.
292 * @see https://github.com/react-native-community/react-native-push-notification-ios
293 * @deprecated
294 */
295export type PushNotificationIOS = PushNotificationIOSStatic;
296
\No newline at end of file