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,413 +63,486 @@ ...@@ -69,413 +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
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 - (void) check:(CDVInvokedUrlCommand*)command
byType:(APPNotificationType)type;
{ {
[self.commandDelegate runInBackground:^{ [self.center getNotificationSettingsWithCompletionHandler:^(UNNotificationSettings* settings) {
NSArray* ids = command.arguments; BOOL authorized = settings.authorizationStatus == UNAuthorizationStatusAuthorized;
NSArray* notifications; BOOL enabled = settings.notificationCenterSetting == UNNotificationSettingEnabled;
BOOL permitted = authorized && enabled;
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; CDVPluginResult* result;
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK
messageAsDictionary:[notifications firstObject]]; messageAsBool:permitted];
[self.commandDelegate sendPluginResult:result [self.commandDelegate sendPluginResult:result
callbackId:command.callbackId]; callbackId:command.callbackId];
...@@ -483,221 +550,114 @@ ...@@ -483,221 +550,114 @@
} }
/** /**
* Property list for given triggered notifications. * Request for permission to show notifcations.
*
* @param type
* Notification life cycle type
* @param ids
* The IDs of the notifications
*/ */
- (void) getOptions:(CDVInvokedUrlCommand*)command - (void) request:(CDVInvokedUrlCommand*)command
byType:(APPNotificationType)type;
{ {
[self.commandDelegate runInBackground:^{ UNAuthorizationOptions options =
NSArray* ids = command.arguments; (UNAuthorizationOptionBadge | UNAuthorizationOptionSound | UNAuthorizationOptionAlert);
NSArray* notifications;
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) { [self.center requestAuthorizationWithOptions:options completionHandler:^(BOOL granted, NSError* e) {
if (type == NotifcationTypeAll && ids.count == 0) { [self check:command];
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 -
#pragma mark Core Logic #pragma mark Core Logic
/** ///**
* Schedule the local notification. // * Schedule the local notification.
*/ // */
- (void) scheduleNotification:(UNMutableNotificationContent*)notification //- (void) scheduleNotification:(UNMutableNotificationContent*)notification
{ //{
[self.center addNotificationRequest:notification.request // [self.center addNotificationRequest:notification.request
withCompletionHandler:^(NSError* e) { // withCompletionHandler:^(NSError* e) {
[self fireEvent:@"add" notification:notification.request]; // [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]; ///**
} // * Update the local notification.
// */
/** //- (void) updateNotification:(UILocalNotification*)notification
* Cancel all local notifications. // withOptions:(NSDictionary*)newOptions
*/ //{
- (void) cancelAllNotifications // NSMutableDictionary* options = [notification.userInfo mutableCopy];
{ //
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) { // [options addEntriesFromDictionary:newOptions];
[self.center cancelAllNotifications]; // [options setObject:[NSDate date] forKey:@"updatedAt"];
} else { //
[self.app cancelAllLocalNotifications]; //// notification = [[UILocalNotification alloc]
} //// initWithOptions:options];
////
[self.app setApplicationIconBadgeNumber:0]; //// [self scheduleLocalNotification:notification];
} //}
//
/** ///**
* Clear all local notifications. // * Cancel all local notifications.
*/ // */
- (void) clearAllNotifications //- (void) cancelAllNotifications
{ //{
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) { // if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) {
[self.center clearAllNotifications]; // [self.center cancelAllNotifications];
} else { // } else {
[self.app clearAllLocalNotifications]; // [self.app cancelAllLocalNotifications];
} // }
//
[self.app setApplicationIconBadgeNumber:0]; // [self.app setApplicationIconBadgeNumber:0];
} //}
//
#pragma mark - ///**
#pragma mark Delegates // * Clear all local notifications.
// */
/** //- (void) clearAllNotifications
* Called when a notification is delivered to a foreground app. //{
*/ // if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) {
- (void) userNotificationCenter:(UNUserNotificationCenter *)center // [self.center clearAllNotifications];
willPresentNotification:(UNNotification *)notification // } else {
withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler // [self.app clearAllLocalNotifications];
{ // }
[self fireEvent:@"trigger" notification:notification.request]; //
completionHandler(UNAuthorizationOptionBadge | UNAuthorizationOptionSound | UNAuthorizationOptionAlert); // [self.app setApplicationIconBadgeNumber:0];
} //}
//
//#pragma mark -
/** //#pragma mark Delegates
* Called to let your app know which action was selected by the user for a given //
* notification. ///**
*/ // * Called when a notification is delivered to a foreground app.
- (void) userNotificationCenter:(UNUserNotificationCenter *)center // */
didReceiveNotificationResponse:(UNNotificationResponse *)response //- (void) userNotificationCenter:(UNUserNotificationCenter *)center
withCompletionHandler:(void (^)())completionHandler // willPresentNotification:(UNNotification *)notification
{ // withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler
UNNotificationRequest* notification = response.notification.request; //{
// [self fireEvent:@"trigger" notification:notification.request];
[self fireEvent:@"click" notification:notification]; // completionHandler(UNAuthorizationOptionBadge | UNAuthorizationOptionSound | UNAuthorizationOptionAlert);
//}
if ([notification.options isRepeating]) { //
[self.center clearNotification:notification]; //
[self fireEvent:@"clear" notification:notification]; ///**
} else { // * Called to let your app know which action was selected by the user for a given
[self.center cancelNotification:notification]; // * notification.
[self fireEvent:@"cancel" notification:notification]; // */
} //- (void) userNotificationCenter:(UNUserNotificationCenter *)center
// didReceiveNotificationResponse:(UNNotificationResponse *)response
completionHandler(); // 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();
//}
#pragma mark - #pragma mark -
#pragma mark Life Cycle #pragma mark Life Cycle
...@@ -715,40 +675,40 @@ ...@@ -715,40 +675,40 @@
#pragma mark - #pragma mark -
#pragma mark Helper #pragma mark Helper
/** ///**
* Retrieves the application state // * Retrieves the application state
* // *
* @return // * @return
* Either "background" or "foreground" // * Either "background" or "foreground"
*/ // */
- (NSString*) applicationState //- (NSString*) applicationState
{ //{
UIApplicationState state = [self.app applicationState]; // UIApplicationState state = [self.app applicationState];
//
bool isActive = state == UIApplicationStateActive; // bool isActive = state == UIApplicationStateActive;
//
return isActive ? @"foreground" : @"background"; // return isActive ? @"foreground" : @"background";
} //}
//
/** ///**
* Simply invokes the callback without any parameter. // * Simply invokes the callback without any parameter.
*/ // */
- (void) execCallback:(CDVInvokedUrlCommand*)command //- (void) execCallback:(CDVInvokedUrlCommand*)command
{ //{
CDVPluginResult *result = [CDVPluginResult // CDVPluginResult *result = [CDVPluginResult
resultWithStatus:CDVCommandStatus_OK]; // resultWithStatus:CDVCommandStatus_OK];
//
[self.commandDelegate sendPluginResult:result // [self.commandDelegate sendPluginResult:result
callbackId:command.callbackId]; // callbackId:command.callbackId];
} //}
//
/** ///**
* Short hand for shared application instance. // * Short hand for shared application instance.
*/ // */
- (UIApplication*) app //- (UIApplication*) app
{ //{
return [UIApplication sharedApplication]; // return [UIApplication sharedApplication];
} //}
/** /**
* Short hand for current notification center. * Short hand for current notification center.
...@@ -758,199 +718,199 @@ ...@@ -758,199 +718,199 @@
return [UNUserNotificationCenter currentNotificationCenter]; return [UNUserNotificationCenter currentNotificationCenter];
} }
/** ///**
* Fire general event. // * Fire general event.
*/ // */
- (void) fireEvent:(NSString*)event //- (void) fireEvent:(NSString*)event
{ //{
[self fireEvent:event notification:NULL]; // [self fireEvent:event notification:NULL];
} //}
//
/** ///**
* Fire event for local notification. // * Fire event for local notification.
*/ // */
- (void) fireEvent:(NSString*)event //- (void) fireEvent:(NSString*)event
notification:(UNNotificationRequest*)notification // notification:(UNNotificationRequest*)notification
{ //{
NSString* js; // NSString* js;
NSString* appState = [self applicationState]; // NSString* appState = [self applicationState];
NSString* params = [NSString stringWithFormat:@"\"%@\"", appState]; // NSString* params = [NSString stringWithFormat:@"\"%@\"", appState];
//
if (notification) { // if (notification) {
NSString* args = [notification encodeToJSON]; // NSString* args = [notification encodeToJSON];
params = [NSString stringWithFormat:@"%@,'%@'", args, appState]; // params = [NSString stringWithFormat:@"%@,'%@'", args, appState];
} // }
//
js = [NSString stringWithFormat: // js = [NSString stringWithFormat:
@"cordova.plugins.notification.local.core.fireEvent('%@', %@)", // @"cordova.plugins.notification.local.core.fireEvent('%@', %@)",
event, params]; // event, params];
//
if (deviceready) { // if (deviceready) {
[self.commandDelegate evalJs:js]; // [self.commandDelegate evalJs:js];
} else { // } else {
[self.eventQueue addObject:js]; // [self.eventQueue addObject:js];
} // }
} //}
//
#pragma mark - //#pragma mark -
#pragma mark ios 9 //#pragma mark ios 9
//
/** ///**
* Schedule the local notification. // * Schedule the local notification.
*/ // */
- (void) scheduleLocalNotification:(UILocalNotification*)notification //- (void) scheduleLocalNotification:(UILocalNotification*)notification
{ //{
[self cancelForerunnerLocalNotification:notification]; // [self cancelForerunnerLocalNotification:notification];
[self.app scheduleLocalNotification:notification]; // [self.app scheduleLocalNotification:notification];
} //}
//
/** ///**
* Update the local notification. // * Update the local notification.
*/ // */
- (void) updateLocalNotification:(UILocalNotification*)notification //- (void) updateLocalNotification:(UILocalNotification*)notification
withOptions:(NSDictionary*)newOptions // withOptions:(NSDictionary*)newOptions
{ //{
NSMutableDictionary* options = [notification.userInfo mutableCopy]; // NSMutableDictionary* options = [notification.userInfo mutableCopy];
//
[options addEntriesFromDictionary:newOptions]; // [options addEntriesFromDictionary:newOptions];
[options setObject:[NSDate date] forKey:@"updatedAt"]; // [options setObject:[NSDate date] forKey:@"updatedAt"];
//
notification = [[UILocalNotification alloc] // notification = [[UILocalNotification alloc]
initWithOptions:options]; // initWithOptions:options];
//
[self scheduleLocalNotification:notification]; // [self scheduleLocalNotification:notification];
} //}
//
/** ///**
* Cancel a maybe given forerunner with the same ID. // * Cancel a maybe given forerunner with the same ID.
*/ // */
- (void) cancelForerunnerLocalNotification:(UILocalNotification*)notification //- (void) cancelForerunnerLocalNotification:(UILocalNotification*)notification
{ //{
NSNumber* id = notification.options.id; // NSNumber* id = notification.options.id;
UILocalNotification* forerunner; // UILocalNotification* forerunner;
//
forerunner = [self.app localNotificationWithId:id]; // forerunner = [self.app localNotificationWithId:id];
//
if (!forerunner) // if (!forerunner)
return; // return;
//
[self.app cancelLocalNotification:forerunner]; // [self.app cancelLocalNotification:forerunner];
} //}
//
/** ///**
* Cancels all non-repeating local notification older then // * Cancels all non-repeating local notification older then
* a specific amount of seconds // * a specific amount of seconds
*/ // */
- (void) cancelAllNotificationsWhichAreOlderThen:(float)seconds //- (void) cancelAllNotificationsWhichAreOlderThen:(float)seconds
{ //{
NSArray* notifications; // NSArray* notifications;
//
notifications = [self.app localNotifications]; // notifications = [self.app localNotifications];
//
for (UILocalNotification* notification in notifications) // for (UILocalNotification* notification in notifications)
{ // {
if (![notification isRepeating] // if (![notification isRepeating]
&& notification.timeIntervalSinceFireDate > seconds) // && notification.timeIntervalSinceFireDate > seconds)
{ // {
[self.app cancelLocalNotification:notification]; // [self.app cancelLocalNotification:notification];
[self fireEvent:@"cancel" localnotification:notification]; // [self fireEvent:@"cancel" localnotification:notification];
} // }
} // }
} //}
//
/** ///**
* Calls the cancel or trigger event after a local notification was received. // * Calls the cancel or trigger event after a local notification was received.
* Cancels the local notification if autoCancel was set to true. // * Cancels the local notification if autoCancel was set to true.
*/ // */
- (void) didReceiveLocalNotification:(NSNotification*)localNotification //- (void) didReceiveLocalNotification:(NSNotification*)localNotification
{ //{
UILocalNotification* notification = [localNotification object]; // UILocalNotification* notification = [localNotification object];
//
if ([notification userInfo] == NULL || [notification wasUpdated]) // if ([notification userInfo] == NULL || [notification wasUpdated])
return; // return;
//
NSTimeInterval timeInterval = [notification timeIntervalSinceLastTrigger]; // NSTimeInterval timeInterval = [notification timeIntervalSinceLastTrigger];
NSString* event = timeInterval < 0.2 && deviceready ? @"trigger" : @"click"; // NSString* event = timeInterval < 0.2 && deviceready ? @"trigger" : @"click";
//
[self fireEvent:event localnotification:notification]; // [self fireEvent:event localnotification:notification];
//
if (![event isEqualToString:@"click"]) // if (![event isEqualToString:@"click"])
return; // return;
//
if ([notification isRepeating]) { // if ([notification isRepeating]) {
[self fireEvent:@"clear" localnotification:notification]; // [self fireEvent:@"clear" localnotification:notification];
} else { // } else {
[self.app cancelLocalNotification:notification]; // [self.app cancelLocalNotification:notification];
[self fireEvent:@"cancel" localnotification:notification]; // [self fireEvent:@"cancel" localnotification:notification];
} // }
} //}
//
/** ///**
* Called when app has started // * Called when app has started
* (by clicking on a local notification). // * (by clicking on a local notification).
*/ // */
- (void) didFinishLaunchingWithOptions:(NSNotification*)notification //- (void) didFinishLaunchingWithOptions:(NSNotification*)notification
{ //{
NSDictionary* launchOptions = [notification userInfo]; // NSDictionary* launchOptions = [notification userInfo];
//
UILocalNotification* localNotification; // UILocalNotification* localNotification;
//
localNotification = [launchOptions objectForKey: // localNotification = [launchOptions objectForKey:
UIApplicationLaunchOptionsLocalNotificationKey]; // UIApplicationLaunchOptionsLocalNotificationKey];
//
if (localNotification) { // if (localNotification) {
[self didReceiveLocalNotification: // [self didReceiveLocalNotification:
[NSNotification notificationWithName:CDVLocalNotification // [NSNotification notificationWithName:CDVLocalNotification
object:localNotification]]; // object:localNotification]];
} // }
} //}
//
/** ///**
* Called on notification settings registration is completed. // * Called on notification settings registration is completed.
*/ // */
- (void) didRegisterUserNotificationSettings:(UIUserNotificationSettings*)settings //- (void) didRegisterUserNotificationSettings:(UIUserNotificationSettings*)settings
{ //{
if (_command) { // if (_command) {
[self hasPermission:_command]; // [self hasPermission:_command];
_command = NULL; // _command = NULL;
} // }
} //}
//
/** ///**
* Cancels all single non-repeating notifications which are older then 5 days // * Cancels all single non-repeating notifications which are older then 5 days
* before the app terminates. // * before the app terminates.
*/ // */
- (void) onAppTerminate //- (void) onAppTerminate
{ //{
[self cancelAllNotificationsWhichAreOlderThen:432000]; // [self cancelAllNotificationsWhichAreOlderThen:432000];
} //}
//
/** ///**
* Fire event for local notification. // * Fire event for local notification.
*/ // */
- (void) fireEvent:(NSString*)event localnotification:(UILocalNotification*)notification //- (void) fireEvent:(NSString*)event localnotification:(UILocalNotification*)notification
{ //{
NSString* js; // NSString* js;
NSString* params = [NSString stringWithFormat: // NSString* params = [NSString stringWithFormat:
@"\"%@\"", self.applicationState]; // @"\"%@\"", self.applicationState];
//
if (notification) { // if (notification) {
NSString* args = [notification encodeToJSON]; // NSString* args = [notification encodeToJSON];
//
params = [NSString stringWithFormat: // params = [NSString stringWithFormat:
@"%@,'%@'", // @"%@,'%@'",
args, self.applicationState]; // args, self.applicationState];
} // }
//
js = [NSString stringWithFormat: // js = [NSString stringWithFormat:
@"cordova.plugins.notification.local.core.fireEvent('%@', %@)", // @"cordova.plugins.notification.local.core.fireEvent('%@', %@)",
event, params]; // event, params];
//
if (deviceready) { // if (deviceready) {
[self.commandDelegate evalJs:js]; // [self.commandDelegate evalJs:js];
} else { // } else {
[self.eventQueue addObject:js]; // [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