UNPKG

@nativescript/firebase-messaging

Version:
154 lines 4.81 kB
import { firebase, FirebaseApp, FirebaseError } from '@nativescript/firebase-core'; import { MessagingCore, AuthorizationStatus } from '@nativescript/firebase-messaging-core'; export { AuthorizationStatus }; let _registerDeviceForRemoteMessages = { resolve: null, reject: null, }; let defaultMessaging; const fb = firebase(); Object.defineProperty(fb, 'messaging', { value: () => { if (!defaultMessaging) { defaultMessaging = new Messaging(); } return defaultMessaging; }, writable: false, }); export class Messaging { constructor() { if (defaultMessaging) { return defaultMessaging; } defaultMessaging = this; this._instance = MessagingCore.getInstance(); } get showNotificationsWhenInForeground() { return NSCFirebaseMessagingCore.showNotificationsWhenInForeground; } set showNotificationsWhenInForeground(value) { NSCFirebaseMessagingCore.showNotificationsWhenInForeground = value; } getToken() { return new Promise((resolve, reject) => { if (!TNSFirebaseCore.isSimulator() && !UIApplication.sharedApplication.registeredForRemoteNotifications) { reject(new Error('You must be registered for remote messages before calling getToken, see messaging().registerDeviceForRemoteMessages()')); return; } this.native?.tokenWithCompletion((token, error) => { if (error) { reject(FirebaseError.fromNative(error)); } else { resolve(token); } }); }); } getAPNSToken() { const token = this.native.APNSToken; if (!token) { return null; } return NSCFirebaseMessagingCore.APNSTokenToString(token); } hasPermission() { return this._instance.hasPermission(); } onMessage(listener) { if (!listener && this._onMessage) { this._instance.removeOnMessage(this._onMessage); } else { this._instance.addOnMessage(listener); } this._onMessage = listener; } onToken(listener) { if (!listener && this._onToken) { this._instance.removeOnToken(this._onToken); } else { this._instance.addOnToken(listener); } this._onToken = listener; } onNotificationTap(listener) { if (!listener && this._onNotificationTap) { this._instance.removeOnNotificationTap(this._onNotificationTap); } else { this._instance.addOnNotificationTap(listener); } this._onNotificationTap = listener; } registerDeviceForRemoteMessages() { return this._instance.registerDeviceForRemoteMessages(); } requestPermission(permissions) { return this._instance.requestPermission(permissions); } subscribeToTopic(topic) { return new Promise((resolve, reject) => { this.native.subscribeToTopicCompletion(topic, (error) => { if (error) { reject(FirebaseError.fromNative(error)); } else { resolve(); } }); }); } unregisterDeviceForRemoteMessages() { return this._instance.unregisterDeviceForRemoteMessages(); } unsubscribeFromTopic(topic) { return new Promise((resolve, reject) => { this.native.unsubscribeFromTopicCompletion(topic, (error) => { if (error) { reject(FirebaseError.fromNative(error)); } else { resolve(); } }); }); } deleteToken() { return new Promise((resolve, reject) => { this.native?.deleteDataWithCompletion((error) => { if (error) { reject(FirebaseError.fromNative(error)); } else { resolve(); } }); }); } get isDeviceRegisteredForRemoteMessages() { return this._instance.isDeviceRegisteredForRemoteMessages; } get autoInitEnabled() { return this.native?.autoInitEnabled; } set autoInitEnabled(value) { this.native.autoInitEnabled = value; } get app() { if (!this._app) { // @ts-ignore this._app = FirebaseApp.fromNative(FIRApp.defaultApp()); } return this._app; } get native() { return FIRMessaging.messaging(); } get ios() { return this.native; } } //# sourceMappingURL=index.ios.js.map