@nativescript/firebase-messaging
Version:
NativeScript Firebase - Messaging
154 lines • 4.81 kB
JavaScript
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