123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989 |
- /*! firebase-admin v12.1.1 */
- /*!
- * @license
- * Copyright 2021 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- import { FirebaseArrayIndexError, FirebaseError } from '../app/index';
- export interface BaseMessage {
- data?: {
- [key: string]: string;
- };
- notification?: Notification;
- android?: AndroidConfig;
- webpush?: WebpushConfig;
- apns?: ApnsConfig;
- fcmOptions?: FcmOptions;
- }
- export interface TokenMessage extends BaseMessage {
- token: string;
- }
- export interface TopicMessage extends BaseMessage {
- topic: string;
- }
- export interface ConditionMessage extends BaseMessage {
- condition: string;
- }
- /**
- * Payload for the {@link Messaging.send} operation. The payload contains all the fields
- * in the BaseMessage type, and exactly one of token, topic or condition.
- */
- export type Message = TokenMessage | TopicMessage | ConditionMessage;
- /**
- * Payload for the {@link Messaging.sendMulticast} method. The payload contains all the fields
- * in the BaseMessage type, and a list of tokens.
- */
- export interface MulticastMessage extends BaseMessage {
- tokens: string[];
- }
- /**
- * A notification that can be included in {@link Message}.
- */
- export interface Notification {
- /**
- * The title of the notification.
- */
- title?: string;
- /**
- * The notification body
- */
- body?: string;
- /**
- * URL of an image to be displayed in the notification.
- */
- imageUrl?: string;
- }
- /**
- * Represents platform-independent options for features provided by the FCM SDKs.
- */
- export interface FcmOptions {
- /**
- * The label associated with the message's analytics data.
- */
- analyticsLabel?: string;
- }
- /**
- * Represents the WebPush protocol options that can be included in an
- * {@link Message}.
- */
- export interface WebpushConfig {
- /**
- * A collection of WebPush headers. Header values must be strings.
- *
- * See {@link https://tools.ietf.org/html/rfc8030#section-5 | WebPush specification}
- * for supported headers.
- */
- headers?: {
- [key: string]: string;
- };
- /**
- * A collection of data fields.
- */
- data?: {
- [key: string]: string;
- };
- /**
- * A WebPush notification payload to be included in the message.
- */
- notification?: WebpushNotification;
- /**
- * Options for features provided by the FCM SDK for Web.
- */
- fcmOptions?: WebpushFcmOptions;
- }
- /** Represents options for features provided by the FCM SDK for Web
- * (which are not part of the Webpush standard).
- */
- export interface WebpushFcmOptions {
- /**
- * The link to open when the user clicks on the notification.
- * For all URL values, HTTPS is required.
- */
- link?: string;
- }
- /**
- * Represents the WebPush-specific notification options that can be included in
- * {@link WebpushConfig}. This supports most of the standard
- * options as defined in the Web Notification
- * {@link https://developer.mozilla.org/en-US/docs/Web/API/notification/Notification | specification}.
- */
- export interface WebpushNotification {
- /**
- * Title text of the notification.
- */
- title?: string;
- /**
- * An array of notification actions representing the actions
- * available to the user when the notification is presented.
- */
- actions?: Array<{
- /**
- * An action available to the user when the notification is presented
- */
- action: string;
- /**
- * Optional icon for a notification action.
- */
- icon?: string;
- /**
- * Title of the notification action.
- */
- title: string;
- }>;
- /**
- * URL of the image used to represent the notification when there is
- * not enough space to display the notification itself.
- */
- badge?: string;
- /**
- * Body text of the notification.
- */
- body?: string;
- /**
- * Arbitrary data that you want associated with the notification.
- * This can be of any data type.
- */
- data?: any;
- /**
- * The direction in which to display the notification. Must be one
- * of `auto`, `ltr` or `rtl`.
- */
- dir?: 'auto' | 'ltr' | 'rtl';
- /**
- * URL to the notification icon.
- */
- icon?: string;
- /**
- * URL of an image to be displayed in the notification.
- */
- image?: string;
- /**
- * The notification's language as a BCP 47 language tag.
- */
- lang?: string;
- /**
- * A boolean specifying whether the user should be notified after a
- * new notification replaces an old one. Defaults to false.
- */
- renotify?: boolean;
- /**
- * Indicates that a notification should remain active until the user
- * clicks or dismisses it, rather than closing automatically.
- * Defaults to false.
- */
- requireInteraction?: boolean;
- /**
- * A boolean specifying whether the notification should be silent.
- * Defaults to false.
- */
- silent?: boolean;
- /**
- * An identifying tag for the notification.
- */
- tag?: string;
- /**
- * Timestamp of the notification. Refer to
- * https://developer.mozilla.org/en-US/docs/Web/API/notification/timestamp
- * for details.
- */
- timestamp?: number;
- /**
- * A vibration pattern for the device's vibration hardware to emit
- * when the notification fires.
- */
- vibrate?: number | number[];
- [key: string]: any;
- }
- /**
- * Represents the APNs-specific options that can be included in an
- * {@link Message}. Refer to
- * {@link https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CommunicatingwithAPNs.html |
- * Apple documentation} for various headers and payload fields supported by APNs.
- */
- export interface ApnsConfig {
- /**
- * A collection of APNs headers. Header values must be strings.
- */
- headers?: {
- [key: string]: string;
- };
- /**
- * An APNs payload to be included in the message.
- */
- payload?: ApnsPayload;
- /**
- * Options for features provided by the FCM SDK for iOS.
- */
- fcmOptions?: ApnsFcmOptions;
- }
- /**
- * Represents the payload of an APNs message. Mainly consists of the `aps`
- * dictionary. But may also contain other arbitrary custom keys.
- */
- export interface ApnsPayload {
- /**
- * The `aps` dictionary to be included in the message.
- */
- aps: Aps;
- [customData: string]: any;
- }
- /**
- * Represents the {@link https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/PayloadKeyReference.html |
- * aps dictionary} that is part of APNs messages.
- */
- export interface Aps {
- /**
- * Alert to be included in the message. This may be a string or an object of
- * type `admin.messaging.ApsAlert`.
- */
- alert?: string | ApsAlert;
- /**
- * Badge to be displayed with the message. Set to 0 to remove the badge. When
- * not specified, the badge will remain unchanged.
- */
- badge?: number;
- /**
- * Sound to be played with the message.
- */
- sound?: string | CriticalSound;
- /**
- * Specifies whether to configure a background update notification.
- */
- contentAvailable?: boolean;
- /**
- * Specifies whether to set the `mutable-content` property on the message
- * so the clients can modify the notification via app extensions.
- */
- mutableContent?: boolean;
- /**
- * Type of the notification.
- */
- category?: string;
- /**
- * An app-specific identifier for grouping notifications.
- */
- threadId?: string;
- [customData: string]: any;
- }
- export interface ApsAlert {
- title?: string;
- subtitle?: string;
- body?: string;
- locKey?: string;
- locArgs?: string[];
- titleLocKey?: string;
- titleLocArgs?: string[];
- subtitleLocKey?: string;
- subtitleLocArgs?: string[];
- actionLocKey?: string;
- launchImage?: string;
- }
- /**
- * Represents a critical sound configuration that can be included in the
- * `aps` dictionary of an APNs payload.
- */
- export interface CriticalSound {
- /**
- * The critical alert flag. Set to `true` to enable the critical alert.
- */
- critical?: boolean;
- /**
- * The name of a sound file in the app's main bundle or in the `Library/Sounds`
- * folder of the app's container directory. Specify the string "default" to play
- * the system sound.
- */
- name: string;
- /**
- * The volume for the critical alert's sound. Must be a value between 0.0
- * (silent) and 1.0 (full volume).
- */
- volume?: number;
- }
- /**
- * Represents options for features provided by the FCM SDK for iOS.
- */
- export interface ApnsFcmOptions {
- /**
- * The label associated with the message's analytics data.
- */
- analyticsLabel?: string;
- /**
- * URL of an image to be displayed in the notification.
- */
- imageUrl?: string;
- }
- /**
- * Represents the Android-specific options that can be included in an
- * {@link Message}.
- */
- export interface AndroidConfig {
- /**
- * Collapse key for the message. Collapse key serves as an identifier for a
- * group of messages that can be collapsed, so that only the last message gets
- * sent when delivery can be resumed. A maximum of four different collapse keys
- * may be active at any given time.
- */
- collapseKey?: string;
- /**
- * Priority of the message. Must be either `normal` or `high`.
- */
- priority?: ('high' | 'normal');
- /**
- * Time-to-live duration of the message in milliseconds.
- */
- ttl?: number;
- /**
- * Package name of the application where the registration tokens must match
- * in order to receive the message.
- */
- restrictedPackageName?: string;
- /**
- * A collection of data fields to be included in the message. All values must
- * be strings. When provided, overrides any data fields set on the top-level
- * {@link Message}.
- */
- data?: {
- [key: string]: string;
- };
- /**
- * Android notification to be included in the message.
- */
- notification?: AndroidNotification;
- /**
- * Options for features provided by the FCM SDK for Android.
- */
- fcmOptions?: AndroidFcmOptions;
- }
- /**
- * Represents the Android-specific notification options that can be included in
- * {@link AndroidConfig}.
- */
- export interface AndroidNotification {
- /**
- * Title of the Android notification. When provided, overrides the title set via
- * `admin.messaging.Notification`.
- */
- title?: string;
- /**
- * Body of the Android notification. When provided, overrides the body set via
- * `admin.messaging.Notification`.
- */
- body?: string;
- /**
- * Icon resource for the Android notification.
- */
- icon?: string;
- /**
- * Notification icon color in `#rrggbb` format.
- */
- color?: string;
- /**
- * File name of the sound to be played when the device receives the
- * notification.
- */
- sound?: string;
- /**
- * Notification tag. This is an identifier used to replace existing
- * notifications in the notification drawer. If not specified, each request
- * creates a new notification.
- */
- tag?: string;
- /**
- * URL of an image to be displayed in the notification.
- */
- imageUrl?: string;
- /**
- * Action associated with a user click on the notification. If specified, an
- * activity with a matching Intent Filter is launched when a user clicks on the
- * notification.
- */
- clickAction?: string;
- /**
- * Key of the body string in the app's string resource to use to localize the
- * body text.
- *
- */
- bodyLocKey?: string;
- /**
- * An array of resource keys that will be used in place of the format
- * specifiers in `bodyLocKey`.
- */
- bodyLocArgs?: string[];
- /**
- * Key of the title string in the app's string resource to use to localize the
- * title text.
- */
- titleLocKey?: string;
- /**
- * An array of resource keys that will be used in place of the format
- * specifiers in `titleLocKey`.
- */
- titleLocArgs?: string[];
- /**
- * The Android notification channel ID (new in Android O). The app must create
- * a channel with this channel ID before any notification with this channel ID
- * can be received. If you don't send this channel ID in the request, or if the
- * channel ID provided has not yet been created by the app, FCM uses the channel
- * ID specified in the app manifest.
- */
- channelId?: string;
- /**
- * Sets the "ticker" text, which is sent to accessibility services. Prior to
- * API level 21 (Lollipop), sets the text that is displayed in the status bar
- * when the notification first arrives.
- */
- ticker?: string;
- /**
- * When set to `false` or unset, the notification is automatically dismissed when
- * the user clicks it in the panel. When set to `true`, the notification persists
- * even when the user clicks it.
- */
- sticky?: boolean;
- /**
- * For notifications that inform users about events with an absolute time reference, sets
- * the time that the event in the notification occurred. Notifications
- * in the panel are sorted by this time.
- */
- eventTimestamp?: Date;
- /**
- * Sets whether or not this notification is relevant only to the current device.
- * Some notifications can be bridged to other devices for remote display, such as
- * a Wear OS watch. This hint can be set to recommend this notification not be bridged.
- * See {@link https://developer.android.com/training/wearables/notifications/bridger#existing-method-of-preventing-bridging |
- * Wear OS guides}.
- */
- localOnly?: boolean;
- /**
- * Sets the relative priority for this notification. Low-priority notifications
- * may be hidden from the user in certain situations. Note this priority differs
- * from `AndroidMessagePriority`. This priority is processed by the client after
- * the message has been delivered. Whereas `AndroidMessagePriority` is an FCM concept
- * that controls when the message is delivered.
- */
- priority?: ('min' | 'low' | 'default' | 'high' | 'max');
- /**
- * Sets the vibration pattern to use. Pass in an array of milliseconds to
- * turn the vibrator on or off. The first value indicates the duration to wait before
- * turning the vibrator on. The next value indicates the duration to keep the
- * vibrator on. Subsequent values alternate between duration to turn the vibrator
- * off and to turn the vibrator on. If `vibrate_timings` is set and `default_vibrate_timings`
- * is set to `true`, the default value is used instead of the user-specified `vibrate_timings`.
- */
- vibrateTimingsMillis?: number[];
- /**
- * If set to `true`, use the Android framework's default vibrate pattern for the
- * notification. Default values are specified in {@link https://android.googlesource.com/platform/frameworks/base/+/master/core/res/res/values/config.xml |
- * config.xml}. If `default_vibrate_timings` is set to `true` and `vibrate_timings` is also set,
- * the default value is used instead of the user-specified `vibrate_timings`.
- */
- defaultVibrateTimings?: boolean;
- /**
- * If set to `true`, use the Android framework's default sound for the notification.
- * Default values are specified in {@link https://android.googlesource.com/platform/frameworks/base/+/master/core/res/res/values/config.xml |
- * config.xml}.
- */
- defaultSound?: boolean;
- /**
- * Settings to control the notification's LED blinking rate and color if LED is
- * available on the device. The total blinking time is controlled by the OS.
- */
- lightSettings?: LightSettings;
- /**
- * If set to `true`, use the Android framework's default LED light settings
- * for the notification. Default values are specified in {@link https://android.googlesource.com/platform/frameworks/base/+/master/core/res/res/values/config.xml |
- * config.xml}.
- * If `default_light_settings` is set to `true` and `light_settings` is also set,
- * the user-specified `light_settings` is used instead of the default value.
- */
- defaultLightSettings?: boolean;
- /**
- * Sets the visibility of the notification. Must be either `private`, `public`,
- * or `secret`. If unspecified, defaults to `private`.
- */
- visibility?: ('private' | 'public' | 'secret');
- /**
- * Sets the number of items this notification represents. May be displayed as a
- * badge count for Launchers that support badging. See {@link https://developer.android.com/training/notify-user/badges |
- * NotificationBadge}.
- * For example, this might be useful if you're using just one notification to
- * represent multiple new messages but you want the count here to represent
- * the number of total new messages. If zero or unspecified, systems
- * that support badging use the default, which is to increment a number
- * displayed on the long-press menu each time a new notification arrives.
- */
- notificationCount?: number;
- }
- /**
- * Represents settings to control notification LED that can be included in
- * {@link AndroidNotification}.
- */
- export interface LightSettings {
- /**
- * Required. Sets color of the LED in `#rrggbb` or `#rrggbbaa` format.
- */
- color: string;
- /**
- * Required. Along with `light_off_duration`, defines the blink rate of LED flashes.
- */
- lightOnDurationMillis: number;
- /**
- * Required. Along with `light_on_duration`, defines the blink rate of LED flashes.
- */
- lightOffDurationMillis: number;
- }
- /**
- * Represents options for features provided by the FCM SDK for Android.
- */
- export interface AndroidFcmOptions {
- /**
- * The label associated with the message's analytics data.
- */
- analyticsLabel?: string;
- }
- /**
- * Interface representing an FCM legacy API data message payload. Data
- * messages let developers send up to 4KB of custom key-value pairs. The
- * keys and values must both be strings. Keys can be any custom string,
- * except for the following reserved strings:
- *
- * <ul>
- * <li><code>from</code></li>
- * <li>Anything starting with <code>google.</code></li>
- * </ul>
- *
- * See {@link https://firebase.google.com/docs/cloud-messaging/send-message | Build send requests}
- * for code samples and detailed documentation.
- */
- export interface DataMessagePayload {
- [key: string]: string;
- }
- /**
- * Interface representing an FCM legacy API notification message payload.
- * Notification messages let developers send up to 4KB of predefined
- * key-value pairs. Accepted keys are outlined below.
- *
- * See {@link https://firebase.google.com/docs/cloud-messaging/send-message | Build send requests}
- * for code samples and detailed documentation.
- */
- export interface NotificationMessagePayload {
- /**
- * Identifier used to replace existing notifications in the notification drawer.
- *
- * If not specified, each request creates a new notification.
- *
- * If specified and a notification with the same tag is already being shown,
- * the new notification replaces the existing one in the notification drawer.
- *
- * **Platforms:** Android
- */
- tag?: string;
- /**
- * The notification's body text.
- *
- * **Platforms:** iOS, Android, Web
- */
- body?: string;
- /**
- * The notification's icon.
- *
- * **Android:** Sets the notification icon to `myicon` for drawable resource
- * `myicon`. If you don't send this key in the request, FCM displays the
- * launcher icon specified in your app manifest.
- *
- * **Web:** The URL to use for the notification's icon.
- *
- * **Platforms:** Android, Web
- */
- icon?: string;
- /**
- * The value of the badge on the home screen app icon.
- *
- * If not specified, the badge is not changed.
- *
- * If set to `0`, the badge is removed.
- *
- * **Platforms:** iOS
- */
- badge?: string;
- /**
- * The notification icon's color, expressed in `#rrggbb` format.
- *
- * **Platforms:** Android
- */
- color?: string;
- /**
- * The sound to be played when the device receives a notification. Supports
- * "default" for the default notification sound of the device or the filename of a
- * sound resource bundled in the app.
- * Sound files must reside in `/res/raw/`.
- *
- * **Platforms:** Android
- */
- sound?: string;
- /**
- * The notification's title.
- *
- * **Platforms:** iOS, Android, Web
- */
- title?: string;
- /**
- * The key to the body string in the app's string resources to use to localize
- * the body text to the user's current localization.
- *
- * **iOS:** Corresponds to `loc-key` in the APNs payload. See
- * {@link https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/PayloadKeyReference.html |
- * Payload Key Reference} and
- * {@link https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CreatingtheNotificationPayload.html#//apple_ref/doc/uid/TP40008194-CH10-SW9 |
- * Localizing the Content of Your Remote Notifications} for more information.
- *
- * **Android:** See
- * {@link http://developer.android.com/guide/topics/resources/string-resource.html | String Resources}
- * for more information.
- *
- * **Platforms:** iOS, Android
- */
- bodyLocKey?: string;
- /**
- * Variable string values to be used in place of the format specifiers in
- * `body_loc_key` to use to localize the body text to the user's current
- * localization.
- *
- * The value should be a stringified JSON array.
- *
- * **iOS:** Corresponds to `loc-args` in the APNs payload. See
- * {@link https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/PayloadKeyReference.html |
- * Payload Key Reference} and
- * {@link https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CreatingtheNotificationPayload.html#//apple_ref/doc/uid/TP40008194-CH10-SW9 |
- * Localizing the Content of Your Remote Notifications} for more information.
- *
- * **Android:** See
- * {@link http://developer.android.com/guide/topics/resources/string-resource.html#FormattingAndStyling |
- * Formatting and Styling} for more information.
- *
- * **Platforms:** iOS, Android
- */
- bodyLocArgs?: string;
- /**
- * Action associated with a user click on the notification. If specified, an
- * activity with a matching Intent Filter is launched when a user clicks on the
- * notification.
- *
- * * **Platforms:** Android
- */
- clickAction?: string;
- /**
- * The key to the title string in the app's string resources to use to localize
- * the title text to the user's current localization.
- *
- * **iOS:** Corresponds to `title-loc-key` in the APNs payload. See
- * {@link https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/PayloadKeyReference.html |
- * Payload Key Reference} and
- * {@link https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CreatingtheNotificationPayload.html#//apple_ref/doc/uid/TP40008194-CH10-SW9 |
- * Localizing the Content of Your Remote Notifications} for more information.
- *
- * **Android:** See
- * {@link http://developer.android.com/guide/topics/resources/string-resource.html | String Resources}
- * for more information.
- *
- * **Platforms:** iOS, Android
- */
- titleLocKey?: string;
- /**
- * Variable string values to be used in place of the format specifiers in
- * `title_loc_key` to use to localize the title text to the user's current
- * localization.
- *
- * The value should be a stringified JSON array.
- *
- * **iOS:** Corresponds to `title-loc-args` in the APNs payload. See
- * {@link https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/PayloadKeyReference.html |
- * Payload Key Reference} and
- * {@link https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CreatingtheNotificationPayload.html#//apple_ref/doc/uid/TP40008194-CH10-SW9 |
- * Localizing the Content of Your Remote Notifications} for more information.
- *
- * **Android:** See
- * {@link http://developer.android.com/guide/topics/resources/string-resource.html#FormattingAndStyling |
- * Formatting and Styling} for more information.
- *
- * **Platforms:** iOS, Android
- */
- titleLocArgs?: string;
- [key: string]: string | undefined;
- }
- /**
- * Interface representing a Firebase Cloud Messaging message payload. One or
- * both of the `data` and `notification` keys are required.
- *
- * See {@link https://firebase.google.com/docs/cloud-messaging/send-message | Build send requests}
- * for code samples and detailed documentation.
- */
- export interface MessagingPayload {
- /**
- * The data message payload.
- */
- data?: DataMessagePayload;
- /**
- * The notification message payload.
- */
- notification?: NotificationMessagePayload;
- }
- /**
- * Interface representing the options that can be provided when sending a
- * message via the FCM legacy APIs.
- *
- * See {@link https://firebase.google.com/docs/cloud-messaging/send-message | Build send requests}
- * for code samples and detailed documentation.
- */
- export interface MessagingOptions {
- /**
- * Whether or not the message should actually be sent. When set to `true`,
- * allows developers to test a request without actually sending a message. When
- * set to `false`, the message will be sent.
- *
- * **Default value:** `false`
- */
- dryRun?: boolean;
- /**
- * The priority of the message. Valid values are `"normal"` and `"high".` On
- * iOS, these correspond to APNs priorities `5` and `10`.
- *
- * By default, notification messages are sent with high priority, and data
- * messages are sent with normal priority. Normal priority optimizes the client
- * app's battery consumption and should be used unless immediate delivery is
- * required. For messages with normal priority, the app may receive the message
- * with unspecified delay.
- *
- * When a message is sent with high priority, it is sent immediately, and the
- * app can wake a sleeping device and open a network connection to your server.
- *
- * For more information, see
- * {@link https://firebase.google.com/docs/cloud-messaging/concept-options#setting-the-priority-of-a-message |
- * Setting the priority of a message}.
- *
- * **Default value:** `"high"` for notification messages, `"normal"` for data
- * messages
- */
- priority?: string;
- /**
- * How long (in seconds) the message should be kept in FCM storage if the device
- * is offline. The maximum time to live supported is four weeks, and the default
- * value is also four weeks. For more information, see
- * {@link https://firebase.google.com/docs/cloud-messaging/concept-options#ttl | Setting the lifespan of a message}.
- *
- * **Default value:** `2419200` (representing four weeks, in seconds)
- */
- timeToLive?: number;
- /**
- * String identifying a group of messages (for example, "Updates Available")
- * that can be collapsed, so that only the last message gets sent when delivery
- * can be resumed. This is used to avoid sending too many of the same messages
- * when the device comes back online or becomes active.
- *
- * There is no guarantee of the order in which messages get sent.
- *
- * A maximum of four different collapse keys is allowed at any given time. This
- * means FCM server can simultaneously store four different
- * send-to-sync messages per client app. If you exceed this number, there is no
- * guarantee which four collapse keys the FCM server will keep.
- *
- * **Default value:** None
- */
- collapseKey?: string;
- /**
- * On iOS, use this field to represent `mutable-content` in the APNs payload.
- * When a notification is sent and this is set to `true`, the content of the
- * notification can be modified before it is displayed, using a
- * {@link https://developer.apple.com/reference/usernotifications/unnotificationserviceextension |
- * Notification Service app extension}.
- *
- * On Android and Web, this parameter will be ignored.
- *
- * **Default value:** `false`
- */
- mutableContent?: boolean;
- /**
- * On iOS, use this field to represent `content-available` in the APNs payload.
- * When a notification or data message is sent and this is set to `true`, an
- * inactive client app is awoken. On Android, data messages wake the app by
- * default. On Chrome, this flag is currently not supported.
- *
- * **Default value:** `false`
- */
- contentAvailable?: boolean;
- /**
- * The package name of the application which the registration tokens must match
- * in order to receive the message.
- *
- * **Default value:** None
- */
- restrictedPackageName?: string;
- [key: string]: any | undefined;
- }
- /**
- * Individual status response payload from single devices
- *
- * @deprecated Returned by {@link Messaging#sendToDevice}, which is also deprecated.
- */
- export interface MessagingDeviceResult {
- /**
- * The error that occurred when processing the message for the recipient.
- */
- error?: FirebaseError;
- /**
- * A unique ID for the successfully processed message.
- */
- messageId?: string;
- /**
- * The canonical registration token for the client app that the message was
- * processed and sent to. You should use this value as the registration token
- * for future requests. Otherwise, future messages might be rejected.
- */
- canonicalRegistrationToken?: string;
- }
- /**
- * Interface representing the status of a message sent to an individual device
- * via the FCM legacy APIs.
- *
- * See
- * {@link https://firebase.google.com/docs/cloud-messaging/admin/send-messages#send_to_individual_devices |
- * Send to individual devices} for code samples and detailed documentation.
- *
- * @deprecated Returned by {@link Messaging.sendToDevice}, which is also deprecated.
- */
- export interface MessagingDevicesResponse {
- canonicalRegistrationTokenCount: number;
- failureCount: number;
- multicastId: number;
- results: MessagingDeviceResult[];
- successCount: number;
- }
- /**
- * Interface representing the server response from the {@link Messaging.sendToDeviceGroup}
- * method.
- *
- * See
- * {@link https://firebase.google.com/docs/cloud-messaging/send-message?authuser=0#send_messages_to_device_groups |
- * Send messages to device groups} for code samples and detailed documentation.
- *
- * @deprecated Returned by {@link Messaging.sendToDeviceGroup}, which is also deprecated.
- */
- export interface MessagingDeviceGroupResponse {
- /**
- * The number of messages that could not be processed and resulted in an error.
- */
- successCount: number;
- /**
- * The number of messages that could not be processed and resulted in an error.
- */
- failureCount: number;
- /**
- * An array of registration tokens that failed to receive the message.
- */
- failedRegistrationTokens: string[];
- }
- /**
- * Interface representing the server response from the legacy {@link Messaging.sendToTopic} method.
- *
- * See
- * {@link https://firebase.google.com/docs/cloud-messaging/admin/send-messages#send_to_a_topic |
- * Send to a topic} for code samples and detailed documentation.
- */
- export interface MessagingTopicResponse {
- /**
- * The message ID for a successfully received request which FCM will attempt to
- * deliver to all subscribed devices.
- */
- messageId: number;
- }
- /**
- * Interface representing the server response from the legacy
- * {@link Messaging.sendToCondition} method.
- *
- * See
- * {@link https://firebase.google.com/docs/cloud-messaging/admin/send-messages#send_to_a_condition |
- * Send to a condition} for code samples and detailed documentation.
- */
- export interface MessagingConditionResponse {
- /**
- * The message ID for a successfully received request which FCM will attempt to
- * deliver to all subscribed devices.
- */
- messageId: number;
- }
- /**
- * Interface representing the server response from the
- * {@link Messaging.subscribeToTopic} and {@link Messaging.unsubscribeFromTopic}
- * methods.
- *
- * See
- * {@link https://firebase.google.com/docs/cloud-messaging/manage-topics |
- * Manage topics from the server} for code samples and detailed documentation.
- */
- export interface MessagingTopicManagementResponse {
- /**
- * The number of registration tokens that could not be subscribed to the topic
- * and resulted in an error.
- */
- failureCount: number;
- /**
- * The number of registration tokens that were successfully subscribed to the
- * topic.
- */
- successCount: number;
- /**
- * An array of errors corresponding to the provided registration token(s). The
- * length of this array will be equal to {@link MessagingTopicManagementResponse.failureCount}.
- */
- errors: FirebaseArrayIndexError[];
- }
- /**
- * Interface representing the server response from the
- * {@link Messaging.sendAll} and {@link Messaging.sendMulticast} methods.
- */
- export interface BatchResponse {
- /**
- * An array of responses, each corresponding to a message.
- */
- responses: SendResponse[];
- /**
- * The number of messages that were successfully handed off for sending.
- */
- successCount: number;
- /**
- * The number of messages that resulted in errors when sending.
- */
- failureCount: number;
- }
- /**
- * Interface representing the status of an individual message that was sent as
- * part of a batch request.
- */
- export interface SendResponse {
- /**
- * A boolean indicating if the message was successfully handed off to FCM or
- * not. When true, the `messageId` attribute is guaranteed to be set. When
- * false, the `error` attribute is guaranteed to be set.
- */
- success: boolean;
- /**
- * A unique message ID string, if the message was handed off to FCM for
- * delivery.
- *
- */
- messageId?: string;
- /**
- * An error, if the message was not handed off to FCM successfully.
- */
- error?: FirebaseError;
- }
|