Commit ca85d768 by Sebastián Katzer

Comment out everything eccept ios

parent 4f195194
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0" <plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
id="de.appplant.cordova.plugin.local-notification" id="cordova-plugin-local-notifications"
version="0.8.5"> version="0.0.0">
<name>LocalNotification</name> <name>LocalNotification</name>
...@@ -27,12 +27,11 @@ ...@@ -27,12 +27,11 @@
<!-- dependencies --> <!-- dependencies -->
<dependency id="cordova-plugin-device" /> <dependency id="cordova-plugin-device" />
<dependency id="cordova-plugin-app-event" /> <!-- <dependency id="cordova-plugin-app-event" /> -->
<!-- js --> <!-- js -->
<js-module src="www/local-notification.js" name="LocalNotification"> <js-module src="www/local-notification.js" name="LocalNotification">
<clobbers target="cordova.plugins.notification.local" /> <clobbers target="cordova.plugins.notification.local" />
<clobbers target="plugin.notification.local" />
</js-module> </js-module>
<js-module src="www/local-notification-core.js" name="LocalNotification.Core"> <js-module src="www/local-notification-core.js" name="LocalNotification.Core">
...@@ -60,7 +59,7 @@ ...@@ -60,7 +59,7 @@
<header-file src="src/ios/APPLocalNotification.h" /> <header-file src="src/ios/APPLocalNotification.h" />
<source-file src="src/ios/APPLocalNotification.m" /> <source-file src="src/ios/APPLocalNotification.m" />
<header-file src="src/ios/APPLocalNotificationOptions.h" /> <!-- <header-file src="src/ios/APPLocalNotificationOptions.h" />
<source-file src="src/ios/APPLocalNotificationOptions.m" /> <source-file src="src/ios/APPLocalNotificationOptions.m" />
<header-file src="src/ios/UNUserNotificationCenter+APPLocalNotification.h" /> <header-file src="src/ios/UNUserNotificationCenter+APPLocalNotification.h" />
...@@ -70,21 +69,12 @@ ...@@ -70,21 +69,12 @@
<source-file src="src/ios/UNMutableNotificationContent+APPLocalNotification.m" /> <source-file src="src/ios/UNMutableNotificationContent+APPLocalNotification.m" />
<header-file src="src/ios/UNNotificationRequest+APPLocalNotification.h" /> <header-file src="src/ios/UNNotificationRequest+APPLocalNotification.h" />
<source-file src="src/ios/UNNotificationRequest+APPLocalNotification.m" /> <source-file src="src/ios/UNNotificationRequest+APPLocalNotification.m" /> -->
<header-file src="src/ios9/APPLocalNotificationOptions.ios9.h" />
<source-file src="src/ios9/APPLocalNotificationOptions.ios9.m" />
<header-file src="src/ios9/UIApplication+APPLocalNotification.ios9.h" />
<source-file src="src/ios9/UIApplication+APPLocalNotification.ios9.m" />
<header-file src="src/ios9/UILocalNotification+APPLocalNotification.ios9.h" />
<source-file src="src/ios9/UILocalNotification+APPLocalNotification.ios9.m" />
</platform> </platform>
<!-- android --> <!-- android -->
<platform name="android"> <!-- <platform name="android">
<framework src="com.android.support:support-v4:+" value="gradle" /> <framework src="com.android.support:support-v4:+" value="gradle" />
...@@ -205,10 +195,10 @@ ...@@ -205,10 +195,10 @@
src="src/android/notification/TriggerReceiver.java" src="src/android/notification/TriggerReceiver.java"
target-dir="src/de/appplant/cordova/plugin/notification" /> target-dir="src/de/appplant/cordova/plugin/notification" />
</platform> </platform> -->
<!-- windows --> <!-- windows -->
<platform name="windows"> <!-- <platform name="windows">
<config-file target="config.xml" parent="/*" > <config-file target="config.xml" parent="/*" >
<preference name="WindowsToastCapable" value="true" /> <preference name="WindowsToastCapable" value="true" />
...@@ -226,6 +216,6 @@ ...@@ -226,6 +216,6 @@
<merges target="" /> <merges target="" />
</js-module> </js-module>
</platform> </platform> -->
</plugin> </plugin>
/* /*
* Copyright (c) 2013-2015 by appPlant UG. All rights reserved. * Copyright (c) 2013 by appPlant GmbH. All rights reserved.
* *
* @APPPLANT_LICENSE_HEADER_START@ * @APPPLANT_LICENSE_HEADER_START@
* *
...@@ -21,7 +21,6 @@ ...@@ -21,7 +21,6 @@
* @APPPLANT_LICENSE_HEADER_END@ * @APPPLANT_LICENSE_HEADER_END@
*/ */
#import <Foundation/Foundation.h>
#import <Cordova/CDVPlugin.h> #import <Cordova/CDVPlugin.h>
@import UserNotifications; @import UserNotifications;
...@@ -31,50 +30,50 @@ ...@@ -31,50 +30,50 @@
// Execute all queued events // Execute all queued events
- (void) deviceready:(CDVInvokedUrlCommand*)command; - (void) deviceready:(CDVInvokedUrlCommand*)command;
// Inform if the app has the permission to show notifications // Check permission to show notifications
- (void) hasPermission:(CDVInvokedUrlCommand*)command; - (void) check:(CDVInvokedUrlCommand*)command;
// Register permission to show notifications // Request permission to show notifications
- (void) registerPermission:(CDVInvokedUrlCommand*)command; - (void) request:(CDVInvokedUrlCommand*)command;
// Schedule set of notifications //// Schedule set of notifications
- (void) schedule:(CDVInvokedUrlCommand*)command; //- (void) schedule:(CDVInvokedUrlCommand*)command;
// Update set of notifications //// Update set of notifications
- (void) update:(CDVInvokedUrlCommand*)command; //- (void) update:(CDVInvokedUrlCommand*)command;
// Cancel set of notifications //// Cancel set of notifications
- (void) cancel:(CDVInvokedUrlCommand*)command; //- (void) cancel:(CDVInvokedUrlCommand*)command;
// Cancel all notifications //// Cancel all notifications
- (void) cancelAll:(CDVInvokedUrlCommand*)command; //- (void) cancelAll:(CDVInvokedUrlCommand*)command;
// Clear set of notifications //// Clear set of notifications
- (void) clear:(CDVInvokedUrlCommand*)command; //- (void) clear:(CDVInvokedUrlCommand*)command;
// Clear all notifications //// Clear all notifications
- (void) clearAll:(CDVInvokedUrlCommand*)command; //- (void) clearAll:(CDVInvokedUrlCommand*)command;
//
// If a notification with an ID is present //// If a notification with an ID is present
- (void) isPresent:(CDVInvokedUrlCommand*)command; //- (void) isPresent:(CDVInvokedUrlCommand*)command;
// If a notification with an ID is scheduled //// If a notification with an ID is scheduled
- (void) isScheduled:(CDVInvokedUrlCommand*)command; //- (void) isScheduled:(CDVInvokedUrlCommand*)command;
// If a notification with an ID is triggered //// If a notification with an ID is triggered
- (void) isTriggered:(CDVInvokedUrlCommand*)command; //- (void) isTriggered:(CDVInvokedUrlCommand*)command;
//
// List all ids from all local notifications //// List all ids from all local notifications
- (void) getAllIds:(CDVInvokedUrlCommand*)command; //- (void) getAllIds:(CDVInvokedUrlCommand*)command;
// List all ids from all pending notifications //// List all ids from all pending notifications
- (void) getScheduledIds:(CDVInvokedUrlCommand*)command; //- (void) getScheduledIds:(CDVInvokedUrlCommand*)command;
// List all ids from all triggered notifications //// List all ids from all triggered notifications
- (void) getTriggeredIds:(CDVInvokedUrlCommand*)command; //- (void) getTriggeredIds:(CDVInvokedUrlCommand*)command;
//
// Propertys for given local notification //// Propertys for given local notification
- (void) getSingle:(CDVInvokedUrlCommand*)command; //- (void) getSingle:(CDVInvokedUrlCommand*)command;
// Propertya for given scheduled notification //// Propertya for given scheduled notification
- (void) getSingleScheduled:(CDVInvokedUrlCommand*)command; //- (void) getSingleScheduled:(CDVInvokedUrlCommand*)command;
// Propertys for given triggered notification //// Propertys for given triggered notification
- (void) getSingleTriggered:(CDVInvokedUrlCommand*)command; //- (void) getSingleTriggered:(CDVInvokedUrlCommand*)command;
//
// Property list for given local notifications //// Property list for given local notifications
- (void) getAll:(CDVInvokedUrlCommand*)command; //- (void) getAll:(CDVInvokedUrlCommand*)command;
// Property list for given scheduled notifications //// Property list for given scheduled notifications
- (void) getScheduled:(CDVInvokedUrlCommand*)command; //- (void) getScheduled:(CDVInvokedUrlCommand*)command;
// Property list for given triggered notifications //// Property list for given triggered notifications
- (void) getTriggered:(CDVInvokedUrlCommand*)command; //- (void) getTriggered:(CDVInvokedUrlCommand*)command;
@end @end
/* /*
* Copyright (c) 2013-2015 by appPlant UG. All rights reserved. * Copyright (c) 2013 by appPlant GmbH. All rights reserved.
* *
* @APPPLANT_LICENSE_HEADER_START@ * @APPPLANT_LICENSE_HEADER_START@
* *
...@@ -22,16 +22,10 @@ ...@@ -22,16 +22,10 @@
*/ */
#import "APPLocalNotification.h" #import "APPLocalNotification.h"
#import "APPLocalNotificationOptions.h" //#import "APPLocalNotificationOptions.h"
#import "UNUserNotificationCenter+APPLocalNotification.h" //#import "UNUserNotificationCenter+APPLocalNotification.h"
#import "UNNotificationRequest+APPLocalNotification.h" //#import "UNNotificationRequest+APPLocalNotification.h"
#import "UNMutableNotificationContent+APPLocalNotification.h" //#import "UNMutableNotificationContent+APPLocalNotification.h"
#import "APPLocalNotificationOptions.ios9.h"
#import "UIApplication+APPLocalNotification.ios9.h"
#import "UILocalNotification+APPLocalNotification.ios9.h"
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
@interface APPLocalNotification () @interface APPLocalNotification ()
...@@ -69,264 +63,486 @@ ...@@ -69,264 +63,486 @@
[eventQueue removeAllObjects]; [eventQueue removeAllObjects];
} }
//
///**
// * Schedule a set of notifications.
// *
// * @param properties
// * A dict of properties for each notification
// */
//- (void) schedule:(CDVInvokedUrlCommand*)command
//{
// NSArray* notifications = command.arguments;
//
// [self.commandDelegate runInBackground:^{
// if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) {
// for (NSDictionary* options in notifications) {
// UNMutableNotificationContent* notification;
//
// notification = [[UNMutableNotificationContent alloc]
// initWithOptions:options];
//
// [self scheduleNotification:notification];
// //[self fireEvent:@"add" notification:notification];
// }
// } else {
// for (NSDictionary* options in notifications) {
// UILocalNotification* notification;
//
// notification = [[UILocalNotification alloc]
// initWithOptions:options];
//
// [self scheduleLocalNotification:[notification copy]];
// [self fireEvent:@"schedule" localnotification:notification];
//
// if (notifications.count > 1) {
// [NSThread sleepForTimeInterval:0.01];
// }
// }
// }
//
// [self execCallback:command];
// }];
//}
//
///**
// * Update a set of notifications.
// *
// * @param properties
// * A dict of properties for each notification
// */
//- (void) update:(CDVInvokedUrlCommand*)command
//{
// NSArray* notifications = command.arguments;
//
// [self.commandDelegate runInBackground:^{
// if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) {
// for (NSDictionary* options in notifications) {
// NSNumber* id = [options objectForKey:@"id"];
// UNNotificationRequest* notification;
//
// notification = [self.center getNotificationWithId:id];
//
// if (!notification)
// continue;
//
// // [self updateNotification:[notification copy]
// // withOptions:options];
// //
// // [self fireEvent:@"update" notification:notification];
// //
// // if (notifications.count > 1) {
// // [NSThread sleepForTimeInterval:0.01];
// // }
// }
// } else {
// for (NSDictionary* options in notifications) {
// NSNumber* id = [options objectForKey:@"id"];
// UILocalNotification* notification;
//
// notification = [self.app localNotificationWithId:id];
//
// if (!notification)
// continue;
//
// [self updateLocalNotification:[notification copy]
// withOptions:options];
//
// [self fireEvent:@"update" localnotification:notification];
//
// if (notifications.count > 1) {
// [NSThread sleepForTimeInterval:0.01];
// }
// }
// }
//
// [self execCallback:command];
// }];
//}
//
///**
// * Cancel a set of notifications.
// *
// * @param ids
// * The IDs of the notifications
// */
//- (void) cancel:(CDVInvokedUrlCommand*)command
//{
// [self.commandDelegate runInBackground:^{
// if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) {
// for (NSNumber* id in command.arguments) {
// UNNotificationRequest* notification;
//
// notification = [self.center getNotificationWithId:id];
//
// if (!notification)
// continue;
//
// [self.center cancelNotification:notification];
// [self fireEvent:@"cancel" notification:notification];
// }
// } else {
// for (NSNumber* id in command.arguments) {
// UILocalNotification* notification;
//
// notification = [self.app localNotificationWithId:id];
//
// if (!notification)
// continue;
//
// [self.app cancelLocalNotification:notification];
// [self fireEvent:@"cancel" localnotification:notification];
// }
// }
//
// [self execCallback:command];
// }];
//}
//
///**
// * Cancel all local notifications.
// */
//- (void) cancelAll:(CDVInvokedUrlCommand*)command
//{
// [self.commandDelegate runInBackground:^{
// [self cancelAllNotifications];
// [self fireEvent:@"cancelall"];
// [self execCallback:command];
// }];
//}
//
///**
// * Clear a set of notifications.
// *
// * @param ids
// * The IDs of the notifications
// */
//- (void) clear:(CDVInvokedUrlCommand*)command
//{
// [self.commandDelegate runInBackground:^{
// if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) {
// for (NSNumber* id in command.arguments) {
// UNNotificationRequest* notification;
//
// notification = [self.center getNotificationWithId:id];
//
// if (!notification)
// continue;
//
// [self.center clearNotification:notification];
// [self fireEvent:@"clear" notification:notification];
// }
// } else {
// for (NSNumber* id in command.arguments) {
// UILocalNotification* notification;
//
// notification = [self.app localNotificationWithId:id];
//
// if (!notification)
// continue;
//
// [self.app clearLocalNotification:notification];
// [self fireEvent:@"clear" localnotification:notification];
// }
// }
//
// [self execCallback:command];
// }];
//}
//
///**
// * Clear all local notifications.
// */
//- (void) clearAll:(CDVInvokedUrlCommand*)command
//{
// [self.commandDelegate runInBackground:^{
// [self clearAllNotifications];
// [self fireEvent:@"clearall"];
// [self execCallback:command];
// }];
//}
//
///**
// * If a notification by ID is present.
// *
// * @param id
// * The ID of the notification
// */
//- (void) isPresent:(CDVInvokedUrlCommand *)command
//{
// [self isPresent:command type:NotifcationTypeAll];
//}
//
///**
// * If a notification by ID is scheduled.
// *
// * @param id
// * The ID of the notification
// */
//- (void) isScheduled:(CDVInvokedUrlCommand*)command
//{
// [self isPresent:command type:NotifcationTypeScheduled];
//}
//
///**
// * Check if a notification with an ID is triggered.
// *
// * @param id
// * The ID of the notification
// */
//- (void) isTriggered:(CDVInvokedUrlCommand*)command
//{
// [self isPresent:command type:NotifcationTypeTriggered];
//}
//
///**
// * Check if a notification with an ID exists.
// *
// * @param type
// * The notification life cycle type
// */
//- (void) isPresent:(CDVInvokedUrlCommand*)command
// type:(APPNotificationType)type;
//{
// [self.commandDelegate runInBackground:^{
// NSNumber* id = [command argumentAtIndex:0];
// BOOL exist;
//
// if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) {
// exist = [self.center notificationExist:id type:type];
// } else {
// if (type == NotifcationTypeAll) {
// exist = [self.app localNotificationExist:id];
// } else {
// exist = [self.app localNotificationExist:id type:type];
// }
// }
//
// CDVPluginResult* result;
// result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK
// messageAsBool:exist];
//
// [self.commandDelegate sendPluginResult:result
// callbackId:command.callbackId];
// }];
//}
//
///**
// * List all ids from all local notifications.
// */
//- (void) getAllIds:(CDVInvokedUrlCommand*)command
//{
// [self getIds:command byType:NotifcationTypeAll];
//}
//
///**
// * List all ids from all pending notifications.
// */
//- (void) getScheduledIds:(CDVInvokedUrlCommand*)command
//{
// [self getIds:command byType:NotifcationTypeScheduled];
//}
//
///**
// * List all ids from all triggered notifications.
// */
//- (void) getTriggeredIds:(CDVInvokedUrlCommand*)command
//{
// [self getIds:command byType:NotifcationTypeTriggered];
//}
//
///**
// * List of ids for given local notifications.
// *
// * @param type
// * Notification life cycle type
// * @param ids
// * The IDs of the notifications
// */
//- (void) getIds:(CDVInvokedUrlCommand*)command
// byType:(APPNotificationType)type;
//{
// [self.commandDelegate runInBackground:^{
// NSArray* ids;
//
// if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) {
// ids = [self.center getNotificationIdsByType:type];
// } else {
// if (type == NotifcationTypeAll) {
// ids = [self.app localNotificationIds];
// } else {
// ids = [self.app localNotificationIdsByType:type];
// }
// }
//
// CDVPluginResult* result;
// result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK
// messageAsArray:ids];
//
// [self.commandDelegate sendPluginResult:result
// callbackId:command.callbackId];
// }];
//}
//
///**
// * Propertys for given local notification.
// */
//- (void) getSingle:(CDVInvokedUrlCommand*)command
//{
// [self getOption:command byType:NotifcationTypeAll];
//}
//
///**
// * Propertya for given scheduled notification.
// */
//- (void) getSingleScheduled:(CDVInvokedUrlCommand*)command
//{
// [self getOption:command byType:NotifcationTypeScheduled];
//}
//
//// Propertys for given triggered notification
//- (void) getSingleTriggered:(CDVInvokedUrlCommand*)command
//{
// [self getOption:command byType:NotifcationTypeTriggered];
//}
//
///**
// * Property list for given local notifications.
// *
// * @param ids
// * The IDs of the notifications
// */
//- (void) getAll:(CDVInvokedUrlCommand*)command
//{
// [self getOptions:command byType:NotifcationTypeAll];
//}
//
///**
// * Property list for given scheduled notifications.
// *
// * @param ids
// * The IDs of the notifications
// */
//- (void) getScheduled:(CDVInvokedUrlCommand*)command
//{
// [self getOptions:command byType:NotifcationTypeScheduled];
//}
//
///**
// * Property list for given triggered notifications.
// *
// * @param ids
// * The IDs of the notifications
// */
//- (void) getTriggered:(CDVInvokedUrlCommand *)command
//{
// [self getOptions:command byType:NotifcationTypeTriggered];
//}
//
///**
// * Propertys for given triggered notification.
// *
// * @param type
// * Notification life cycle type
// * @param ids
// * The ID of the notification
// */
//- (void) getOption:(CDVInvokedUrlCommand*)command
// byType:(APPNotificationType)type;
//{
// [self.commandDelegate runInBackground:^{
// NSArray* ids = command.arguments;
// NSArray* notifications;
//
// if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) {
// notifications = [self.center getNotificationOptionsByType:type
// andId:ids];
// } else {
// if (type == NotifcationTypeAll) {
// notifications = [self.app localNotificationOptionsById:ids];
// }
// else {
// notifications = [self.app localNotificationOptionsByType:type
// andId:ids];
// }
// }
//
// CDVPluginResult* result;
// result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK
// messageAsDictionary:[notifications firstObject]];
//
// [self.commandDelegate sendPluginResult:result
// callbackId:command.callbackId];
// }];
//}
//
///**
// * Property list for given triggered notifications.
// *
// * @param type
// * Notification life cycle type
// * @param ids
// * The IDs of the notifications
// */
//- (void) getOptions:(CDVInvokedUrlCommand*)command
// byType:(APPNotificationType)type;
//{
// [self.commandDelegate runInBackground:^{
// NSArray* ids = command.arguments;
// NSArray* notifications;
//
// if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) {
// if (type == NotifcationTypeAll && ids.count == 0) {
// notifications = [self.center getNotificationOptions];
// }
// else if (type == NotifcationTypeAll) {
// notifications = [self.center getNotificationOptionsById:ids];
// }
// else if (ids.count == 0) {
// notifications = [self.center getNotificationOptionsByType:type];
// }
// else {
// notifications = [self.center getNotificationOptionsByType:type
// andId:ids];
// }
// } else {
// if (type == NotifcationTypeAll && ids.count == 0) {
// notifications = [self.app localNotificationOptions];
// }
// else if (type == NotifcationTypeAll) {
// notifications = [self.app localNotificationOptionsById:ids];
// }
// else if (ids.count == 0) {
// notifications = [self.app localNotificationOptionsByType:type];
// }
// else {
// notifications = [self.app localNotificationOptionsByType:type
// andId:ids];
// }
// }
//
// CDVPluginResult* result;
// result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK
// messageAsArray:notifications];
//
// [self.commandDelegate sendPluginResult:result
// callbackId:command.callbackId];
// }];
//}
/** /**
* Schedule a set of notifications. * Check for permission to show notifications.
*
* @param properties
* A dict of properties for each notification
*/
- (void) schedule:(CDVInvokedUrlCommand*)command
{
NSArray* notifications = command.arguments;
[self.commandDelegate runInBackground:^{
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) {
for (NSDictionary* options in notifications) {
UNMutableNotificationContent* notification;
notification = [[UNMutableNotificationContent alloc]
initWithOptions:options];
[self scheduleNotification:notification];
//[self fireEvent:@"add" notification:notification];
}
} else {
for (NSDictionary* options in notifications) {
UILocalNotification* notification;
notification = [[UILocalNotification alloc]
initWithOptions:options];
[self scheduleLocalNotification:[notification copy]];
[self fireEvent:@"schedule" localnotification:notification];
if (notifications.count > 1) {
[NSThread sleepForTimeInterval:0.01];
}
}
}
[self execCallback:command];
}];
}
/**
* Update a set of notifications.
*
* @param properties
* A dict of properties for each notification
*/
- (void) update:(CDVInvokedUrlCommand*)command
{
NSArray* notifications = command.arguments;
[self.commandDelegate runInBackground:^{
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) {
for (NSDictionary* options in notifications) {
NSNumber* id = [options objectForKey:@"id"];
UNNotificationRequest* notification;
notification = [self.center getNotificationWithId:id];
if (!notification)
continue;
// [self updateNotification:[notification copy]
// withOptions:options];
//
// [self fireEvent:@"update" notification:notification];
//
// if (notifications.count > 1) {
// [NSThread sleepForTimeInterval:0.01];
// }
}
} else {
for (NSDictionary* options in notifications) {
NSNumber* id = [options objectForKey:@"id"];
UILocalNotification* notification;
notification = [self.app localNotificationWithId:id];
if (!notification)
continue;
[self updateLocalNotification:[notification copy]
withOptions:options];
[self fireEvent:@"update" localnotification:notification];
if (notifications.count > 1) {
[NSThread sleepForTimeInterval:0.01];
}
}
}
[self execCallback:command];
}];
}
/**
* Cancel a set of notifications.
*
* @param ids
* The IDs of the notifications
*/
- (void) cancel:(CDVInvokedUrlCommand*)command
{
[self.commandDelegate runInBackground:^{
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) {
for (NSNumber* id in command.arguments) {
UNNotificationRequest* notification;
notification = [self.center getNotificationWithId:id];
if (!notification)
continue;
[self.center cancelNotification:notification];
[self fireEvent:@"cancel" notification:notification];
}
} else {
for (NSNumber* id in command.arguments) {
UILocalNotification* notification;
notification = [self.app localNotificationWithId:id];
if (!notification)
continue;
[self.app cancelLocalNotification:notification];
[self fireEvent:@"cancel" localnotification:notification];
}
}
[self execCallback:command];
}];
}
/**
* Cancel all local notifications.
*/
- (void) cancelAll:(CDVInvokedUrlCommand*)command
{
[self.commandDelegate runInBackground:^{
[self cancelAllNotifications];
[self fireEvent:@"cancelall"];
[self execCallback:command];
}];
}
/**
* Clear a set of notifications.
*
* @param ids
* The IDs of the notifications
*/
- (void) clear:(CDVInvokedUrlCommand*)command
{
[self.commandDelegate runInBackground:^{
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) {
for (NSNumber* id in command.arguments) {
UNNotificationRequest* notification;
notification = [self.center getNotificationWithId:id];
if (!notification)
continue;
[self.center clearNotification:notification];
[self fireEvent:@"clear" notification:notification];
}
} else {
for (NSNumber* id in command.arguments) {
UILocalNotification* notification;
notification = [self.app localNotificationWithId:id];
if (!notification)
continue;
[self.app clearLocalNotification:notification];
[self fireEvent:@"clear" localnotification:notification];
}
}
[self execCallback:command];
}];
}
/**
* Clear all local notifications.
*/
- (void) clearAll:(CDVInvokedUrlCommand*)command
{
[self.commandDelegate runInBackground:^{
[self clearAllNotifications];
[self fireEvent:@"clearall"];
[self execCallback:command];
}];
}
/**
* If a notification by ID is present.
*
* @param id
* The ID of the notification
*/
- (void) isPresent:(CDVInvokedUrlCommand *)command
{
[self isPresent:command type:NotifcationTypeAll];
}
/**
* If a notification by ID is scheduled.
*
* @param id
* The ID of the notification
*/
- (void) isScheduled:(CDVInvokedUrlCommand*)command
{
[self isPresent:command type:NotifcationTypeScheduled];
}
/**
* Check if a notification with an ID is triggered.
*
* @param id
* The ID of the notification
*/
- (void) isTriggered:(CDVInvokedUrlCommand*)command
{
[self isPresent:command type:NotifcationTypeTriggered];
}
/**
* Check if a notification with an ID exists.
*
* @param type
* The notification life cycle type
*/ */
- (void) isPresent:(CDVInvokedUrlCommand*)command - (void) check:(CDVInvokedUrlCommand*)command
type:(APPNotificationType)type;
{ {
[self.commandDelegate runInBackground:^{ [self.center getNotificationSettingsWithCompletionHandler:^(UNNotificationSettings* settings) {
NSNumber* id = [command argumentAtIndex:0]; BOOL authorized = settings.authorizationStatus == UNAuthorizationStatusAuthorized;
BOOL exist; BOOL enabled = settings.notificationCenterSetting == UNNotificationSettingEnabled;
BOOL permitted = authorized && enabled;
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) {
exist = [self.center notificationExist:id type:type];
} else {
if (type == NotifcationTypeAll) {
exist = [self.app localNotificationExist:id];
} else {
exist = [self.app localNotificationExist:id type:type];
}
}
CDVPluginResult* result; CDVPluginResult* result;
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK
messageAsBool:exist]; messageAsBool:permitted];
[self.commandDelegate sendPluginResult:result [self.commandDelegate sendPluginResult:result
callbackId:command.callbackId]; callbackId:command.callbackId];
...@@ -334,623 +550,367 @@ ...@@ -334,623 +550,367 @@
} }
/** /**
* List all ids from all local notifications. * Request for permission to show notifcations.
*/
- (void) getAllIds:(CDVInvokedUrlCommand*)command
{
[self getIds:command byType:NotifcationTypeAll];
}
/**
* List all ids from all pending notifications.
*/ */
- (void) getScheduledIds:(CDVInvokedUrlCommand*)command - (void) request:(CDVInvokedUrlCommand*)command
{ {
[self getIds:command byType:NotifcationTypeScheduled]; UNAuthorizationOptions options =
} (UNAuthorizationOptionBadge | UNAuthorizationOptionSound | UNAuthorizationOptionAlert);
/** [self.center requestAuthorizationWithOptions:options completionHandler:^(BOOL granted, NSError* e) {
* List all ids from all triggered notifications. [self check:command];
*/ }];
- (void) getTriggeredIds:(CDVInvokedUrlCommand*)command
{
[self getIds:command byType:NotifcationTypeTriggered];
} }
/** #pragma mark -
* List of ids for given local notifications. #pragma mark Core Logic
*
* @param type
* Notification life cycle type
* @param ids
* The IDs of the notifications
*/
- (void) getIds:(CDVInvokedUrlCommand*)command
byType:(APPNotificationType)type;
{
[self.commandDelegate runInBackground:^{
NSArray* ids;
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) {
ids = [self.center getNotificationIdsByType:type];
} else {
if (type == NotifcationTypeAll) {
ids = [self.app localNotificationIds];
} else {
ids = [self.app localNotificationIdsByType:type];
}
}
CDVPluginResult* result; ///**
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK // * Schedule the local notification.
messageAsArray:ids]; // */
//- (void) scheduleNotification:(UNMutableNotificationContent*)notification
//{
// [self.center addNotificationRequest:notification.request
// withCompletionHandler:^(NSError* e) {
// [self fireEvent:@"add" notification:notification.request];
// }];
//}
//
///**
// * Update the local notification.
// */
//- (void) updateNotification:(UILocalNotification*)notification
// withOptions:(NSDictionary*)newOptions
//{
// NSMutableDictionary* options = [notification.userInfo mutableCopy];
//
// [options addEntriesFromDictionary:newOptions];
// [options setObject:[NSDate date] forKey:@"updatedAt"];
//
//// notification = [[UILocalNotification alloc]
//// initWithOptions:options];
////
//// [self scheduleLocalNotification:notification];
//}
//
///**
// * Cancel all local notifications.
// */
//- (void) cancelAllNotifications
//{
// if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) {
// [self.center cancelAllNotifications];
// } else {
// [self.app cancelAllLocalNotifications];
// }
//
// [self.app setApplicationIconBadgeNumber:0];
//}
//
///**
// * Clear all local notifications.
// */
//- (void) clearAllNotifications
//{
// if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) {
// [self.center clearAllNotifications];
// } else {
// [self.app clearAllLocalNotifications];
// }
//
// [self.app setApplicationIconBadgeNumber:0];
//}
//
//#pragma mark -
//#pragma mark Delegates
//
///**
// * Called when a notification is delivered to a foreground app.
// */
//- (void) userNotificationCenter:(UNUserNotificationCenter *)center
// willPresentNotification:(UNNotification *)notification
// withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler
//{
// [self fireEvent:@"trigger" notification:notification.request];
// completionHandler(UNAuthorizationOptionBadge | UNAuthorizationOptionSound | UNAuthorizationOptionAlert);
//}
//
//
///**
// * Called to let your app know which action was selected by the user for a given
// * notification.
// */
//- (void) userNotificationCenter:(UNUserNotificationCenter *)center
// didReceiveNotificationResponse:(UNNotificationResponse *)response
// withCompletionHandler:(void (^)())completionHandler
//{
// UNNotificationRequest* notification = response.notification.request;
//
// [self fireEvent:@"click" notification:notification];
//
// if ([notification.options isRepeating]) {
// [self.center clearNotification:notification];
// [self fireEvent:@"clear" notification:notification];
// } else {
// [self.center cancelNotification:notification];
// [self fireEvent:@"cancel" notification:notification];
// }
//
// completionHandler();
//}
[self.commandDelegate sendPluginResult:result #pragma mark -
callbackId:command.callbackId]; #pragma mark Life Cycle
}];
}
/** /**
* Propertys for given local notification. * Registers obervers after plugin was initialized.
*/ */
- (void) getSingle:(CDVInvokedUrlCommand*)command - (void) pluginInitialize
{ {
[self getOption:command byType:NotifcationTypeAll]; eventQueue = [[NSMutableArray alloc] init];
}
/** self.center.delegate = self;
* Propertya for given scheduled notification.
*/
- (void) getSingleScheduled:(CDVInvokedUrlCommand*)command
{
[self getOption:command byType:NotifcationTypeScheduled];
} }
// Propertys for given triggered notification #pragma mark -
- (void) getSingleTriggered:(CDVInvokedUrlCommand*)command #pragma mark Helper
{
[self getOption:command byType:NotifcationTypeTriggered];
}
/** ///**
* Property list for given local notifications. // * Retrieves the application state
* // *
* @param ids // * @return
* The IDs of the notifications // * Either "background" or "foreground"
*/ // */
- (void) getAll:(CDVInvokedUrlCommand*)command //- (NSString*) applicationState
{ //{
[self getOptions:command byType:NotifcationTypeAll]; // UIApplicationState state = [self.app applicationState];
} //
// bool isActive = state == UIApplicationStateActive;
//
// return isActive ? @"foreground" : @"background";
//}
//
///**
// * Simply invokes the callback without any parameter.
// */
//- (void) execCallback:(CDVInvokedUrlCommand*)command
//{
// CDVPluginResult *result = [CDVPluginResult
// resultWithStatus:CDVCommandStatus_OK];
//
// [self.commandDelegate sendPluginResult:result
// callbackId:command.callbackId];
//}
//
///**
// * Short hand for shared application instance.
// */
//- (UIApplication*) app
//{
// return [UIApplication sharedApplication];
//}
/** /**
* Property list for given scheduled notifications. * Short hand for current notification center.
*
* @param ids
* The IDs of the notifications
*/ */
- (void) getScheduled:(CDVInvokedUrlCommand*)command - (UNUserNotificationCenter*) center
{ {
[self getOptions:command byType:NotifcationTypeScheduled]; return [UNUserNotificationCenter currentNotificationCenter];
} }
/** ///**
* Property list for given triggered notifications. // * Fire general event.
* // */
* @param ids //- (void) fireEvent:(NSString*)event
* The IDs of the notifications //{
*/ // [self fireEvent:event notification:NULL];
- (void) getTriggered:(CDVInvokedUrlCommand *)command //}
{ //
[self getOptions:command byType:NotifcationTypeTriggered]; ///**
} // * Fire event for local notification.
// */
/** //- (void) fireEvent:(NSString*)event
* Propertys for given triggered notification. // notification:(UNNotificationRequest*)notification
* //{
* @param type // NSString* js;
* Notification life cycle type // NSString* appState = [self applicationState];
* @param ids // NSString* params = [NSString stringWithFormat:@"\"%@\"", appState];
* The ID of the notification //
*/ // if (notification) {
- (void) getOption:(CDVInvokedUrlCommand*)command // NSString* args = [notification encodeToJSON];
byType:(APPNotificationType)type; // params = [NSString stringWithFormat:@"%@,'%@'", args, appState];
{ // }
[self.commandDelegate runInBackground:^{ //
NSArray* ids = command.arguments; // js = [NSString stringWithFormat:
NSArray* notifications; // @"cordova.plugins.notification.local.core.fireEvent('%@', %@)",
// event, params];
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) { //
notifications = [self.center getNotificationOptionsByType:type // if (deviceready) {
andId:ids]; // [self.commandDelegate evalJs:js];
} else { // } else {
if (type == NotifcationTypeAll) { // [self.eventQueue addObject:js];
notifications = [self.app localNotificationOptionsById:ids]; // }
} //}
else { //
notifications = [self.app localNotificationOptionsByType:type //#pragma mark -
andId:ids]; //#pragma mark ios 9
} //
} ///**
// * Schedule the local notification.
CDVPluginResult* result; // */
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK //- (void) scheduleLocalNotification:(UILocalNotification*)notification
messageAsDictionary:[notifications firstObject]]; //{
// [self cancelForerunnerLocalNotification:notification];
[self.commandDelegate sendPluginResult:result // [self.app scheduleLocalNotification:notification];
callbackId:command.callbackId]; //}
}]; //
} ///**
// * Update the local notification.
/** // */
* Property list for given triggered notifications. //- (void) updateLocalNotification:(UILocalNotification*)notification
* // withOptions:(NSDictionary*)newOptions
* @param type //{
* Notification life cycle type // NSMutableDictionary* options = [notification.userInfo mutableCopy];
* @param ids //
* The IDs of the notifications // [options addEntriesFromDictionary:newOptions];
*/ // [options setObject:[NSDate date] forKey:@"updatedAt"];
- (void) getOptions:(CDVInvokedUrlCommand*)command //
byType:(APPNotificationType)type;
{
[self.commandDelegate runInBackground:^{
NSArray* ids = command.arguments;
NSArray* notifications;
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) {
if (type == NotifcationTypeAll && ids.count == 0) {
notifications = [self.center getNotificationOptions];
}
else if (type == NotifcationTypeAll) {
notifications = [self.center getNotificationOptionsById:ids];
}
else if (ids.count == 0) {
notifications = [self.center getNotificationOptionsByType:type];
}
else {
notifications = [self.center getNotificationOptionsByType:type
andId:ids];
}
} else {
if (type == NotifcationTypeAll && ids.count == 0) {
notifications = [self.app localNotificationOptions];
}
else if (type == NotifcationTypeAll) {
notifications = [self.app localNotificationOptionsById:ids];
}
else if (ids.count == 0) {
notifications = [self.app localNotificationOptionsByType:type];
}
else {
notifications = [self.app localNotificationOptionsByType:type
andId:ids];
}
}
CDVPluginResult* result;
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK
messageAsArray:notifications];
[self.commandDelegate sendPluginResult:result
callbackId:command.callbackId];
}];
}
/**
* Inform if the app has the permission to show
* badges and local notifications.
*/
- (void) hasPermission:(CDVInvokedUrlCommand*)command
{
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) {
[self.commandDelegate runInBackground:^{
[self.center getNotificationSettingsWithCompletionHandler:^(UNNotificationSettings* settings) {
BOOL authorized = settings.authorizationStatus == UNAuthorizationStatusAuthorized;
BOOL enabled = settings.notificationCenterSetting == UNNotificationSettingEnabled;
BOOL permitted = authorized && enabled;
CDVPluginResult* result;
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK
messageAsBool:permitted];
[self.commandDelegate sendPluginResult:result
callbackId:command.callbackId];
}];
}];
} else {
[self.commandDelegate runInBackground:^{
CDVPluginResult* result;
BOOL hasPermission;
hasPermission = [self.app hasPermissionToScheduleLocalNotifications];
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK
messageAsBool:hasPermission];
[self.commandDelegate sendPluginResult:result
callbackId:command.callbackId];
}];
}
}
/**
* Ask for permission to show badges.
*/
- (void) registerPermission:(CDVInvokedUrlCommand*)command
{
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) {
[self.commandDelegate runInBackground:^{
UNAuthorizationOptions options =
(UNAuthorizationOptionBadge | UNAuthorizationOptionSound | UNAuthorizationOptionAlert);
[self.center requestAuthorizationWithOptions:options completionHandler:^(BOOL granted, NSError* e) {
[self hasPermission:command];
}];
}];
} else {
if ([[UIApplication sharedApplication]
respondsToSelector:@selector(registerUserNotificationSettings:)])
{
_command = command;
[self.commandDelegate runInBackground:^{
[self.app registerPermissionToScheduleLocalNotifications];
}];
} else {
[self hasPermission:command];
}
}
}
#pragma mark -
#pragma mark Core Logic
/**
* Schedule the local notification.
*/
- (void) scheduleNotification:(UNMutableNotificationContent*)notification
{
[self.center addNotificationRequest:notification.request
withCompletionHandler:^(NSError* e) {
[self fireEvent:@"add" notification:notification.request];
}];
}
/**
* Update the local notification.
*/
- (void) updateNotification:(UILocalNotification*)notification
withOptions:(NSDictionary*)newOptions
{
NSMutableDictionary* options = [notification.userInfo mutableCopy];
[options addEntriesFromDictionary:newOptions];
[options setObject:[NSDate date] forKey:@"updatedAt"];
// notification = [[UILocalNotification alloc] // notification = [[UILocalNotification alloc]
// initWithOptions:options]; // initWithOptions:options];
// //
// [self scheduleLocalNotification:notification]; // [self scheduleLocalNotification:notification];
} //}
//
/** ///**
* Cancel all local notifications. // * Cancel a maybe given forerunner with the same ID.
*/ // */
- (void) cancelAllNotifications //- (void) cancelForerunnerLocalNotification:(UILocalNotification*)notification
{ //{
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) { // NSNumber* id = notification.options.id;
[self.center cancelAllNotifications]; // UILocalNotification* forerunner;
} else { //
[self.app cancelAllLocalNotifications]; // forerunner = [self.app localNotificationWithId:id];
} //
// if (!forerunner)
[self.app setApplicationIconBadgeNumber:0]; // return;
} //
// [self.app cancelLocalNotification:forerunner];
/** //}
* Clear all local notifications. //
*/ ///**
- (void) clearAllNotifications // * Cancels all non-repeating local notification older then
{ // * a specific amount of seconds
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) { // */
[self.center clearAllNotifications]; //- (void) cancelAllNotificationsWhichAreOlderThen:(float)seconds
} else { //{
[self.app clearAllLocalNotifications]; // NSArray* notifications;
} //
// notifications = [self.app localNotifications];
[self.app setApplicationIconBadgeNumber:0]; //
} // for (UILocalNotification* notification in notifications)
// {
#pragma mark - // if (![notification isRepeating]
#pragma mark Delegates // && notification.timeIntervalSinceFireDate > seconds)
// {
/** // [self.app cancelLocalNotification:notification];
* Called when a notification is delivered to a foreground app. // [self fireEvent:@"cancel" localnotification:notification];
*/ // }
- (void) userNotificationCenter:(UNUserNotificationCenter *)center // }
willPresentNotification:(UNNotification *)notification //}
withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler //
{ ///**
[self fireEvent:@"trigger" notification:notification.request]; // * Calls the cancel or trigger event after a local notification was received.
completionHandler(UNAuthorizationOptionBadge | UNAuthorizationOptionSound | UNAuthorizationOptionAlert); // * Cancels the local notification if autoCancel was set to true.
} // */
//- (void) didReceiveLocalNotification:(NSNotification*)localNotification
//{
/** // UILocalNotification* notification = [localNotification object];
* Called to let your app know which action was selected by the user for a given //
* notification. // if ([notification userInfo] == NULL || [notification wasUpdated])
*/ // return;
- (void) userNotificationCenter:(UNUserNotificationCenter *)center //
didReceiveNotificationResponse:(UNNotificationResponse *)response // NSTimeInterval timeInterval = [notification timeIntervalSinceLastTrigger];
withCompletionHandler:(void (^)())completionHandler // NSString* event = timeInterval < 0.2 && deviceready ? @"trigger" : @"click";
{ //
UNNotificationRequest* notification = response.notification.request; // [self fireEvent:event localnotification:notification];
//
[self fireEvent:@"click" notification:notification]; // if (![event isEqualToString:@"click"])
// return;
if ([notification.options isRepeating]) { //
[self.center clearNotification:notification]; // if ([notification isRepeating]) {
[self fireEvent:@"clear" notification:notification]; // [self fireEvent:@"clear" localnotification:notification];
} else { // } else {
[self.center cancelNotification:notification]; // [self.app cancelLocalNotification:notification];
[self fireEvent:@"cancel" notification:notification]; // [self fireEvent:@"cancel" localnotification:notification];
} // }
//}
completionHandler(); //
} ///**
// * Called when app has started
#pragma mark - // * (by clicking on a local notification).
#pragma mark Life Cycle // */
//- (void) didFinishLaunchingWithOptions:(NSNotification*)notification
/** //{
* Registers obervers after plugin was initialized. // NSDictionary* launchOptions = [notification userInfo];
*/ //
- (void) pluginInitialize // UILocalNotification* localNotification;
{ //
eventQueue = [[NSMutableArray alloc] init]; // localNotification = [launchOptions objectForKey:
// UIApplicationLaunchOptionsLocalNotificationKey];
self.center.delegate = self; //
} // if (localNotification) {
// [self didReceiveLocalNotification:
#pragma mark - // [NSNotification notificationWithName:CDVLocalNotification
#pragma mark Helper // object:localNotification]];
// }
/** //}
* Retrieves the application state //
* ///**
* @return // * Called on notification settings registration is completed.
* Either "background" or "foreground" // */
*/ //- (void) didRegisterUserNotificationSettings:(UIUserNotificationSettings*)settings
- (NSString*) applicationState //{
{ // if (_command) {
UIApplicationState state = [self.app applicationState]; // [self hasPermission:_command];
// _command = NULL;
bool isActive = state == UIApplicationStateActive; // }
//}
return isActive ? @"foreground" : @"background"; //
} ///**
// * Cancels all single non-repeating notifications which are older then 5 days
/** // * before the app terminates.
* Simply invokes the callback without any parameter. // */
*/ //- (void) onAppTerminate
- (void) execCallback:(CDVInvokedUrlCommand*)command //{
{ // [self cancelAllNotificationsWhichAreOlderThen:432000];
CDVPluginResult *result = [CDVPluginResult //}
resultWithStatus:CDVCommandStatus_OK]; //
///**
[self.commandDelegate sendPluginResult:result // * Fire event for local notification.
callbackId:command.callbackId]; // */
} //- (void) fireEvent:(NSString*)event localnotification:(UILocalNotification*)notification
//{
/** // NSString* js;
* Short hand for shared application instance. // NSString* params = [NSString stringWithFormat:
*/ // @"\"%@\"", self.applicationState];
- (UIApplication*) app //
{ // if (notification) {
return [UIApplication sharedApplication]; // NSString* args = [notification encodeToJSON];
} //
// params = [NSString stringWithFormat:
/** // @"%@,'%@'",
* Short hand for current notification center. // args, self.applicationState];
*/ // }
- (UNUserNotificationCenter*) center //
{ // js = [NSString stringWithFormat:
return [UNUserNotificationCenter currentNotificationCenter]; // @"cordova.plugins.notification.local.core.fireEvent('%@', %@)",
} // event, params];
//
/** // if (deviceready) {
* Fire general event. // [self.commandDelegate evalJs:js];
*/ // } else {
- (void) fireEvent:(NSString*)event // [self.eventQueue addObject:js];
{ // }
[self fireEvent:event notification:NULL]; //}
}
/**
* Fire event for local notification.
*/
- (void) fireEvent:(NSString*)event
notification:(UNNotificationRequest*)notification
{
NSString* js;
NSString* appState = [self applicationState];
NSString* params = [NSString stringWithFormat:@"\"%@\"", appState];
if (notification) {
NSString* args = [notification encodeToJSON];
params = [NSString stringWithFormat:@"%@,'%@'", args, appState];
}
js = [NSString stringWithFormat:
@"cordova.plugins.notification.local.core.fireEvent('%@', %@)",
event, params];
if (deviceready) {
[self.commandDelegate evalJs:js];
} else {
[self.eventQueue addObject:js];
}
}
#pragma mark -
#pragma mark ios 9
/**
* Schedule the local notification.
*/
- (void) scheduleLocalNotification:(UILocalNotification*)notification
{
[self cancelForerunnerLocalNotification:notification];
[self.app scheduleLocalNotification:notification];
}
/**
* Update the local notification.
*/
- (void) updateLocalNotification:(UILocalNotification*)notification
withOptions:(NSDictionary*)newOptions
{
NSMutableDictionary* options = [notification.userInfo mutableCopy];
[options addEntriesFromDictionary:newOptions];
[options setObject:[NSDate date] forKey:@"updatedAt"];
notification = [[UILocalNotification alloc]
initWithOptions:options];
[self scheduleLocalNotification:notification];
}
/**
* Cancel a maybe given forerunner with the same ID.
*/
- (void) cancelForerunnerLocalNotification:(UILocalNotification*)notification
{
NSNumber* id = notification.options.id;
UILocalNotification* forerunner;
forerunner = [self.app localNotificationWithId:id];
if (!forerunner)
return;
[self.app cancelLocalNotification:forerunner];
}
/**
* Cancels all non-repeating local notification older then
* a specific amount of seconds
*/
- (void) cancelAllNotificationsWhichAreOlderThen:(float)seconds
{
NSArray* notifications;
notifications = [self.app localNotifications];
for (UILocalNotification* notification in notifications)
{
if (![notification isRepeating]
&& notification.timeIntervalSinceFireDate > seconds)
{
[self.app cancelLocalNotification:notification];
[self fireEvent:@"cancel" localnotification:notification];
}
}
}
/**
* Calls the cancel or trigger event after a local notification was received.
* Cancels the local notification if autoCancel was set to true.
*/
- (void) didReceiveLocalNotification:(NSNotification*)localNotification
{
UILocalNotification* notification = [localNotification object];
if ([notification userInfo] == NULL || [notification wasUpdated])
return;
NSTimeInterval timeInterval = [notification timeIntervalSinceLastTrigger];
NSString* event = timeInterval < 0.2 && deviceready ? @"trigger" : @"click";
[self fireEvent:event localnotification:notification];
if (![event isEqualToString:@"click"])
return;
if ([notification isRepeating]) {
[self fireEvent:@"clear" localnotification:notification];
} else {
[self.app cancelLocalNotification:notification];
[self fireEvent:@"cancel" localnotification:notification];
}
}
/**
* Called when app has started
* (by clicking on a local notification).
*/
- (void) didFinishLaunchingWithOptions:(NSNotification*)notification
{
NSDictionary* launchOptions = [notification userInfo];
UILocalNotification* localNotification;
localNotification = [launchOptions objectForKey:
UIApplicationLaunchOptionsLocalNotificationKey];
if (localNotification) {
[self didReceiveLocalNotification:
[NSNotification notificationWithName:CDVLocalNotification
object:localNotification]];
}
}
/**
* Called on notification settings registration is completed.
*/
- (void) didRegisterUserNotificationSettings:(UIUserNotificationSettings*)settings
{
if (_command) {
[self hasPermission:_command];
_command = NULL;
}
}
/**
* Cancels all single non-repeating notifications which are older then 5 days
* before the app terminates.
*/
- (void) onAppTerminate
{
[self cancelAllNotificationsWhichAreOlderThen:432000];
}
/**
* Fire event for local notification.
*/
- (void) fireEvent:(NSString*)event localnotification:(UILocalNotification*)notification
{
NSString* js;
NSString* params = [NSString stringWithFormat:
@"\"%@\"", self.applicationState];
if (notification) {
NSString* args = [notification encodeToJSON];
params = [NSString stringWithFormat:
@"%@,'%@'",
args, self.applicationState];
}
js = [NSString stringWithFormat:
@"cordova.plugins.notification.local.core.fireEvent('%@', %@)",
event, params];
if (deviceready) {
[self.commandDelegate evalJs:js];
} else {
[self.eventQueue addObject:js];
}
}
@end @end
/* /*
* Copyright (c) 2013-2015 by appPlant UG. All rights reserved.
*
* @APPPLANT_LICENSE_HEADER_START@
*
* This file contains Original Code and/or Modifications of Original Code * This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apache License * as defined in and that are subject to the Apache License
* Version 2.0 (the 'License'). You may not use this file except in * Version 2.0 (the 'License'). You may not use this file except in
...@@ -17,404 +13,17 @@ ...@@ -17,404 +13,17 @@
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
* Please see the License for the specific language governing rights and * Please see the License for the specific language governing rights and
* limitations under the License. * limitations under the License.
*
* @APPPLANT_LICENSE_HEADER_END@
*/ */
var exec = require('cordova/exec'); var exec = require('cordova/exec');
/********
* CORE *
********/
/**
* Returns the default settings.
*
* @return {Object}
*/
exports.getDefaults = function () {
return this._defaults;
};
/**
* Overwrite default settings.
*
* @param {Object} defaults
*/
exports.setDefaults = function (newDefaults) {
var defaults = this.getDefaults();
for (var key in defaults) {
if (newDefaults.hasOwnProperty(key)) {
defaults[key] = newDefaults[key];
}
}
};
/**
* Schedule a new local notification.
*
* @param {Object} msgs
* The notification properties
* @param {Function} callback
* A function to be called after the notification has been canceled
* @param {Object?} scope
* The scope for the callback function
* @param {Object?} args
* skipPermission:true schedules the notifications immediatly without
* registering or checking for permission
*/
exports.schedule = function (msgs, callback, scope, args) {
var fn = function(granted) {
if (!granted) return;
var notifications = Array.isArray(msgs) ? msgs : [msgs];
for (var i = 0; i < notifications.length; i++) {
var notification = notifications[i];
this.mergeWithDefaults(notification);
this.convertProperties(notification);
}
this.exec('schedule', notifications, callback, scope);
};
if (args && args.skipPermission) {
fn.call(this, true);
} else {
this.registerPermission(fn, this);
}
};
/**
* Update existing notifications specified by IDs in options.
*
* @param {Object} notifications
* The notification properties to update
* @param {Function} callback
* A function to be called after the notification has been updated
* @param {Object?} scope
* The scope for the callback function
* @param {Object?} args
* skipPermission:true schedules the notifications immediatly without
* registering or checking for permission
*/
exports.update = function (msgs, callback, scope, args) {
var fn = function(granted) {
if (!granted) return;
var notifications = Array.isArray(msgs) ? msgs : [msgs];
for (var i = 0; i < notifications.length; i++) {
var notification = notifications[i];
this.convertProperties(notification);
}
this.exec('update', notifications, callback, scope);
};
if (args && args.skipPermission) {
fn.call(this, true);
} else {
this.registerPermission(fn, this);
}
};
/**
* Clear the specified notification.
*
* @param {String} id
* The ID of the notification
* @param {Function} callback
* A function to be called after the notification has been cleared
* @param {Object?} scope
* The scope for the callback function
*/
exports.clear = function (ids, callback, scope) {
ids = Array.isArray(ids) ? ids : [ids];
ids = this.convertIds(ids);
this.exec('clear', ids, callback, scope);
};
/**
* Clear all previously sheduled notifications.
*
* @param {Function} callback
* A function to be called after all notifications have been cleared
* @param {Object?} scope
* The scope for the callback function
*/
exports.clearAll = function (callback, scope) {
this.exec('clearAll', null, callback, scope);
};
/**
* Cancel the specified notifications.
*
* @param {String[]} ids
* The IDs of the notifications
* @param {Function} callback
* A function to be called after the notifications has been canceled
* @param {Object?} scope
* The scope for the callback function
*/
exports.cancel = function (ids, callback, scope) {
ids = Array.isArray(ids) ? ids : [ids];
ids = this.convertIds(ids);
this.exec('cancel', ids, callback, scope);
};
/**
* Remove all previously registered notifications.
*
* @param {Function} callback
* A function to be called after all notifications have been canceled
* @param {Object?} scope
* The scope for the callback function
*/
exports.cancelAll = function (callback, scope) {
this.exec('cancelAll', null, callback, scope);
};
/**
* Check if a notification with an ID is present.
*
* @param {String} id
* The ID of the notification
* @param {Function} callback
* A callback function to be called with the list
* @param {Object?} scope
* The scope for the callback function
*/
exports.isPresent = function (id, callback, scope) {
this.exec('isPresent', id || 0, callback, scope);
};
/**
* Check if a notification with an ID is scheduled.
*
* @param {String} id
* The ID of the notification
* @param {Function} callback
* A callback function to be called with the list
* @param {Object?} scope
* The scope for the callback function
*/
exports.isScheduled = function (id, callback, scope) {
this.exec('isScheduled', id || 0, callback, scope);
};
/**
* Check if a notification with an ID was triggered.
*
* @param {String} id
* The ID of the notification
* @param {Function} callback
* A callback function to be called with the list
* @param {Object?} scope
* The scope for the callback function
*/
exports.isTriggered = function (id, callback, scope) {
this.exec('isTriggered', id || 0, callback, scope);
};
/**
* List all local notification IDs.
*
* @param {Function} callback
* A callback function to be called with the list
* @param {Object?} scope
* The scope for the callback function
*/
exports.getAllIds = function (callback, scope) {
this.exec('getAllIds', null, callback, scope);
};
/**
* Alias for `getAllIds`.
*/
exports.getIds = function () {
this.getAllIds.apply(this, arguments);
};
/**
* List all scheduled notification IDs.
*
* @param {Function} callback
* A callback function to be called with the list
* @param {Object?} scope
* The scope for the callback function
*/
exports.getScheduledIds = function (callback, scope) {
this.exec('getScheduledIds', null, callback, scope);
};
/**
* List all triggered notification IDs.
*
* @param {Function} callback
* A callback function to be called with the list
* @param {Object?} scope
* The scope for the callback function
*/
exports.getTriggeredIds = function (callback, scope) {
this.exec('getTriggeredIds', null, callback, scope);
};
/**
* Property list for given local notifications.
* If called without IDs, all notification will be returned.
*
* @param {Number[]?} ids
* Set of notification IDs
* @param {Function} callback
* A callback function to be called with the list
* @param {Object?} scope
* The scope for the callback function
*/
exports.get = function () {
var args = Array.apply(null, arguments);
if (typeof args[0] == 'function') {
args.unshift([]);
}
var ids = args[0],
callback = args[1],
scope = args[2];
if (!Array.isArray(ids)) {
this.exec('getSingle', Number(ids), callback, scope);
return;
}
ids = this.convertIds(ids);
this.exec('getAll', ids, callback, scope);
};
/**
* Property list for all local notifications.
*
* @param {Function} callback
* A callback function to be called with the list
* @param {Object?} scope
* The scope for the callback function
*/
exports.getAll = function (callback, scope) {
this.exec('getAll', null, callback, scope);
};
/**
* Property list for given scheduled notifications.
* If called without IDs, all notification will be returned.
*
* @param {Number[]?} ids
* Set of notification IDs
* @param {Function} callback
* A callback function to be called with the list
* @param {Object?} scope
* The scope for the callback function
*/
exports.getScheduled = function () {
var args = Array.apply(null, arguments);
if (typeof args[0] == 'function') {
args.unshift([]);
}
var ids = args[0],
callback = args[1],
scope = args[2];
if (!Array.isArray(ids)) {
ids = [ids];
}
if (!Array.isArray(ids)) {
this.exec('getSingleScheduled', Number(ids), callback, scope);
return;
}
ids = this.convertIds(ids);
this.exec('getScheduled', ids, callback, scope);
};
/**
* Property list for all scheduled notifications.
*
* @param {Function} callback
* A callback function to be called with the list
* @param {Object?} scope
* The scope for the callback function
*/
exports.getAllScheduled = function (callback, scope) {
this.exec('getScheduled', null, callback, scope);
};
/** /**
* Property list for given triggered notifications. * Request permission to show notifications.
* If called without IDs, all notification will be returned.
* *
* @param {Number[]?} ids * @param [ Function ] callback The function to be exec as the callback.
* Set of notification IDs * @param [ Object ] scope The callback function's scope.
* @param {Function} callback
* A callback function to be called with the list
* @param {Object?} scope
* The scope for the callback function
*/
exports.getTriggered = function () {
var args = Array.apply(null, arguments);
if (typeof args[0] == 'function') {
args.unshift([]);
}
var ids = args[0],
callback = args[1],
scope = args[2];
if (!Array.isArray(ids)) {
ids = [ids];
}
if (!Array.isArray(ids)) {
this.exec('getSingleTriggered', Number(ids), callback, scope);
return;
}
ids = this.convertIds(ids);
this.exec('getTriggered', ids, callback, scope);
};
/**
* Property list for all triggered notifications.
* *
* @param {Function} callback * @return [ Void ]
* A callback function to be called with the list
* @param {Object?} scope
* The scope for the callback function
*/
exports.getAllTriggered = function (callback, scope) {
this.exec('getTriggered', null, callback, scope);
};
/**
* Informs if the app has the permission to show notifications.
*
* @param {Function} callback
* The function to be exec as the callback
* @param {Object?} scope
* The callback function's scope
*/ */
exports.hasPermission = function (callback, scope) { exports.hasPermission = function (callback, scope) {
var fn = this.createCallbackFn(callback, scope); var fn = this.createCallbackFn(callback, scope);
...@@ -424,25 +33,18 @@ exports.hasPermission = function (callback, scope) { ...@@ -424,25 +33,18 @@ exports.hasPermission = function (callback, scope) {
return; return;
} }
exec(fn, null, 'LocalNotification', 'hasPermission', []); exec(fn, null, 'LocalNotification', 'check', []);
}; };
/** /**
* Register permission to show notifications if not already granted. * Request permission to show notifications.
*
* @param [ Function ] callback The function to be exec as the callback.
* @param [ Object ] scope The callback function's scope.
* *
* @param {Function} callback * @return [ Void ]
* The function to be exec as the callback
* @param {Object?} scope
* The callback function's scope
*/ */
exports.registerPermission = function (callback, scope) { exports.requestPermission = function (callback, scope) {
if (this._registered) {
return this.hasPermission(callback, scope);
} else {
this._registered = true;
}
var fn = this.createCallbackFn(callback, scope); var fn = this.createCallbackFn(callback, scope);
if (device.platform != 'iOS') { if (device.platform != 'iOS') {
...@@ -450,58 +52,438 @@ exports.registerPermission = function (callback, scope) { ...@@ -450,58 +52,438 @@ exports.registerPermission = function (callback, scope) {
return; return;
} }
exec(fn, null, 'LocalNotification', 'registerPermission', []); exec(fn, null, 'LocalNotification', 'request', []);
}; };
// /**
/********** // * Returns the default settings.
* EVENTS * // *
**********/ // * @return {Object}
// */
/** // exports.getDefaults = function () {
* Register callback for given event. // return this._defaults;
* // };
* @param {String} event
* The event's name // /**
* @param {Function} callback // * Overwrite default settings.
* The function to be exec as callback // *
* @param {Object?} scope // * @param {Object} defaults
* The callback function's scope // */
*/ // exports.setDefaults = function (newDefaults) {
exports.on = function (event, callback, scope) { // var defaults = this.getDefaults();
if (typeof callback !== "function") // for (var key in defaults) {
return; // if (newDefaults.hasOwnProperty(key)) {
// defaults[key] = newDefaults[key];
if (!this._listener[event]) { // }
this._listener[event] = []; // }
} // };
var item = [callback, scope || window]; // /**
// * Schedule a new local notification.
this._listener[event].push(item); // *
}; // * @param {Object} msgs
// * The notification properties
/** // * @param {Function} callback
* Unregister callback for given event. // * A function to be called after the notification has been canceled
* // * @param {Object?} scope
* @param {String} event // * The scope for the callback function
* The event's name // * @param {Object?} args
* @param {Function} callback // * skipPermission:true schedules the notifications immediatly without
* The function to be exec as callback // * registering or checking for permission
*/ // */
exports.un = function (event, callback) { // exports.schedule = function (msgs, callback, scope, args) {
var listener = this._listener[event]; // var fn = function(granted) {
if (!listener) // if (!granted) return;
return;
// var notifications = Array.isArray(msgs) ? msgs : [msgs];
for (var i = 0; i < listener.length; i++) {
var fn = listener[i][0]; // for (var i = 0; i < notifications.length; i++) {
// var notification = notifications[i];
if (fn == callback) {
listener.splice(i, 1); // this.mergeWithDefaults(notification);
break; // this.convertProperties(notification);
} // }
}
}; // this.exec('schedule', notifications, callback, scope);
// };
// if (args && args.skipPermission) {
// fn.call(this, true);
// } else {
// this.registerPermission(fn, this);
// }
// };
// /**
// * Update existing notifications specified by IDs in options.
// *
// * @param {Object} notifications
// * The notification properties to update
// * @param {Function} callback
// * A function to be called after the notification has been updated
// * @param {Object?} scope
// * The scope for the callback function
// * @param {Object?} args
// * skipPermission:true schedules the notifications immediatly without
// * registering or checking for permission
// */
// exports.update = function (msgs, callback, scope, args) {
// var fn = function(granted) {
// if (!granted) return;
// var notifications = Array.isArray(msgs) ? msgs : [msgs];
// for (var i = 0; i < notifications.length; i++) {
// var notification = notifications[i];
// this.convertProperties(notification);
// }
// this.exec('update', notifications, callback, scope);
// };
// if (args && args.skipPermission) {
// fn.call(this, true);
// } else {
// this.registerPermission(fn, this);
// }
// };
// /**
// * Clear the specified notification.
// *
// * @param {String} id
// * The ID of the notification
// * @param {Function} callback
// * A function to be called after the notification has been cleared
// * @param {Object?} scope
// * The scope for the callback function
// */
// exports.clear = function (ids, callback, scope) {
// ids = Array.isArray(ids) ? ids : [ids];
// ids = this.convertIds(ids);
// this.exec('clear', ids, callback, scope);
// };
// /**
// * Clear all previously sheduled notifications.
// *
// * @param {Function} callback
// * A function to be called after all notifications have been cleared
// * @param {Object?} scope
// * The scope for the callback function
// */
// exports.clearAll = function (callback, scope) {
// this.exec('clearAll', null, callback, scope);
// };
// /**
// * Cancel the specified notifications.
// *
// * @param {String[]} ids
// * The IDs of the notifications
// * @param {Function} callback
// * A function to be called after the notifications has been canceled
// * @param {Object?} scope
// * The scope for the callback function
// */
// exports.cancel = function (ids, callback, scope) {
// ids = Array.isArray(ids) ? ids : [ids];
// ids = this.convertIds(ids);
// this.exec('cancel', ids, callback, scope);
// };
// /**
// * Remove all previously registered notifications.
// *
// * @param {Function} callback
// * A function to be called after all notifications have been canceled
// * @param {Object?} scope
// * The scope for the callback function
// */
// exports.cancelAll = function (callback, scope) {
// this.exec('cancelAll', null, callback, scope);
// };
// /**
// * Check if a notification with an ID is present.
// *
// * @param {String} id
// * The ID of the notification
// * @param {Function} callback
// * A callback function to be called with the list
// * @param {Object?} scope
// * The scope for the callback function
// */
// exports.isPresent = function (id, callback, scope) {
// this.exec('isPresent', id || 0, callback, scope);
// };
// /**
// * Check if a notification with an ID is scheduled.
// *
// * @param {String} id
// * The ID of the notification
// * @param {Function} callback
// * A callback function to be called with the list
// * @param {Object?} scope
// * The scope for the callback function
// */
// exports.isScheduled = function (id, callback, scope) {
// this.exec('isScheduled', id || 0, callback, scope);
// };
// /**
// * Check if a notification with an ID was triggered.
// *
// * @param {String} id
// * The ID of the notification
// * @param {Function} callback
// * A callback function to be called with the list
// * @param {Object?} scope
// * The scope for the callback function
// */
// exports.isTriggered = function (id, callback, scope) {
// this.exec('isTriggered', id || 0, callback, scope);
// };
// *
// * List all local notification IDs.
// *
// * @param {Function} callback
// * A callback function to be called with the list
// * @param {Object?} scope
// * The scope for the callback function
// exports.getAllIds = function (callback, scope) {
// this.exec('getAllIds', null, callback, scope);
// };
// /**
// * Alias for `getAllIds`.
// */
// exports.getIds = function () {
// this.getAllIds.apply(this, arguments);
// };
// /**
// * List all scheduled notification IDs.
// *
// * @param {Function} callback
// * A callback function to be called with the list
// * @param {Object?} scope
// * The scope for the callback function
// */
// exports.getScheduledIds = function (callback, scope) {
// this.exec('getScheduledIds', null, callback, scope);
// };
// /**
// * List all triggered notification IDs.
// *
// * @param {Function} callback
// * A callback function to be called with the list
// * @param {Object?} scope
// * The scope for the callback function
// */
// exports.getTriggeredIds = function (callback, scope) {
// this.exec('getTriggeredIds', null, callback, scope);
// };
// /**
// * Property list for given local notifications.
// * If called without IDs, all notification will be returned.
// *
// * @param {Number[]?} ids
// * Set of notification IDs
// * @param {Function} callback
// * A callback function to be called with the list
// * @param {Object?} scope
// * The scope for the callback function
// */
// exports.get = function () {
// var args = Array.apply(null, arguments);
// if (typeof args[0] == 'function') {
// args.unshift([]);
// }
// var ids = args[0],
// callback = args[1],
// scope = args[2];
// if (!Array.isArray(ids)) {
// this.exec('getSingle', Number(ids), callback, scope);
// return;
// }
// ids = this.convertIds(ids);
// this.exec('getAll', ids, callback, scope);
// };
// /**
// * Property list for all local notifications.
// *
// * @param {Function} callback
// * A callback function to be called with the list
// * @param {Object?} scope
// * The scope for the callback function
// */
// exports.getAll = function (callback, scope) {
// this.exec('getAll', null, callback, scope);
// };
// /**
// * Property list for given scheduled notifications.
// * If called without IDs, all notification will be returned.
// *
// * @param {Number[]?} ids
// * Set of notification IDs
// * @param {Function} callback
// * A callback function to be called with the list
// * @param {Object?} scope
// * The scope for the callback function
// */
// exports.getScheduled = function () {
// var args = Array.apply(null, arguments);
// if (typeof args[0] == 'function') {
// args.unshift([]);
// }
// var ids = args[0],
// callback = args[1],
// scope = args[2];
// if (!Array.isArray(ids)) {
// ids = [ids];
// }
// if (!Array.isArray(ids)) {
// this.exec('getSingleScheduled', Number(ids), callback, scope);
// return;
// }
// ids = this.convertIds(ids);
// this.exec('getScheduled', ids, callback, scope);
// };
// /**
// * Property list for all scheduled notifications.
// *
// * @param {Function} callback
// * A callback function to be called with the list
// * @param {Object?} scope
// * The scope for the callback function
// */
// exports.getAllScheduled = function (callback, scope) {
// this.exec('getScheduled', null, callback, scope);
// };
// /**
// * Property list for given triggered notifications.
// * If called without IDs, all notification will be returned.
// *
// * @param {Number[]?} ids
// * Set of notification IDs
// * @param {Function} callback
// * A callback function to be called with the list
// * @param {Object?} scope
// * The scope for the callback function
// */
// exports.getTriggered = function () {
// var args = Array.apply(null, arguments);
// if (typeof args[0] == 'function') {
// args.unshift([]);
// }
// var ids = args[0],
// callback = args[1],
// scope = args[2];
// if (!Array.isArray(ids)) {
// ids = [ids];
// }
// if (!Array.isArray(ids)) {
// this.exec('getSingleTriggered', Number(ids), callback, scope);
// return;
// }
// ids = this.convertIds(ids);
// this.exec('getTriggered', ids, callback, scope);
// };
// /**
// * Property list for all triggered notifications.
// *
// * @param {Function} callback
// * A callback function to be called with the list
// * @param {Object?} scope
// * The scope for the callback function
// */
// exports.getAllTriggered = function (callback, scope) {
// this.exec('getTriggered', null, callback, scope);
// };
// /**********
// * EVENTS *
// **********/
// /**
// * Register callback for given event.
// *
// * @param {String} event
// * The event's name
// * @param {Function} callback
// * The function to be exec as callback
// * @param {Object?} scope
// * The callback function's scope
// */
// exports.on = function (event, callback, scope) {
// if (typeof callback !== "function")
// return;
// if (!this._listener[event]) {
// this._listener[event] = [];
// }
// var item = [callback, scope || window];
// this._listener[event].push(item);
// };
// /**
// * Unregister callback for given event.
// *
// * @param {String} event
// * The event's name
// * @param {Function} callback
// * The function to be exec as callback
// */
// exports.un = function (event, callback) {
// var listener = this._listener[event];
// if (!listener)
// return;
// for (var i = 0; i < listener.length; i++) {
// var fn = listener[i][0];
// if (fn == callback) {
// listener.splice(i, 1);
// break;
// }
// }
// };
/* /*
* Copyright (c) 2013-2015 by appPlant UG. All rights reserved.
*
* @APPPLANT_LICENSE_HEADER_START@
*
* This file contains Original Code and/or Modifications of Original Code * This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apache License * as defined in and that are subject to the Apache License
* Version 2.0 (the 'License'). You may not use this file except in * Version 2.0 (the 'License'). You may not use this file except in
...@@ -17,297 +13,289 @@ ...@@ -17,297 +13,289 @@
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
* Please see the License for the specific language governing rights and * Please see the License for the specific language governing rights and
* limitations under the License. * limitations under the License.
*
* @APPPLANT_LICENSE_HEADER_END@
*/
var exec = require('cordova/exec'),
channel = require('cordova/channel');
/***********
* MEMBERS *
***********/
// Default values
exports._defaults = {
text: '',
title: '',
sound: 'res://platform_default',
badge: 0,
id: 0,
data: undefined,
every: undefined,
at: undefined
};
// listener
exports._listener = {};
// Registered permission flag
exports._registered = false;
/********
* UTIL *
********/
/**
* Merge platform specific properties into the default ones.
*
* @return {Object}
* The default properties for the platform
*/ */
exports.applyPlatformSpecificOptions = function () {
var defaults = this._defaults;
switch (device.platform) {
case 'Android':
defaults.icon = 'res://ic_popup_reminder';
defaults.smallIcon = undefined;
defaults.ongoing = false;
defaults.autoClear = true;
defaults.led = undefined;
defaults.color = undefined;
break;
}
return defaults;
};
/** // var exec = require('cordova/exec'),
* Merge custom properties with the default values. // channel = require('cordova/channel');
*
* @param {Object} options
* Set of custom values // /***********
* // * MEMBERS *
* @retrun {Object} // ***********/
* The merged property list
*/ // // Default values
exports.mergeWithDefaults = function (options) { // exports._defaults = {
var defaults = this.getDefaults(); // text: '',
// title: '',
options.at = this.getValueFor(options, 'at', 'firstAt', 'date'); // sound: 'res://platform_default',
options.text = this.getValueFor(options, 'text', 'message'); // badge: 0,
options.data = this.getValueFor(options, 'data', 'json'); // id: 0,
// data: undefined,
if (defaults.hasOwnProperty('autoClear')) { // every: undefined,
options.autoClear = this.getValueFor(options, 'autoClear', 'autoCancel'); // at: undefined
} // };
if (options.autoClear !== true && options.ongoing) { // // listener
options.autoClear = false; // exports._listener = {};
}
if (options.at === undefined || options.at === null) { // /********
options.at = new Date(); // * UTIL *
} // ********/
for (var key in defaults) { // /**
if (options[key] === null || options[key] === undefined) { // * Merge platform specific properties into the default ones.
if (options.hasOwnProperty(key) && ['data','sound'].indexOf(key) > -1) { // *
options[key] = undefined; // * @return {Object}
} else { // * The default properties for the platform
options[key] = defaults[key]; // */
} // exports.applyPlatformSpecificOptions = function () {
} // var defaults = this._defaults;
}
// switch (device.platform) {
for (key in options) { // case 'Android':
if (!defaults.hasOwnProperty(key)) { // defaults.icon = 'res://ic_popup_reminder';
delete options[key]; // defaults.smallIcon = undefined;
console.warn('Unknown property: ' + key); // defaults.ongoing = false;
} // defaults.autoClear = true;
} // defaults.led = undefined;
// defaults.color = undefined;
return options; // break;
}; // }
// return defaults;
// };
// /**
// * Merge custom properties with the default values.
// *
// * @param {Object} options
// * Set of custom values
// *
// * @retrun {Object}
// * The merged property list
// */
// exports.mergeWithDefaults = function (options) {
// var defaults = this.getDefaults();
// options.at = this.getValueFor(options, 'at', 'firstAt', 'date');
// options.text = this.getValueFor(options, 'text', 'message');
// options.data = this.getValueFor(options, 'data', 'json');
// if (defaults.hasOwnProperty('autoClear')) {
// options.autoClear = this.getValueFor(options, 'autoClear', 'autoCancel');
// }
// if (options.autoClear !== true && options.ongoing) {
// options.autoClear = false;
// }
// if (options.at === undefined || options.at === null) {
// options.at = new Date();
// }
// for (var key in defaults) {
// if (options[key] === null || options[key] === undefined) {
// if (options.hasOwnProperty(key) && ['data','sound'].indexOf(key) > -1) {
// options[key] = undefined;
// } else {
// options[key] = defaults[key];
// }
// }
// }
// for (key in options) {
// if (!defaults.hasOwnProperty(key)) {
// delete options[key];
// console.warn('Unknown property: ' + key);
// }
// }
// return options;
// };
// /**
// * Convert the passed values to their required type.
// *
// * @param {Object} options
// * Set of custom values
// *
// * @retrun {Object}
// * The converted property list
// */
// exports.convertProperties = function (options) {
// if (options.id) {
// if (isNaN(options.id)) {
// options.id = this.getDefaults().id;
// console.warn('Id is not a number: ' + options.id);
// } else {
// options.id = Number(options.id);
// }
// }
// if (options.title) {
// options.title = options.title.toString();
// }
// if (options.text) {
// options.text = options.text.toString();
// }
// if (options.badge) {
// if (isNaN(options.badge)) {
// options.badge = this.getDefaults().badge;
// console.warn('Badge number is not a number: ' + options.id);
// } else {
// options.badge = Number(options.badge);
// }
// }
// if (options.at) {
// if (typeof options.at == 'object') {
// options.at = options.at.getTime();
// }
// options.at = Math.round(options.at/1000);
// }
// if (typeof options.data == 'object') {
// options.data = JSON.stringify(options.data);
// }
// if (options.every) {
// if (device.platform == 'iOS' && typeof options.every != 'string') {
// options.every = this.getDefaults().every;
// var warning = 'Every option is not a string: ' + options.id;
// warning += '. Expects one of: second, minute, hour, day, week, ';
// warning += 'month, year on iOS.';
// console.warn(warning);
// }
// }
// return options;
// };
/** /**
* Convert the passed values to their required type. * Create a callback function to get executed within a specific scope.
* *
* @param {Object} options * @param [ Function ] fn The function to be exec as the callback.
* Set of custom values * @param [ Object ] scope The callback function's scope.
* *
* @retrun {Object} * @return [ Function ]
* The converted property list
*/ */
exports.convertProperties = function (options) { exports.createCallbackFn = function (fn, scope) {
if (options.id) {
if (isNaN(options.id)) {
options.id = this.getDefaults().id;
console.warn('Id is not a number: ' + options.id);
} else {
options.id = Number(options.id);
}
}
if (options.title) {
options.title = options.title.toString();
}
if (options.text) {
options.text = options.text.toString();
}
if (options.badge) {
if (isNaN(options.badge)) {
options.badge = this.getDefaults().badge;
console.warn('Badge number is not a number: ' + options.id);
} else {
options.badge = Number(options.badge);
}
}
if (options.at) {
if (typeof options.at == 'object') {
options.at = options.at.getTime();
}
options.at = Math.round(options.at/1000);
}
if (typeof options.data == 'object') {
options.data = JSON.stringify(options.data);
}
if (options.every) {
if (device.platform == 'iOS' && typeof options.every != 'string') {
options.every = this.getDefaults().every;
var warning = 'Every option is not a string: ' + options.id;
warning += '. Expects one of: second, minute, hour, day, week, ';
warning += 'month, year on iOS.';
console.warn(warning);
}
}
return options;
};
/** if (typeof fn != 'function')
* Create callback, which will be executed within a specific scope.
*
* @param {Function} callbackFn
* The callback function
* @param {Object} scope
* The scope for the function
*
* @return {Function}
* The new callback function
*/
exports.createCallbackFn = function (callbackFn, scope) {
if (typeof callbackFn != 'function')
return; return;
return function () { return function () {
callbackFn.apply(scope || this, arguments); fn.apply(scope || this, arguments);
}; };
}; };
/** // /**
* Convert the IDs to numbers. // * Convert the IDs to numbers.
* // *
* @param {String/Number[]} ids // * @param {String/Number[]} ids
* // *
* @return Array of Numbers // * @return Array of Numbers
*/ // */
exports.convertIds = function (ids) { // exports.convertIds = function (ids) {
var convertedIds = []; // var convertedIds = [];
for (var i = 0; i < ids.length; i++) { // for (var i = 0; i < ids.length; i++) {
convertedIds.push(Number(ids[i])); // convertedIds.push(Number(ids[i]));
} // }
return convertedIds; // return convertedIds;
}; // };
/** // /**
* First found value for the given keys. // * First found value for the given keys.
* // *
* @param {Object} options // * @param {Object} options
* Object with key-value properties // * Object with key-value properties
* @param {String[]} keys* // * @param {String[]} keys*
* Key list // * Key list
*/ // */
exports.getValueFor = function (options) { // exports.getValueFor = function (options) {
var keys = Array.apply(null, arguments).slice(1); // var keys = Array.apply(null, arguments).slice(1);
for (var i = 0; i < keys.length; i++) { // for (var i = 0; i < keys.length; i++) {
var key = keys[i]; // var key = keys[i];
if (options.hasOwnProperty(key)) { // if (options.hasOwnProperty(key)) {
return options[key]; // return options[key];
} // }
} // }
}; // };
/** // /**
* Fire event with given arguments. // * Fire event with given arguments.
* // *
* @param {String} event // * @param {String} event
* The event's name // * The event's name
* @param {args*} // * @param {args*}
* The callback's arguments // * The callback's arguments
*/ // */
exports.fireEvent = function (event) { // exports.fireEvent = function (event) {
var args = Array.apply(null, arguments).slice(1), // var args = Array.apply(null, arguments).slice(1),
listener = this._listener[event]; // listener = this._listener[event];
if (!listener) // if (!listener)
return; // return;
for (var i = 0; i < listener.length; i++) { // for (var i = 0; i < listener.length; i++) {
var fn = listener[i][0], // var fn = listener[i][0],
scope = listener[i][1]; // scope = listener[i][1];
fn.apply(scope, args); // fn.apply(scope, args);
} // }
}; // };
/** // /**
* Execute the native counterpart. // * Execute the native counterpart.
* // *
* @param {String} action // * @param {String} action
* The name of the action // * The name of the action
* @param args[] // * @param args[]
* Array of arguments // * Array of arguments
* @param {Function} callback // * @param {Function} callback
* The callback function // * The callback function
* @param {Object} scope // * @param {Object} scope
* The scope for the function // * The scope for the function
*/ // */
exports.exec = function (action, args, callback, scope) { // exports.exec = function (action, args, callback, scope) {
var fn = this.createCallbackFn(callback, scope), // var fn = this.createCallbackFn(callback, scope),
params = []; // params = [];
if (Array.isArray(args)) { // if (Array.isArray(args)) {
params = args; // params = args;
} else if (args) { // } else if (args) {
params.push(args); // params.push(args);
} // }
exec(fn, null, 'LocalNotification', action, params); // exec(fn, null, 'LocalNotification', action, params);
}; // };
/********* // /*********
* HOOKS * // * HOOKS *
*********/ // *********/
// Called after 'deviceready' event // // Called after 'deviceready' event
channel.deviceready.subscribe(function () { // channel.deviceready.subscribe(function () {
// Device is ready now, the listeners are registered // // Device is ready now, the listeners are registered
// and all queued events can be executed. // // and all queued events can be executed.
exec(null, null, 'LocalNotification', 'deviceready', []); // exec(null, null, 'LocalNotification', 'deviceready', []);
}); // });
// Called before 'deviceready' event // // Called before 'deviceready' event
channel.onCordovaReady.subscribe(function () { // channel.onCordovaReady.subscribe(function () {
// Device plugin is ready now // // Device plugin is ready now
channel.onCordovaInfoReady.subscribe(function () { // channel.onCordovaInfoReady.subscribe(function () {
// Merge platform specifics into defaults // // Merge platform specifics into defaults
exports.applyPlatformSpecificOptions(); // exports.applyPlatformSpecificOptions();
}); // });
}); // });
/* /*
* Copyright (c) 2013-2015 by appPlant UG. All rights reserved.
*
* @APPPLANT_LICENSE_HEADER_START@
*
* This file contains Original Code and/or Modifications of Original Code * This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apache License * as defined in and that are subject to the Apache License
* Version 2.0 (the 'License'). You may not use this file except in * Version 2.0 (the 'License'). You may not use this file except in
...@@ -17,360 +13,324 @@ ...@@ -17,360 +13,324 @@
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
* Please see the License for the specific language governing rights and * Please see the License for the specific language governing rights and
* limitations under the License. * limitations under the License.
*
* @APPPLANT_LICENSE_HEADER_END@
*/
/*************
* INTERFACE *
*************/
/**
* Returns the default settings.
*
* @return {Object}
*/
exports.getDefaults = function () {
return this.core.getDefaults();
};
/**
* Overwrite default settings.
*
* @param {Object} defaults
*/
exports.setDefaults = function (defaults) {
this.core.setDefaults(defaults);
};
/**
* Schedule a new local notification.
*
* @param {Object} notifications
* The notification properties
* @param {Function} callback
* A function to be called after the notification has been canceled
* @param {Object?} scope
* The scope for the callback function
* @param {Object?} args
* skipPermission:true schedules the notifications immediatly without
* registering or checking for permission
*/
exports.schedule = function (notifications, callback, scope, args) {
this.core.schedule(notifications, callback, scope, args);
};
/**
* Update existing notifications specified by IDs in options.
*
* @param {Object} notifications
* The notification properties to update
* @param {Function} callback
* A function to be called after the notification has been updated
* @param {Object?} scope
* The scope for the callback function
* @param {Object?} args
* skipPermission:true schedules the notifications immediatly without
* registering or checking for permission
*/
exports.update = function (notifications, callback, scope, args) {
this.core.update(notifications, callback, scope, args);
};
/**
* Clear the specified notification.
*
* @param {String} id
* The ID of the notification
* @param {Function} callback
* A function to be called after the notification has been cleared
* @param {Object?} scope
* The scope for the callback function
*/
exports.clear = function (ids, callback, scope) {
this.core.clear(ids, callback, scope);
};
/**
* Clear all previously sheduled notifications.
*
* @param {Function} callback
* A function to be called after all notifications have been cleared
* @param {Object?} scope
* The scope for the callback function
*/
exports.clearAll = function (callback, scope) {
this.core.clearAll(callback, scope);
};
/**
* Cancel the specified notifications.
*
* @param {String[]} ids
* The IDs of the notifications
* @param {Function} callback
* A function to be called after the notifications has been canceled
* @param {Object?} scope
* The scope for the callback function
*/
exports.cancel = function (ids, callback, scope) {
this.core.cancel(ids, callback, scope);
};
/**
* Remove all previously registered notifications.
*
* @param {Function} callback
* A function to be called after all notifications have been canceled
* @param {Object?} scope
* The scope for the callback function
*/
exports.cancelAll = function (callback, scope) {
this.core.cancelAll(callback, scope);
};
/**
* Check if a notification with an ID is present.
*
* @param {String} id
* The ID of the notification
* @param {Function} callback
* A callback function to be called with the list
* @param {Object?} scope
* The scope for the callback function
*/
exports.isPresent = function (id, callback, scope) {
this.core.isPresent(id, callback, scope);
};
/**
* Check if a notification with an ID is scheduled.
*
* @param {String} id
* The ID of the notification
* @param {Function} callback
* A callback function to be called with the list
* @param {Object?} scope
* The scope for the callback function
*/
exports.isScheduled = function (id, callback, scope) {
this.core.isScheduled(id, callback, scope);
};
/**
* Check if a notification with an ID was triggered.
*
* @param {String} id
* The ID of the notification
* @param {Function} callback
* A callback function to be called with the list
* @param {Object?} scope
* The scope for the callback function
*/
exports.isTriggered = function (id, callback, scope) {
this.core.isTriggered(id, callback, scope);
};
/**
* List all local notification IDs.
*
* @param {Function} callback
* A callback function to be called with the list
* @param {Object?} scope
* The scope for the callback function
*/
exports.getAllIds = function (callback, scope) {
this.core.getAllIds(callback, scope);
};
/**
* Alias for `getAllIds`.
*/ */
exports.getIds = function () {
this.getAllIds.apply(this, arguments);
};
/**
* List all scheduled notification IDs.
*
* @param {Function} callback
* A callback function to be called with the list
* @param {Object?} scope
* The scope for the callback function
*/
exports.getScheduledIds = function (callback, scope) {
this.core.getScheduledIds(callback, scope);
};
/** /**
* List all triggered notification IDs. * Request permission to show notifications.
* *
* @param {Function} callback * @param [ Function ] callback The function to be exec as the callback.
* A callback function to be called with the list * @param [ Object ] scope The callback function's scope.
* @param {Object?} scope
* The scope for the callback function
*/
exports.getTriggeredIds = function (callback, scope) {
this.core.getTriggeredIds(callback, scope);
};
/**
* Property list for given local notifications.
* If called without IDs, all notification will be returned.
*
* @param {Number[]?} ids
* Set of notification IDs
* @param {Function} callback
* A callback function to be called with the list
* @param {Object?} scope
* The scope for the callback function
*/
exports.get = function () {
this.core.get.apply(this.core, arguments);
};
/**
* Property list for all local notifications.
*
* @param {Function} callback
* A callback function to be called with the list
* @param {Object?} scope
* The scope for the callback function
*/
exports.getAll = function (callback, scope) {
this.core.getAll(callback, scope);
};
/**
* Property list for given scheduled notifications.
* If called without IDs, all notification will be returned.
*
* @param {Number[]?} ids
* Set of notification IDs
* @param {Function} callback
* A callback function to be called with the list
* @param {Object?} scope
* The scope for the callback function
*/
exports.getScheduled = function () {
this.core.getScheduled.apply(this.core, arguments);
};
/**
* Property list for all scheduled notifications.
*
* @param {Function} callback
* A callback function to be called with the list
* @param {Object?} scope
* The scope for the callback function
*/
exports.getAllScheduled = function (callback, scope) {
this.core.getAllScheduled(callback, scope);
};
/**
* Property list for given triggered notifications.
* If called without IDs, all notification will be returned.
* *
* @param {Number[]?} ids * @return [ Void ]
* Set of notification IDs
* @param {Function} callback
* A callback function to be called with the list
* @param {Object?} scope
* The scope for the callback function
*/
exports.getTriggered = function () {
this.core.getTriggered.apply(this.core, arguments);
};
/**
* Property list for all triggered notifications.
*
* @param {Function} callback
* A callback function to be called with the list
* @param {Object?} scope
* The scope for the callback function
*/
exports.getAllTriggered = function (callback, scope) {
this.core.getAllTriggered(callback, scope);
};
/**
* Informs if the app has the permission to show notifications.
*
* @param {Function} callback
* The function to be exec as the callback
* @param {Object?} scope
* The callback function's scope
*/ */
exports.hasPermission = function (callback, scope) { exports.hasPermission = function (callback, scope) {
this.core.hasPermission(callback, scope); this.core.hasPermission(callback, scope);
}; };
/** /**
* Register permission to show notifications if not already granted. * Request permission to show notifications.
* *
* @param {Function} callback * @param [ Function ] callback The function to be exec as the callback.
* The function to be exec as the callback * @param [ Object ] scope The callback function's scope.
* @param {Object?} scope
* The callback function's scope
*/
exports.registerPermission = function (callback, scope) {
this.core.registerPermission(callback, scope);
};
/****************
* DEPRECATIONS *
****************/
/**
* Schedule a new local notification.
*/
exports.add = function () {
console.warn('Depreated: Please use `notification.local.schedule` instead.');
this.schedule.apply(this, arguments);
};
/**
* Register permission to show notifications
* if not already granted.
*/
exports.promptForPermission = function () {
console.warn('Depreated: Please use `notification.local.registerPermission` instead.');
this.registerPermission.apply(this, arguments);
};
/**********
* EVENTS *
**********/
/**
* Register callback for given event.
* *
* @param {String} event * @return [ Void ]
* The event's name
* @param {Function} callback
* The function to be exec as callback
* @param {Object?} scope
* The callback function's scope
*/ */
exports.on = function (event, callback, scope) { exports.requestPermission = function (callback, scope) {
this.core.on(event, callback, scope); this.core.requestPermission(callback, scope);
}; };
/** // /**
* Unregister callback for given event. // * Returns the default settings.
* // *
* @param {String} event // * @return {Object}
* The event's name // */
* @param {Function} callback // exports.getDefaults = function () {
* The function to be exec as callback // return this.core.getDefaults();
*/ // };
exports.un = function (event, callback) {
this.core.un(event, callback); // /**
}; // * Overwrite default settings.
// *
// * @param {Object} defaults
// */
// exports.setDefaults = function (defaults) {
// this.core.setDefaults(defaults);
// };
// /**
// * Schedule a new local notification.
// *
// * @param {Object} notifications
// * The notification properties
// * @param {Function} callback
// * A function to be called after the notification has been canceled
// * @param {Object?} scope
// * The scope for the callback function
// * @param {Object?} args
// * skipPermission:true schedules the notifications immediatly without
// * registering or checking for permission
// */
// exports.schedule = function (notifications, callback, scope, args) {
// this.core.schedule(notifications, callback, scope, args);
// };
// /**
// * Update existing notifications specified by IDs in options.
// *
// * @param {Object} notifications
// * The notification properties to update
// * @param {Function} callback
// * A function to be called after the notification has been updated
// * @param {Object?} scope
// * The scope for the callback function
// * @param {Object?} args
// * skipPermission:true schedules the notifications immediatly without
// * registering or checking for permission
// */
// exports.update = function (notifications, callback, scope, args) {
// this.core.update(notifications, callback, scope, args);
// };
// /**
// * Clear the specified notification.
// *
// * @param {String} id
// * The ID of the notification
// * @param {Function} callback
// * A function to be called after the notification has been cleared
// * @param {Object?} scope
// * The scope for the callback function
// */
// exports.clear = function (ids, callback, scope) {
// this.core.clear(ids, callback, scope);
// };
// /**
// * Clear all previously sheduled notifications.
// *
// * @param {Function} callback
// * A function to be called after all notifications have been cleared
// * @param {Object?} scope
// * The scope for the callback function
// */
// exports.clearAll = function (callback, scope) {
// this.core.clearAll(callback, scope);
// };
// /**
// * Cancel the specified notifications.
// *
// * @param {String[]} ids
// * The IDs of the notifications
// * @param {Function} callback
// * A function to be called after the notifications has been canceled
// * @param {Object?} scope
// * The scope for the callback function
// */
// exports.cancel = function (ids, callback, scope) {
// this.core.cancel(ids, callback, scope);
// };
// /**
// * Remove all previously registered notifications.
// *
// * @param {Function} callback
// * A function to be called after all notifications have been canceled
// * @param {Object?} scope
// * The scope for the callback function
// */
// exports.cancelAll = function (callback, scope) {
// this.core.cancelAll(callback, scope);
// };
// /**
// * Check if a notification with an ID is present.
// *
// * @param {String} id
// * The ID of the notification
// * @param {Function} callback
// * A callback function to be called with the list
// * @param {Object?} scope
// * The scope for the callback function
// */
// exports.isPresent = function (id, callback, scope) {
// this.core.isPresent(id, callback, scope);
// };
// /**
// * Check if a notification with an ID is scheduled.
// *
// * @param {String} id
// * The ID of the notification
// * @param {Function} callback
// * A callback function to be called with the list
// * @param {Object?} scope
// * The scope for the callback function
// */
// exports.isScheduled = function (id, callback, scope) {
// this.core.isScheduled(id, callback, scope);
// };
// *
// * Check if a notification with an ID was triggered.
// *
// * @param {String} id
// * The ID of the notification
// * @param {Function} callback
// * A callback function to be called with the list
// * @param {Object?} scope
// * The scope for the callback function
// exports.isTriggered = function (id, callback, scope) {
// this.core.isTriggered(id, callback, scope);
// };
// /**
// * List all local notification IDs.
// *
// * @param {Function} callback
// * A callback function to be called with the list
// * @param {Object?} scope
// * The scope for the callback function
// */
// exports.getAllIds = function (callback, scope) {
// this.core.getAllIds(callback, scope);
// };
// /**
// * Alias for `getAllIds`.
// */
// exports.getIds = function () {
// this.getAllIds.apply(this, arguments);
// };
// /**
// * List all scheduled notification IDs.
// *
// * @param {Function} callback
// * A callback function to be called with the list
// * @param {Object?} scope
// * The scope for the callback function
// */
// exports.getScheduledIds = function (callback, scope) {
// this.core.getScheduledIds(callback, scope);
// };
// /**
// * List all triggered notification IDs.
// *
// * @param {Function} callback
// * A callback function to be called with the list
// * @param {Object?} scope
// * The scope for the callback function
// */
// exports.getTriggeredIds = function (callback, scope) {
// this.core.getTriggeredIds(callback, scope);
// };
// /**
// * Property list for given local notifications.
// * If called without IDs, all notification will be returned.
// *
// * @param {Number[]?} ids
// * Set of notification IDs
// * @param {Function} callback
// * A callback function to be called with the list
// * @param {Object?} scope
// * The scope for the callback function
// */
// exports.get = function () {
// this.core.get.apply(this.core, arguments);
// };
// /**
// * Property list for all local notifications.
// *
// * @param {Function} callback
// * A callback function to be called with the list
// * @param {Object?} scope
// * The scope for the callback function
// */
// exports.getAll = function (callback, scope) {
// this.core.getAll(callback, scope);
// };
// /**
// * Property list for given scheduled notifications.
// * If called without IDs, all notification will be returned.
// *
// * @param {Number[]?} ids
// * Set of notification IDs
// * @param {Function} callback
// * A callback function to be called with the list
// * @param {Object?} scope
// * The scope for the callback function
// */
// exports.getScheduled = function () {
// this.core.getScheduled.apply(this.core, arguments);
// };
// /**
// * Property list for all scheduled notifications.
// *
// * @param {Function} callback
// * A callback function to be called with the list
// * @param {Object?} scope
// * The scope for the callback function
// */
// exports.getAllScheduled = function (callback, scope) {
// this.core.getAllScheduled(callback, scope);
// };
// /**
// * Property list for given triggered notifications.
// * If called without IDs, all notification will be returned.
// *
// * @param {Number[]?} ids
// * Set of notification IDs
// * @param {Function} callback
// * A callback function to be called with the list
// * @param {Object?} scope
// * The scope for the callback function
// */
// exports.getTriggered = function () {
// this.core.getTriggered.apply(this.core, arguments);
// };
// /**
// * Property list for all triggered notifications.
// *
// * @param {Function} callback
// * A callback function to be called with the list
// * @param {Object?} scope
// * The scope for the callback function
// */
// exports.getAllTriggered = function (callback, scope) {
// this.core.getAllTriggered(callback, scope);
// };
// /**
// * Register callback for given event.
// *
// * @param {String} event
// * The event's name
// * @param {Function} callback
// * The function to be exec as callback
// * @param {Object?} scope
// * The callback function's scope
// */
// exports.on = function (event, callback, scope) {
// this.core.on(event, callback, scope);
// };
// /**
// * Unregister callback for given event.
// *
// * @param {String} event
// * The event's name
// * @param {Function} callback
// * The function to be exec as callback
// */
// exports.un = function (event, callback) {
// this.core.un(event, callback);
// };
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment