From 3d747d38b291ccfe4232616126bfafe8f7b2edb4 Mon Sep 17 00:00:00 2001 From: Daniel Sogl Date: Wed, 10 May 2017 00:20:49 +0200 Subject: [PATCH] feat(phonegap-local-notifications): add Phonegap local notifications plugin (#1474) * typo(barcode-scanner): fixe circle lint error * typo(docs): Unified the documentations In some plugins the typescript markup was missing. I also unified the console.log string from console.log("hello") to console.log('Hello') so any plugin page look the same. * added phonegap-local-notifications * update #1 * update #3 * update #4 * cleaned up the usage part * removed old folder * Update index.ts * Update index.ts * Update index.ts * Update index.ts * Update index.ts * Update index.ts --- .../phonegap-local-notification/index.ts | 110 ++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 src/@ionic-native/plugins/phonegap-local-notification/index.ts diff --git a/src/@ionic-native/plugins/phonegap-local-notification/index.ts b/src/@ionic-native/plugins/phonegap-local-notification/index.ts new file mode 100644 index 0000000000..1069556360 --- /dev/null +++ b/src/@ionic-native/plugins/phonegap-local-notification/index.ts @@ -0,0 +1,110 @@ +import { Injectable } from '@angular/core'; +import { Cordova, CordovaInstance, Plugin, IonicNativePlugin, checkAvailability } from '@ionic-native/core'; + +declare var Notification: any; + +export class PLNObject { + + private _objectInstance: any; + + constructor(title: string, options: LocalNotificationOptions) { + if (checkAvailability('Notification') === true) { + this._objectInstance = new Notification(title, options); + } + } + + @CordovaInstance({ sync: true }) + close(): void { } + +} + +export interface LocalNotificationOptions { + + /** + * Sets the direction of the notification. One of "auto", "ltr" or "rtl" + */ + dir?: string; + + /** + * Sets the language of the notification + */ + lang?: string; + + /** + * Sets the body of the notification + */ + body?: string; + + /** + * Sets the identifying tag of the notification + */ + tag?: string; + + /** + * Sets the icon of the notification + */ + icon?: string; + +} + +/** + * @name Phonegap Local Notification + * @description + * The Local Notification plugin gives developers the ability to post notifications from their app that show up in the device’s notification area. + * The API for the local notification plugin follows the W3C Web Notifications specification: https://www.w3.org/TR/notifications/ + * + * @usage + * ``` + * import { PhonegapLocalNotifications } from '@ionic-native/phonegap-local-notifications'; + * + * + * constructor(private localNotification: PhonegapLocalNotifications) { } + * + * ... + * + * this.localNotification.requestPermission().then( + * (permission) => { + * if (permission === 'granted') { + * + * // Create the notification + * this.localNotification.create('My Title', { + * tag: 'message1', + * body: 'My body', + * icon: 'assets/icon/favicon.ico' + * }); + * + * } + * } + * ); + * + * ``` + * + * @interfaces + * LocalNotificationOptions + */ +@Plugin({ + pluginName: 'Phonegap Local Notifications', + plugin: 'phonegap-local-notifications', + pluginRef: 'Notification', + repo: 'https://github.com/phonegap/phonegap-plugin-local-notification', + platforms: ['Android', 'iOS', 'Browser'] +}) +@Injectable() +export class PhonegapLocalNotifications extends IonicNativePlugin { + + /** + * A global object that lets you interact with the Notification API. + * @param title {string} Title of the local notification. + * @param Options {LocalNotificationOptions} An object containing optional property/value pairs. + * @returns {PLNObject} + */ + create(title: string, options: LocalNotificationOptions) { return new PLNObject(title, options); } + + /** + * requests permission from the user to show a local notification. + * @returns {Promise} + */ + @Cordova() + requestPermission(): Promise { return; } + +}