From c03b73f69c5cd9900df04ca252a65163a421e7a5 Mon Sep 17 00:00:00 2001 From: Adam Duren Date: Sun, 3 Jun 2018 09:33:18 -0400 Subject: [PATCH] feat(firebase-messaging): add firebase-messaging (#2518) * feat(firebase-messaging): add firebase-messaging * refactor --- .../plugins/firebase-messaging/index.ts | 136 ++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 src/@ionic-native/plugins/firebase-messaging/index.ts diff --git a/src/@ionic-native/plugins/firebase-messaging/index.ts b/src/@ionic-native/plugins/firebase-messaging/index.ts new file mode 100644 index 0000000000..2e4ef50fd6 --- /dev/null +++ b/src/@ionic-native/plugins/firebase-messaging/index.ts @@ -0,0 +1,136 @@ +import { Injectable } from '@angular/core'; +import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core'; +import { Observable } from 'rxjs/Observable'; + +export interface IFirebaseMessage { + aps: any; + gcm: any; +} + +/** + * @beta + * @name Firebase Messaging + * @description + * Cordova plugin for Firebase Messaging + * + * @usage + * ```typescript + * import { FirebaseMessaging } from '@ionic-native/firebase-messaging'; + * + * + * constructor(private firebaseMessaging: FirebaseMessaging) { } + * + * ... + * + * + * this.firebaseMessaging.logEvent('page_view', {page: "dashboard"}) + * .then((res: any) => console.log(res)) + * .catch((error: any) => console.error(error)); + * + * ``` + * @interfaces + * IFirebaseMessage + */ +@Plugin({ + pluginName: 'FirebaseMessaging', + plugin: 'cordova-plugin-firebase-messaging', + pluginRef: 'cordova.plugins.firebase.messaging', + repo: 'https://github.com/chemerisuk/cordova-plugin-firebase-messaging', + platforms: ['Android', 'iOS'] +}) +@Injectable() +export class FirebaseMessaging extends IonicNativePlugin { + /** + * Called when a push message received while app is in foreground. + * + * @returns {Observable} + */ + @Cordova({ observable: true, callbackOrder: 'reverse' }) + onMessage(): Observable { + return; + } + + /** + * Called when a push message received while app is in background. + * + * @returns {Observable} + */ + @Cordova({ observable: true, callbackOrder: 'reverse' }) + onBackgroundMessage(): Observable { + return; + } + + /** + * Grant permission to recieve push notifications (will trigger prompt on iOS). + * + * @returns {Promise} + */ + @Cordova({ sync: true }) + requestPermission(): Promise { + return; + } + + /** + * Returns a promise that fulfills with the current FCM token + * + * @returns {Promise} + */ + @Cordova({ sync: true }) + getToken(): Promise { + return; + } + + /** + * Triggers every time when FCM token updated. + * You should usually call getToken to get an updated token and send it to server. + * + * @returns {Observable} + */ + @Cordova({ observable: true, callbackOrder: 'reverse' }) + onTokenRefresh(): Observable { + return; + } + + /** + * Subscribe to topic in background. + * + * @param {string} topic + * @returns {Promise} + */ + @Cordova({ sync: true }) + subscribe(topic: string): Promise { + return; + } + + /** + * Unsubscribe from topic in background. + * + * @param {string} topic + * @returns {Promise} + */ + @Cordova({ sync: true }) + unsubscribe(topic: string): Promise { + return; + } + + /** + * Reads current badge number (if supported). + * + * @returns {Promise} + */ + @Cordova({ sync: true }) + getBadge(): Promise { + return; + } + + /** + * Sets current badge number (if supported). + * + * @param {number} value + * @returns {Promise} + */ + @Cordova({ sync: true }) + setBadge(value: number): Promise { + return; + } +}