125 lines
2.8 KiB
TypeScript
Raw Normal View History

2017-12-28 07:28:44 -05:00
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
export interface NotificationData {
/**
* Determines whether the notification was pressed or not
*/
wasTapped: boolean;
/**
* Notification data hash item
*/
[name: string]: any;
}
/**
* @name FCM
* @description
* Provides basic functionality for Firebase Cloud Messaging
*
* @usage
* ```typescript
2018-10-10 16:13:45 -05:00
* import { FCM } from '@ionic-native/fcm/ngx';
*
* constructor(private fcm: FCM) {}
*
* ...
*
2018-03-02 02:00:17 +05:30
* this.fcm.subscribeToTopic('marketing');
*
2018-03-17 01:22:06 +01:00
* this.fcm.getToken().then(token => {
* backend.registerToken(token);
2018-03-17 01:22:06 +01:00
* });
*
2018-03-17 01:22:06 +01:00
* this.fcm.onNotification().subscribe(data => {
* if(data.wasTapped){
* console.log("Received in background");
* } else {
* console.log("Received in foreground");
* };
2018-03-17 01:22:06 +01:00
* });
*
2018-03-17 01:22:06 +01:00
* this.fcm.onTokenRefresh().subscribe(token => {
* backend.registerToken(token);
2018-03-17 01:22:06 +01:00
* });
*
2018-03-02 02:00:17 +05:30
* this.fcm.unsubscribeFromTopic('marketing');
*
* ```
* @interfaces
* NotificationData
*/
@Plugin({
pluginName: 'FCM',
plugin: 'cordova-plugin-fcm-with-dependecy-updated',
pluginRef: 'FCMPlugin',
repo: 'https://github.com/andrehtissot/cordova-plugin-fcm-with-dependecy-updated',
platforms: ['Android', 'iOS']
})
@Injectable()
export class FCM extends IonicNativePlugin {
/**
2018-04-08 21:26:14 +02:00
* Gets device's current registration id
*
* @returns {Promise<string>} Returns a Promise that resolves with the registration id token
*/
@Cordova()
2017-12-28 07:28:44 -05:00
getToken(): Promise<string> {
return;
}
/**
* Event firing on the token refresh
*
* @returns {Observable<string>} Returns an Observable that notifies with the change of device's registration id
*/
@Cordova({
observable: true
})
2017-12-28 07:28:44 -05:00
onTokenRefresh(): Observable<string> {
return;
}
/**
* Subscribes you to a [topic](https://firebase.google.com/docs/notifications/android/console-topics)
*
* @param {string} topic Topic to be subscribed to
*
* @returns {Promise<any>} Returns a promise resolving in result of subscribing to a topic
*/
@Cordova()
2017-12-28 07:28:44 -05:00
subscribeToTopic(topic: string): Promise<any> {
return;
}
/**
2018-04-08 21:26:14 +02:00
* Unsubscribes you from a [topic](https://firebase.google.com/docs/notifications/android/console-topics)
*
* @param {string} topic Topic to be unsubscribed from
*
* @returns {Promise<any>} Returns a promise resolving in result of unsubscribing from a topic
*/
@Cordova()
2017-12-28 07:28:44 -05:00
unsubscribeFromTopic(topic: string): Promise<any> {
return;
}
/**
* Watch for incoming notifications
*
* @returns {Observable<any>} returns an object with data from the notification
*/
@Cordova({
observable: true,
successIndex: 0,
errorIndex: 2
})
2017-12-28 07:28:44 -05:00
onNotification(): Observable<NotificationData> {
return;
}
}