Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
cordova-plugin-local-notifications
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Nabil Sadki
cordova-plugin-local-notifications
Commits
ca85d768
Commit
ca85d768
authored
Jun 29, 2017
by
Sebastián Katzer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Comment out everything eccept ios
parent
4f195194
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
1890 additions
and
2011 deletions
+1890
-2011
plugin.xml
plugin.xml
+9
-19
APPLocalNotification.h
src/ios/APPLocalNotification.h
+45
-46
APPLocalNotification.m
src/ios/APPLocalNotification.m
+815
-855
local-notification-core.js
www/local-notification-core.js
+444
-462
local-notification-util.js
www/local-notification-util.js
+272
-284
local-notification.js
www/local-notification.js
+305
-345
No files found.
plugin.xml
View file @
ca85d768
...
@@ -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>
src/ios/APPLocalNotification.h
View file @
ca85d768
/*
/*
* 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
;
// Re
gister
permission to show notifications
// Re
quest
permission to show notifications
-
(
void
)
re
gisterPermission
:(
CDVInvokedUrlCommand
*
)
command
;
-
(
void
)
re
quest
:(
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
src/ios/APPLocalNotification.m
View file @
ca85d768
/*
/*
* Copyright (c) 2013
-2015 by appPlant UG
. All rights reserved.
* Copyright (c) 2013
by appPlant GmbH
. All rights reserved.
*
*
* @APPPLANT_LICENSE_HEADER_START@
* @APPPLANT_LICENSE_HEADER_START@
*
*
...
@@ -22,16 +22,10 @@
...
@@ -22,16 +22,10 @@
*/
*/
#import "APPLocalNotification.h"
#import "APPLocalNotification.h"
#import "APPLocalNotificationOptions.h"
//#import "APPLocalNotificationOptions.h"
#import "UNUserNotificationCenter+APPLocalNotification.h"
//#import "UNUserNotificationCenter+APPLocalNotification.h"
#import "UNNotificationRequest+APPLocalNotification.h"
//#import "UNNotificationRequest+APPLocalNotification.h"
#import "UNMutableNotificationContent+APPLocalNotification.h"
//#import "UNMutableNotificationContent+APPLocalNotification.h"
#import "APPLocalNotificationOptions.ios9.h"
#import "UIApplication+APPLocalNotification.ios9.h"
#import "UILocalNotification+APPLocalNotification.ios9.h"
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
@interface
APPLocalNotification
()
@interface
APPLocalNotification
()
...
@@ -69,264 +63,486 @@
...
@@ -69,264 +63,486 @@
[
eventQueue
removeAllObjects
];
[
eventQueue
removeAllObjects
];
}
}
//
///**
// * Schedule a set of notifications.
// *
// * @param properties
// * A dict of properties for each notification
// */
//- (void) schedule:(CDVInvokedUrlCommand*)command
//{
// NSArray* notifications = command.arguments;
//
// [self.commandDelegate runInBackground:^{
// if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) {
// for (NSDictionary* options in notifications) {
// UNMutableNotificationContent* notification;
//
// notification = [[UNMutableNotificationContent alloc]
// initWithOptions:options];
//
// [self scheduleNotification:notification];
// //[self fireEvent:@"add" notification:notification];
// }
// } else {
// for (NSDictionary* options in notifications) {
// UILocalNotification* notification;
//
// notification = [[UILocalNotification alloc]
// initWithOptions:options];
//
// [self scheduleLocalNotification:[notification copy]];
// [self fireEvent:@"schedule" localnotification:notification];
//
// if (notifications.count > 1) {
// [NSThread sleepForTimeInterval:0.01];
// }
// }
// }
//
// [self execCallback:command];
// }];
//}
//
///**
// * Update a set of notifications.
// *
// * @param properties
// * A dict of properties for each notification
// */
//- (void) update:(CDVInvokedUrlCommand*)command
//{
// NSArray* notifications = command.arguments;
//
// [self.commandDelegate runInBackground:^{
// if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) {
// for (NSDictionary* options in notifications) {
// NSNumber* id = [options objectForKey:@"id"];
// UNNotificationRequest* notification;
//
// notification = [self.center getNotificationWithId:id];
//
// if (!notification)
// continue;
//
// // [self updateNotification:[notification copy]
// // withOptions:options];
// //
// // [self fireEvent:@"update" notification:notification];
// //
// // if (notifications.count > 1) {
// // [NSThread sleepForTimeInterval:0.01];
// // }
// }
// } else {
// for (NSDictionary* options in notifications) {
// NSNumber* id = [options objectForKey:@"id"];
// UILocalNotification* notification;
//
// notification = [self.app localNotificationWithId:id];
//
// if (!notification)
// continue;
//
// [self updateLocalNotification:[notification copy]
// withOptions:options];
//
// [self fireEvent:@"update" localnotification:notification];
//
// if (notifications.count > 1) {
// [NSThread sleepForTimeInterval:0.01];
// }
// }
// }
//
// [self execCallback:command];
// }];
//}
//
///**
// * Cancel a set of notifications.
// *
// * @param ids
// * The IDs of the notifications
// */
//- (void) cancel:(CDVInvokedUrlCommand*)command
//{
// [self.commandDelegate runInBackground:^{
// if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) {
// for (NSNumber* id in command.arguments) {
// UNNotificationRequest* notification;
//
// notification = [self.center getNotificationWithId:id];
//
// if (!notification)
// continue;
//
// [self.center cancelNotification:notification];
// [self fireEvent:@"cancel" notification:notification];
// }
// } else {
// for (NSNumber* id in command.arguments) {
// UILocalNotification* notification;
//
// notification = [self.app localNotificationWithId:id];
//
// if (!notification)
// continue;
//
// [self.app cancelLocalNotification:notification];
// [self fireEvent:@"cancel" localnotification:notification];
// }
// }
//
// [self execCallback:command];
// }];
//}
//
///**
// * Cancel all local notifications.
// */
//- (void) cancelAll:(CDVInvokedUrlCommand*)command
//{
// [self.commandDelegate runInBackground:^{
// [self cancelAllNotifications];
// [self fireEvent:@"cancelall"];
// [self execCallback:command];
// }];
//}
//
///**
// * Clear a set of notifications.
// *
// * @param ids
// * The IDs of the notifications
// */
//- (void) clear:(CDVInvokedUrlCommand*)command
//{
// [self.commandDelegate runInBackground:^{
// if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) {
// for (NSNumber* id in command.arguments) {
// UNNotificationRequest* notification;
//
// notification = [self.center getNotificationWithId:id];
//
// if (!notification)
// continue;
//
// [self.center clearNotification:notification];
// [self fireEvent:@"clear" notification:notification];
// }
// } else {
// for (NSNumber* id in command.arguments) {
// UILocalNotification* notification;
//
// notification = [self.app localNotificationWithId:id];
//
// if (!notification)
// continue;
//
// [self.app clearLocalNotification:notification];
// [self fireEvent:@"clear" localnotification:notification];
// }
// }
//
// [self execCallback:command];
// }];
//}
//
///**
// * Clear all local notifications.
// */
//- (void) clearAll:(CDVInvokedUrlCommand*)command
//{
// [self.commandDelegate runInBackground:^{
// [self clearAllNotifications];
// [self fireEvent:@"clearall"];
// [self execCallback:command];
// }];
//}
//
///**
// * If a notification by ID is present.
// *
// * @param id
// * The ID of the notification
// */
//- (void) isPresent:(CDVInvokedUrlCommand *)command
//{
// [self isPresent:command type:NotifcationTypeAll];
//}
//
///**
// * If a notification by ID is scheduled.
// *
// * @param id
// * The ID of the notification
// */
//- (void) isScheduled:(CDVInvokedUrlCommand*)command
//{
// [self isPresent:command type:NotifcationTypeScheduled];
//}
//
///**
// * Check if a notification with an ID is triggered.
// *
// * @param id
// * The ID of the notification
// */
//- (void) isTriggered:(CDVInvokedUrlCommand*)command
//{
// [self isPresent:command type:NotifcationTypeTriggered];
//}
//
///**
// * Check if a notification with an ID exists.
// *
// * @param type
// * The notification life cycle type
// */
//- (void) isPresent:(CDVInvokedUrlCommand*)command
// type:(APPNotificationType)type;
//{
// [self.commandDelegate runInBackground:^{
// NSNumber* id = [command argumentAtIndex:0];
// BOOL exist;
//
// if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) {
// exist = [self.center notificationExist:id type:type];
// } else {
// if (type == NotifcationTypeAll) {
// exist = [self.app localNotificationExist:id];
// } else {
// exist = [self.app localNotificationExist:id type:type];
// }
// }
//
// CDVPluginResult* result;
// result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK
// messageAsBool:exist];
//
// [self.commandDelegate sendPluginResult:result
// callbackId:command.callbackId];
// }];
//}
//
///**
// * List all ids from all local notifications.
// */
//- (void) getAllIds:(CDVInvokedUrlCommand*)command
//{
// [self getIds:command byType:NotifcationTypeAll];
//}
//
///**
// * List all ids from all pending notifications.
// */
//- (void) getScheduledIds:(CDVInvokedUrlCommand*)command
//{
// [self getIds:command byType:NotifcationTypeScheduled];
//}
//
///**
// * List all ids from all triggered notifications.
// */
//- (void) getTriggeredIds:(CDVInvokedUrlCommand*)command
//{
// [self getIds:command byType:NotifcationTypeTriggered];
//}
//
///**
// * List of ids for given local notifications.
// *
// * @param type
// * Notification life cycle type
// * @param ids
// * The IDs of the notifications
// */
//- (void) getIds:(CDVInvokedUrlCommand*)command
// byType:(APPNotificationType)type;
//{
// [self.commandDelegate runInBackground:^{
// NSArray* ids;
//
// if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) {
// ids = [self.center getNotificationIdsByType:type];
// } else {
// if (type == NotifcationTypeAll) {
// ids = [self.app localNotificationIds];
// } else {
// ids = [self.app localNotificationIdsByType:type];
// }
// }
//
// CDVPluginResult* result;
// result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK
// messageAsArray:ids];
//
// [self.commandDelegate sendPluginResult:result
// callbackId:command.callbackId];
// }];
//}
//
///**
// * Propertys for given local notification.
// */
//- (void) getSingle:(CDVInvokedUrlCommand*)command
//{
// [self getOption:command byType:NotifcationTypeAll];
//}
//
///**
// * Propertya for given scheduled notification.
// */
//- (void) getSingleScheduled:(CDVInvokedUrlCommand*)command
//{
// [self getOption:command byType:NotifcationTypeScheduled];
//}
//
//// Propertys for given triggered notification
//- (void) getSingleTriggered:(CDVInvokedUrlCommand*)command
//{
// [self getOption:command byType:NotifcationTypeTriggered];
//}
//
///**
// * Property list for given local notifications.
// *
// * @param ids
// * The IDs of the notifications
// */
//- (void) getAll:(CDVInvokedUrlCommand*)command
//{
// [self getOptions:command byType:NotifcationTypeAll];
//}
//
///**
// * Property list for given scheduled notifications.
// *
// * @param ids
// * The IDs of the notifications
// */
//- (void) getScheduled:(CDVInvokedUrlCommand*)command
//{
// [self getOptions:command byType:NotifcationTypeScheduled];
//}
//
///**
// * Property list for given triggered notifications.
// *
// * @param ids
// * The IDs of the notifications
// */
//- (void) getTriggered:(CDVInvokedUrlCommand *)command
//{
// [self getOptions:command byType:NotifcationTypeTriggered];
//}
//
///**
// * Propertys for given triggered notification.
// *
// * @param type
// * Notification life cycle type
// * @param ids
// * The ID of the notification
// */
//- (void) getOption:(CDVInvokedUrlCommand*)command
// byType:(APPNotificationType)type;
//{
// [self.commandDelegate runInBackground:^{
// NSArray* ids = command.arguments;
// NSArray* notifications;
//
// if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) {
// notifications = [self.center getNotificationOptionsByType:type
// andId:ids];
// } else {
// if (type == NotifcationTypeAll) {
// notifications = [self.app localNotificationOptionsById:ids];
// }
// else {
// notifications = [self.app localNotificationOptionsByType:type
// andId:ids];
// }
// }
//
// CDVPluginResult* result;
// result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK
// messageAsDictionary:[notifications firstObject]];
//
// [self.commandDelegate sendPluginResult:result
// callbackId:command.callbackId];
// }];
//}
//
///**
// * Property list for given triggered notifications.
// *
// * @param type
// * Notification life cycle type
// * @param ids
// * The IDs of the notifications
// */
//- (void) getOptions:(CDVInvokedUrlCommand*)command
// byType:(APPNotificationType)type;
//{
// [self.commandDelegate runInBackground:^{
// NSArray* ids = command.arguments;
// NSArray* notifications;
//
// if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) {
// if (type == NotifcationTypeAll && ids.count == 0) {
// notifications = [self.center getNotificationOptions];
// }
// else if (type == NotifcationTypeAll) {
// notifications = [self.center getNotificationOptionsById:ids];
// }
// else if (ids.count == 0) {
// notifications = [self.center getNotificationOptionsByType:type];
// }
// else {
// notifications = [self.center getNotificationOptionsByType:type
// andId:ids];
// }
// } else {
// if (type == NotifcationTypeAll && ids.count == 0) {
// notifications = [self.app localNotificationOptions];
// }
// else if (type == NotifcationTypeAll) {
// notifications = [self.app localNotificationOptionsById:ids];
// }
// else if (ids.count == 0) {
// notifications = [self.app localNotificationOptionsByType:type];
// }
// else {
// notifications = [self.app localNotificationOptionsByType:type
// andId:ids];
// }
// }
//
// CDVPluginResult* result;
// result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK
// messageAsArray:notifications];
//
// [self.commandDelegate sendPluginResult:result
// callbackId:command.callbackId];
// }];
//}
/**
/**
* Schedule a set of notifications.
* Check for permission to show notifications.
*
* @param properties
* A dict of properties for each notification
*/
-
(
void
)
schedule
:(
CDVInvokedUrlCommand
*
)
command
{
NSArray
*
notifications
=
command
.
arguments
;
[
self
.
commandDelegate
runInBackground
:
^
{
if
(
SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO
(
@"10.0"
))
{
for
(
NSDictionary
*
options
in
notifications
)
{
UNMutableNotificationContent
*
notification
;
notification
=
[[
UNMutableNotificationContent
alloc
]
initWithOptions
:
options
];
[
self
scheduleNotification
:
notification
];
//[self fireEvent:@"add" notification:notification];
}
}
else
{
for
(
NSDictionary
*
options
in
notifications
)
{
UILocalNotification
*
notification
;
notification
=
[[
UILocalNotification
alloc
]
initWithOptions
:
options
];
[
self
scheduleLocalNotification
:[
notification
copy
]];
[
self
fireEvent
:
@"schedule"
localnotification
:
notification
];
if
(
notifications
.
count
>
1
)
{
[
NSThread
sleepForTimeInterval
:
0
.
01
];
}
}
}
[
self
execCallback
:
command
];
}];
}
/**
* Update a set of notifications.
*
* @param properties
* A dict of properties for each notification
*/
-
(
void
)
update
:(
CDVInvokedUrlCommand
*
)
command
{
NSArray
*
notifications
=
command
.
arguments
;
[
self
.
commandDelegate
runInBackground
:
^
{
if
(
SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO
(
@"10.0"
))
{
for
(
NSDictionary
*
options
in
notifications
)
{
NSNumber
*
id
=
[
options
objectForKey
:
@"id"
];
UNNotificationRequest
*
notification
;
notification
=
[
self
.
center
getNotificationWithId
:
id
];
if
(
!
notification
)
continue
;
// [self updateNotification:[notification copy]
// withOptions:options];
//
// [self fireEvent:@"update" notification:notification];
//
// if (notifications.count > 1) {
// [NSThread sleepForTimeInterval:0.01];
// }
}
}
else
{
for
(
NSDictionary
*
options
in
notifications
)
{
NSNumber
*
id
=
[
options
objectForKey
:
@"id"
];
UILocalNotification
*
notification
;
notification
=
[
self
.
app
localNotificationWithId
:
id
];
if
(
!
notification
)
continue
;
[
self
updateLocalNotification
:[
notification
copy
]
withOptions
:
options
];
[
self
fireEvent
:
@"update"
localnotification
:
notification
];
if
(
notifications
.
count
>
1
)
{
[
NSThread
sleepForTimeInterval
:
0
.
01
];
}
}
}
[
self
execCallback
:
command
];
}];
}
/**
* Cancel a set of notifications.
*
* @param ids
* The IDs of the notifications
*/
-
(
void
)
cancel
:(
CDVInvokedUrlCommand
*
)
command
{
[
self
.
commandDelegate
runInBackground
:
^
{
if
(
SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO
(
@"10.0"
))
{
for
(
NSNumber
*
id
in
command
.
arguments
)
{
UNNotificationRequest
*
notification
;
notification
=
[
self
.
center
getNotificationWithId
:
id
];
if
(
!
notification
)
continue
;
[
self
.
center
cancelNotification
:
notification
];
[
self
fireEvent
:
@"cancel"
notification
:
notification
];
}
}
else
{
for
(
NSNumber
*
id
in
command
.
arguments
)
{
UILocalNotification
*
notification
;
notification
=
[
self
.
app
localNotificationWithId
:
id
];
if
(
!
notification
)
continue
;
[
self
.
app
cancelLocalNotification
:
notification
];
[
self
fireEvent
:
@"cancel"
localnotification
:
notification
];
}
}
[
self
execCallback
:
command
];
}];
}
/**
* Cancel all local notifications.
*/
-
(
void
)
cancelAll
:(
CDVInvokedUrlCommand
*
)
command
{
[
self
.
commandDelegate
runInBackground
:
^
{
[
self
cancelAllNotifications
];
[
self
fireEvent
:
@"cancelall"
];
[
self
execCallback
:
command
];
}];
}
/**
* Clear a set of notifications.
*
* @param ids
* The IDs of the notifications
*/
-
(
void
)
clear
:(
CDVInvokedUrlCommand
*
)
command
{
[
self
.
commandDelegate
runInBackground
:
^
{
if
(
SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO
(
@"10.0"
))
{
for
(
NSNumber
*
id
in
command
.
arguments
)
{
UNNotificationRequest
*
notification
;
notification
=
[
self
.
center
getNotificationWithId
:
id
];
if
(
!
notification
)
continue
;
[
self
.
center
clearNotification
:
notification
];
[
self
fireEvent
:
@"clear"
notification
:
notification
];
}
}
else
{
for
(
NSNumber
*
id
in
command
.
arguments
)
{
UILocalNotification
*
notification
;
notification
=
[
self
.
app
localNotificationWithId
:
id
];
if
(
!
notification
)
continue
;
[
self
.
app
clearLocalNotification
:
notification
];
[
self
fireEvent
:
@"clear"
localnotification
:
notification
];
}
}
[
self
execCallback
:
command
];
}];
}
/**
* Clear all local notifications.
*/
-
(
void
)
clearAll
:(
CDVInvokedUrlCommand
*
)
command
{
[
self
.
commandDelegate
runInBackground
:
^
{
[
self
clearAllNotifications
];
[
self
fireEvent
:
@"clearall"
];
[
self
execCallback
:
command
];
}];
}
/**
* If a notification by ID is present.
*
* @param id
* The ID of the notification
*/
-
(
void
)
isPresent
:(
CDVInvokedUrlCommand
*
)
command
{
[
self
isPresent
:
command
type
:
NotifcationTypeAll
];
}
/**
* If a notification by ID is scheduled.
*
* @param id
* The ID of the notification
*/
-
(
void
)
isScheduled
:(
CDVInvokedUrlCommand
*
)
command
{
[
self
isPresent
:
command
type
:
NotifcationTypeScheduled
];
}
/**
* Check if a notification with an ID is triggered.
*
* @param id
* The ID of the notification
*/
-
(
void
)
isTriggered
:(
CDVInvokedUrlCommand
*
)
command
{
[
self
isPresent
:
command
type
:
NotifcationTypeTriggered
];
}
/**
* Check if a notification with an ID exists.
*
* @param type
* The notification life cycle type
*/
*/
-
(
void
)
isPresent
:(
CDVInvokedUrlCommand
*
)
command
-
(
void
)
check
:(
CDVInvokedUrlCommand
*
)
command
type
:(
APPNotificationType
)
type
;
{
{
[
self
.
commandDelegate
runInBackground
:
^
{
[
self
.
center
getNotificationSettingsWithCompletionHandler
:
^
(
UNNotificationSettings
*
settings
)
{
NSNumber
*
id
=
[
command
argumentAtIndex
:
0
];
BOOL
authorized
=
settings
.
authorizationStatus
==
UNAuthorizationStatusAuthorized
;
BOOL
exist
;
BOOL
enabled
=
settings
.
notificationCenterSetting
==
UNNotificationSettingEnabled
;
BOOL
permitted
=
authorized
&&
enabled
;
if
(
SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO
(
@"10.0"
))
{
exist
=
[
self
.
center
notificationExist
:
id
type
:
type
];
}
else
{
if
(
type
==
NotifcationTypeAll
)
{
exist
=
[
self
.
app
localNotificationExist
:
id
];
}
else
{
exist
=
[
self
.
app
localNotificationExist
:
id
type
:
type
];
}
}
CDVPluginResult
*
result
;
CDVPluginResult
*
result
;
result
=
[
CDVPluginResult
resultWithStatus
:
CDVCommandStatus_OK
result
=
[
CDVPluginResult
resultWithStatus
:
CDVCommandStatus_OK
messageAsBool
:
exist
];
messageAsBool
:
permitted
];
[
self
.
commandDelegate
sendPluginResult
:
result
[
self
.
commandDelegate
sendPluginResult
:
result
callbackId
:
command
.
callbackId
];
callbackId
:
command
.
callbackId
];
...
@@ -334,623 +550,367 @@
...
@@ -334,623 +550,367 @@
}
}
/**
/**
* List all ids from all local notifications.
* Request for permission to show notifcations.
*/
-
(
void
)
getAllIds
:
(
CDVInvokedUrlCommand
*
)
command
{
[
self
getIds
:
command
byType
:
NotifcationTypeAll
];
}
/**
* List all ids from all pending notifications.
*/
*/
-
(
void
)
getScheduledIds
:
(
CDVInvokedUrlCommand
*
)
command
-
(
void
)
request
:(
CDVInvokedUrlCommand
*
)
command
{
{
[
self
getIds
:
command
byType
:
NotifcationTypeScheduled
];
UNAuthorizationOptions
options
=
}
(
UNAuthorizationOptionBadge
|
UNAuthorizationOptionSound
|
UNAuthorizationOptionAlert
);
/**
[
self
.
center
requestAuthorizationWithOptions
:
options
completionHandler
:
^
(
BOOL
granted
,
NSError
*
e
)
{
* List all ids from all triggered notifications.
[
self
check
:
command
];
*/
}];
-
(
void
)
getTriggeredIds
:
(
CDVInvokedUrlCommand
*
)
command
{
[
self
getIds
:
command
byType
:
NotifcationTypeTriggered
];
}
}
/**
#pragma mark -
* List of ids for given local notifications.
#pragma mark Core Logic
*
* @param type
* Notification life cycle type
* @param ids
* The IDs of the notifications
*/
-
(
void
)
getIds
:
(
CDVInvokedUrlCommand
*
)
command
byType
:
(
APPNotificationType
)
type
;
{
[
self
.
commandDelegate
runInBackground
:
^
{
NSArray
*
ids
;
if
(
SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO
(
@"10.0"
))
{
ids
=
[
self
.
center
getNotificationIdsByType
:
type
];
}
else
{
if
(
type
==
NotifcationTypeAll
)
{
ids
=
[
self
.
app
localNotificationIds
];
}
else
{
ids
=
[
self
.
app
localNotificationIdsByType
:
type
];
}
}
CDVPluginResult
*
result
;
///**
result
=
[
CDVPluginResult
resultWithStatus
:
CDVCommandStatus_OK
// * Schedule the local notification.
messageAsArray
:
ids
];
// */
//- (void) scheduleNotification:(UNMutableNotificationContent*)notification
//{
// [self.center addNotificationRequest:notification.request
// withCompletionHandler:^(NSError* e) {
// [self fireEvent:@"add" notification:notification.request];
// }];
//}
//
///**
// * Update the local notification.
// */
//- (void) updateNotification:(UILocalNotification*)notification
// withOptions:(NSDictionary*)newOptions
//{
// NSMutableDictionary* options = [notification.userInfo mutableCopy];
//
// [options addEntriesFromDictionary:newOptions];
// [options setObject:[NSDate date] forKey:@"updatedAt"];
//
//// notification = [[UILocalNotification alloc]
//// initWithOptions:options];
////
//// [self scheduleLocalNotification:notification];
//}
//
///**
// * Cancel all local notifications.
// */
//- (void) cancelAllNotifications
//{
// if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) {
// [self.center cancelAllNotifications];
// } else {
// [self.app cancelAllLocalNotifications];
// }
//
// [self.app setApplicationIconBadgeNumber:0];
//}
//
///**
// * Clear all local notifications.
// */
//- (void) clearAllNotifications
//{
// if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) {
// [self.center clearAllNotifications];
// } else {
// [self.app clearAllLocalNotifications];
// }
//
// [self.app setApplicationIconBadgeNumber:0];
//}
//
//#pragma mark -
//#pragma mark Delegates
//
///**
// * Called when a notification is delivered to a foreground app.
// */
//- (void) userNotificationCenter:(UNUserNotificationCenter *)center
// willPresentNotification:(UNNotification *)notification
// withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler
//{
// [self fireEvent:@"trigger" notification:notification.request];
// completionHandler(UNAuthorizationOptionBadge | UNAuthorizationOptionSound | UNAuthorizationOptionAlert);
//}
//
//
///**
// * Called to let your app know which action was selected by the user for a given
// * notification.
// */
//- (void) userNotificationCenter:(UNUserNotificationCenter *)center
// didReceiveNotificationResponse:(UNNotificationResponse *)response
// withCompletionHandler:(void (^)())completionHandler
//{
// UNNotificationRequest* notification = response.notification.request;
//
// [self fireEvent:@"click" notification:notification];
//
// if ([notification.options isRepeating]) {
// [self.center clearNotification:notification];
// [self fireEvent:@"clear" notification:notification];
// } else {
// [self.center cancelNotification:notification];
// [self fireEvent:@"cancel" notification:notification];
// }
//
// completionHandler();
//}
[
self
.
commandDelegate
sendPluginResult
:
result
#pragma mark -
callbackId
:
command
.
callbackId
];
#pragma mark Life Cycle
}];
}
/**
/**
*
Propertys for given local notification
.
*
Registers obervers after plugin was initialized
.
*/
*/
-
(
void
)
getSingle
:
(
CDVInvokedUrlCommand
*
)
command
-
(
void
)
pluginInitialize
{
{
[
self
getOption
:
command
byType
:
NotifcationTypeAll
];
eventQueue
=
[[
NSMutableArray
alloc
]
init
];
}
/**
self
.
center
.
delegate
=
self
;
* Propertya for given scheduled notification.
*/
-
(
void
)
getSingleScheduled
:
(
CDVInvokedUrlCommand
*
)
command
{
[
self
getOption
:
command
byType
:
NotifcationTypeScheduled
];
}
}
// Propertys for given triggered notification
#pragma mark -
-
(
void
)
getSingleTriggered
:
(
CDVInvokedUrlCommand
*
)
command
#pragma mark Helper
{
[
self
getOption
:
command
byType
:
NotifcationTypeTriggered
];
}
/**
///**
* Property list for given local notifications.
// * Retrieves the application state
*
// *
* @param ids
// * @return
* The IDs of the notifications
// * Either "background" or "foreground"
*/
// */
-
(
void
)
getAll
:
(
CDVInvokedUrlCommand
*
)
command
//- (NSString*) applicationState
{
//{
[
self
getOptions
:
command
byType
:
NotifcationTypeAll
];
// UIApplicationState state = [self.app applicationState];
}
//
// bool isActive = state == UIApplicationStateActive;
//
// return isActive ? @"foreground" : @"background";
//}
//
///**
// * Simply invokes the callback without any parameter.
// */
//- (void) execCallback:(CDVInvokedUrlCommand*)command
//{
// CDVPluginResult *result = [CDVPluginResult
// resultWithStatus:CDVCommandStatus_OK];
//
// [self.commandDelegate sendPluginResult:result
// callbackId:command.callbackId];
//}
//
///**
// * Short hand for shared application instance.
// */
//- (UIApplication*) app
//{
// return [UIApplication sharedApplication];
//}
/**
/**
* Property list for given scheduled notifications.
* Short hand for current notification center.
*
* @param ids
* The IDs of the notifications
*/
*/
-
(
void
)
getScheduled
:
(
CDVInvokedUrlCommand
*
)
command
-
(
UNUserNotificationCenter
*
)
center
{
{
[
self
getOptions
:
command
byType
:
NotifcationTypeScheduled
];
return
[
UNUserNotificationCenter
currentNotificationCenter
];
}
}
/**
///**
* Property list for given triggered notifications.
// * Fire general event.
*
// */
* @param ids
//- (void) fireEvent:(NSString*)event
* The IDs of the notifications
//{
*/
// [self fireEvent:event notification:NULL];
-
(
void
)
getTriggered
:
(
CDVInvokedUrlCommand
*
)
command
//}
{
//
[
self
getOptions
:
command
byType
:
NotifcationTypeTriggered
];
///**
}
// * Fire event for local notification.
// */
/**
//- (void) fireEvent:(NSString*)event
* Propertys for given triggered notification.
// notification:(UNNotificationRequest*)notification
*
//{
* @param type
// NSString* js;
* Notification life cycle type
// NSString* appState = [self applicationState];
* @param ids
// NSString* params = [NSString stringWithFormat:@"\"%@\"", appState];
* The ID of the notification
//
*/
// if (notification) {
-
(
void
)
getOption
:
(
CDVInvokedUrlCommand
*
)
command
// NSString* args = [notification encodeToJSON];
byType
:
(
APPNotificationType
)
type
;
// params = [NSString stringWithFormat:@"%@,'%@'", args, appState];
{
// }
[
self
.
commandDelegate
runInBackground
:
^
{
//
NSArray
*
ids
=
command
.
arguments
;
// js = [NSString stringWithFormat:
NSArray
*
notifications
;
// @"cordova.plugins.notification.local.core.fireEvent('%@', %@)",
// event, params];
if
(
SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO
(
@"10.0"
))
{
//
notifications
=
[
self
.
center
getNotificationOptionsByType
:
type
// if (deviceready) {
andId
:
ids
];
// [self.commandDelegate evalJs:js];
}
else
{
// } else {
if
(
type
==
NotifcationTypeAll
)
{
// [self.eventQueue addObject:js];
notifications
=
[
self
.
app
localNotificationOptionsById
:
ids
];
// }
}
//}
else
{
//
notifications
=
[
self
.
app
localNotificationOptionsByType
:
type
//#pragma mark -
andId
:
ids
];
//#pragma mark ios 9
}
//
}
///**
// * Schedule the local notification.
CDVPluginResult
*
result
;
// */
result
=
[
CDVPluginResult
resultWithStatus
:
CDVCommandStatus_OK
//- (void) scheduleLocalNotification:(UILocalNotification*)notification
messageAsDictionary
:[
notifications
firstObject
]];
//{
// [self cancelForerunnerLocalNotification:notification];
[
self
.
commandDelegate
sendPluginResult
:
result
// [self.app scheduleLocalNotification:notification];
callbackId
:
command
.
callbackId
];
//}
}];
//
}
///**
// * Update the local notification.
/**
// */
* Property list for given triggered notifications.
//- (void) updateLocalNotification:(UILocalNotification*)notification
*
// withOptions:(NSDictionary*)newOptions
* @param type
//{
* Notification life cycle type
// NSMutableDictionary* options = [notification.userInfo mutableCopy];
* @param ids
//
* The IDs of the notifications
// [options addEntriesFromDictionary:newOptions];
*/
// [options setObject:[NSDate date] forKey:@"updatedAt"];
-
(
void
)
getOptions
:
(
CDVInvokedUrlCommand
*
)
command
//
byType
:
(
APPNotificationType
)
type
;
{
[
self
.
commandDelegate
runInBackground
:
^
{
NSArray
*
ids
=
command
.
arguments
;
NSArray
*
notifications
;
if
(
SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO
(
@"10.0"
))
{
if
(
type
==
NotifcationTypeAll
&&
ids
.
count
==
0
)
{
notifications
=
[
self
.
center
getNotificationOptions
];
}
else
if
(
type
==
NotifcationTypeAll
)
{
notifications
=
[
self
.
center
getNotificationOptionsById
:
ids
];
}
else
if
(
ids
.
count
==
0
)
{
notifications
=
[
self
.
center
getNotificationOptionsByType
:
type
];
}
else
{
notifications
=
[
self
.
center
getNotificationOptionsByType
:
type
andId
:
ids
];
}
}
else
{
if
(
type
==
NotifcationTypeAll
&&
ids
.
count
==
0
)
{
notifications
=
[
self
.
app
localNotificationOptions
];
}
else
if
(
type
==
NotifcationTypeAll
)
{
notifications
=
[
self
.
app
localNotificationOptionsById
:
ids
];
}
else
if
(
ids
.
count
==
0
)
{
notifications
=
[
self
.
app
localNotificationOptionsByType
:
type
];
}
else
{
notifications
=
[
self
.
app
localNotificationOptionsByType
:
type
andId
:
ids
];
}
}
CDVPluginResult
*
result
;
result
=
[
CDVPluginResult
resultWithStatus
:
CDVCommandStatus_OK
messageAsArray
:
notifications
];
[
self
.
commandDelegate
sendPluginResult
:
result
callbackId
:
command
.
callbackId
];
}];
}
/**
* Inform if the app has the permission to show
* badges and local notifications.
*/
-
(
void
)
hasPermission
:
(
CDVInvokedUrlCommand
*
)
command
{
if
(
SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO
(
@"10.0"
))
{
[
self
.
commandDelegate
runInBackground
:
^
{
[
self
.
center
getNotificationSettingsWithCompletionHandler
:
^
(
UNNotificationSettings
*
settings
)
{
BOOL
authorized
=
settings
.
authorizationStatus
==
UNAuthorizationStatusAuthorized
;
BOOL
enabled
=
settings
.
notificationCenterSetting
==
UNNotificationSettingEnabled
;
BOOL
permitted
=
authorized
&&
enabled
;
CDVPluginResult
*
result
;
result
=
[
CDVPluginResult
resultWithStatus
:
CDVCommandStatus_OK
messageAsBool
:
permitted
];
[
self
.
commandDelegate
sendPluginResult
:
result
callbackId
:
command
.
callbackId
];
}];
}];
}
else
{
[
self
.
commandDelegate
runInBackground
:
^
{
CDVPluginResult
*
result
;
BOOL
hasPermission
;
hasPermission
=
[
self
.
app
hasPermissionToScheduleLocalNotifications
];
result
=
[
CDVPluginResult
resultWithStatus
:
CDVCommandStatus_OK
messageAsBool
:
hasPermission
];
[
self
.
commandDelegate
sendPluginResult
:
result
callbackId
:
command
.
callbackId
];
}];
}
}
/**
* Ask for permission to show badges.
*/
-
(
void
)
registerPermission
:
(
CDVInvokedUrlCommand
*
)
command
{
if
(
SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO
(
@"10.0"
))
{
[
self
.
commandDelegate
runInBackground
:
^
{
UNAuthorizationOptions
options
=
(
UNAuthorizationOptionBadge
|
UNAuthorizationOptionSound
|
UNAuthorizationOptionAlert
);
[
self
.
center
requestAuthorizationWithOptions
:
options
completionHandler
:
^
(
BOOL
granted
,
NSError
*
e
)
{
[
self
hasPermission
:
command
];
}];
}];
}
else
{
if
([[
UIApplication
sharedApplication
]
respondsToSelector
:
@selector
(
registerUserNotificationSettings
:)])
{
_command
=
command
;
[
self
.
commandDelegate
runInBackground
:
^
{
[
self
.
app
registerPermissionToScheduleLocalNotifications
];
}];
}
else
{
[
self
hasPermission
:
command
];
}
}
}
#pragma mark -
#pragma mark Core Logic
/**
* Schedule the local notification.
*/
-
(
void
)
scheduleNotification
:
(
UNMutableNotificationContent
*
)
notification
{
[
self
.
center
addNotificationRequest
:
notification
.
request
withCompletionHandler
:
^
(
NSError
*
e
)
{
[
self
fireEvent
:
@"add"
notification
:
notification
.
request
];
}];
}
/**
* Update the local notification.
*/
-
(
void
)
updateNotification
:
(
UILocalNotification
*
)
notification
withOptions
:
(
NSDictionary
*
)
newOptions
{
NSMutableDictionary
*
options
=
[
notification
.
userInfo
mutableCopy
];
[
options
addEntriesFromDictionary
:
newOptions
];
[
options
setObject
:[
NSDate
date
]
forKey
:
@"updatedAt"
];
// notification = [[UILocalNotification alloc]
// notification = [[UILocalNotification alloc]
// initWithOptions:options];
// initWithOptions:options];
//
//
// [self scheduleLocalNotification:notification];
// [self scheduleLocalNotification:notification];
}
//}
//
/**
///**
* Cancel all local notifications.
// * Cancel a maybe given forerunner with the same ID.
*/
// */
-
(
void
)
cancelAllNotifications
//- (void) cancelForerunnerLocalNotification:(UILocalNotification*)notification
{
//{
if
(
SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO
(
@"10.0"
))
{
// NSNumber* id = notification.options.id;
[
self
.
center
cancelAllNotifications
];
// UILocalNotification* forerunner;
}
else
{
//
[
self
.
app
cancelAllLocalNotifications
];
// forerunner = [self.app localNotificationWithId:id];
}
//
// if (!forerunner)
[
self
.
app
setApplicationIconBadgeNumber
:
0
];
// return;
}
//
// [self.app cancelLocalNotification:forerunner];
/**
//}
* Clear all local notifications.
//
*/
///**
-
(
void
)
clearAllNotifications
// * Cancels all non-repeating local notification older then
{
// * a specific amount of seconds
if
(
SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO
(
@"10.0"
))
{
// */
[
self
.
center
clearAllNotifications
];
//- (void) cancelAllNotificationsWhichAreOlderThen:(float)seconds
}
else
{
//{
[
self
.
app
clearAllLocalNotifications
];
// NSArray* notifications;
}
//
// notifications = [self.app localNotifications];
[
self
.
app
setApplicationIconBadgeNumber
:
0
];
//
}
// for (UILocalNotification* notification in notifications)
// {
#pragma mark -
// if (![notification isRepeating]
#pragma mark Delegates
// && notification.timeIntervalSinceFireDate > seconds)
// {
/**
// [self.app cancelLocalNotification:notification];
* Called when a notification is delivered to a foreground app.
// [self fireEvent:@"cancel" localnotification:notification];
*/
// }
-
(
void
)
userNotificationCenter
:
(
UNUserNotificationCenter
*
)
center
// }
willPresentNotification
:
(
UNNotification
*
)
notification
//}
withCompletionHandler
:
(
void
(
^
)(
UNNotificationPresentationOptions
))
completionHandler
//
{
///**
[
self
fireEvent
:
@"trigger"
notification
:
notification
.
request
];
// * Calls the cancel or trigger event after a local notification was received.
completionHandler
(
UNAuthorizationOptionBadge
|
UNAuthorizationOptionSound
|
UNAuthorizationOptionAlert
);
// * Cancels the local notification if autoCancel was set to true.
}
// */
//- (void) didReceiveLocalNotification:(NSNotification*)localNotification
//{
/**
// UILocalNotification* notification = [localNotification object];
* Called to let your app know which action was selected by the user for a given
//
* notification.
// if ([notification userInfo] == NULL || [notification wasUpdated])
*/
// return;
-
(
void
)
userNotificationCenter
:
(
UNUserNotificationCenter
*
)
center
//
didReceiveNotificationResponse
:
(
UNNotificationResponse
*
)
response
// NSTimeInterval timeInterval = [notification timeIntervalSinceLastTrigger];
withCompletionHandler
:
(
void
(
^
)())
completionHandler
// NSString* event = timeInterval < 0.2 && deviceready ? @"trigger" : @"click";
{
//
UNNotificationRequest
*
notification
=
response
.
notification
.
request
;
// [self fireEvent:event localnotification:notification];
//
[
self
fireEvent
:
@"click"
notification
:
notification
];
// if (![event isEqualToString:@"click"])
// return;
if
([
notification
.
options
isRepeating
])
{
//
[
self
.
center
clearNotification
:
notification
];
// if ([notification isRepeating]) {
[
self
fireEvent
:
@"clear"
notification
:
notification
];
// [self fireEvent:@"clear" localnotification:notification];
}
else
{
// } else {
[
self
.
center
cancelNotification
:
notification
];
// [self.app cancelLocalNotification:notification];
[
self
fireEvent
:
@"cancel"
notification
:
notification
];
// [self fireEvent:@"cancel" localnotification:notification];
}
// }
//}
completionHandler
();
//
}
///**
// * Called when app has started
#pragma mark -
// * (by clicking on a local notification).
#pragma mark Life Cycle
// */
//- (void) didFinishLaunchingWithOptions:(NSNotification*)notification
/**
//{
* Registers obervers after plugin was initialized.
// NSDictionary* launchOptions = [notification userInfo];
*/
//
-
(
void
)
pluginInitialize
// UILocalNotification* localNotification;
{
//
eventQueue
=
[[
NSMutableArray
alloc
]
init
];
// localNotification = [launchOptions objectForKey:
// UIApplicationLaunchOptionsLocalNotificationKey];
self
.
center
.
delegate
=
self
;
//
}
// if (localNotification) {
// [self didReceiveLocalNotification:
#pragma mark -
// [NSNotification notificationWithName:CDVLocalNotification
#pragma mark Helper
// object:localNotification]];
// }
/**
//}
* Retrieves the application state
//
*
///**
* @return
// * Called on notification settings registration is completed.
* Either "background" or "foreground"
// */
*/
//- (void) didRegisterUserNotificationSettings:(UIUserNotificationSettings*)settings
-
(
NSString
*
)
applicationState
//{
{
// if (_command) {
UIApplicationState
state
=
[
self
.
app
applicationState
];
// [self hasPermission:_command];
// _command = NULL;
bool
isActive
=
state
==
UIApplicationStateActive
;
// }
//}
return
isActive
?
@"foreground"
:
@"background"
;
//
}
///**
// * Cancels all single non-repeating notifications which are older then 5 days
/**
// * before the app terminates.
* Simply invokes the callback without any parameter.
// */
*/
//- (void) onAppTerminate
-
(
void
)
execCallback
:
(
CDVInvokedUrlCommand
*
)
command
//{
{
// [self cancelAllNotificationsWhichAreOlderThen:432000];
CDVPluginResult
*
result
=
[
CDVPluginResult
//}
resultWithStatus
:
CDVCommandStatus_OK
];
//
///**
[
self
.
commandDelegate
sendPluginResult
:
result
// * Fire event for local notification.
callbackId
:
command
.
callbackId
];
// */
}
//- (void) fireEvent:(NSString*)event localnotification:(UILocalNotification*)notification
//{
/**
// NSString* js;
* Short hand for shared application instance.
// NSString* params = [NSString stringWithFormat:
*/
// @"\"%@\"", self.applicationState];
-
(
UIApplication
*
)
app
//
{
// if (notification) {
return
[
UIApplication
sharedApplication
];
// NSString* args = [notification encodeToJSON];
}
//
// params = [NSString stringWithFormat:
/**
// @"%@,'%@'",
* Short hand for current notification center.
// args, self.applicationState];
*/
// }
-
(
UNUserNotificationCenter
*
)
center
//
{
// js = [NSString stringWithFormat:
return
[
UNUserNotificationCenter
currentNotificationCenter
];
// @"cordova.plugins.notification.local.core.fireEvent('%@', %@)",
}
// event, params];
//
/**
// if (deviceready) {
* Fire general event.
// [self.commandDelegate evalJs:js];
*/
// } else {
-
(
void
)
fireEvent
:
(
NSString
*
)
event
// [self.eventQueue addObject:js];
{
// }
[
self
fireEvent
:
event
notification
:
NULL
];
//}
}
/**
* Fire event for local notification.
*/
-
(
void
)
fireEvent
:
(
NSString
*
)
event
notification
:
(
UNNotificationRequest
*
)
notification
{
NSString
*
js
;
NSString
*
appState
=
[
self
applicationState
];
NSString
*
params
=
[
NSString
stringWithFormat
:
@"
\"
%@
\"
"
,
appState
];
if
(
notification
)
{
NSString
*
args
=
[
notification
encodeToJSON
];
params
=
[
NSString
stringWithFormat
:
@"%@,'%@'"
,
args
,
appState
];
}
js
=
[
NSString
stringWithFormat
:
@"cordova.plugins.notification.local.core.fireEvent('%@', %@)"
,
event
,
params
];
if
(
deviceready
)
{
[
self
.
commandDelegate
evalJs
:
js
];
}
else
{
[
self
.
eventQueue
addObject
:
js
];
}
}
#pragma mark -
#pragma mark ios 9
/**
* Schedule the local notification.
*/
-
(
void
)
scheduleLocalNotification
:
(
UILocalNotification
*
)
notification
{
[
self
cancelForerunnerLocalNotification
:
notification
];
[
self
.
app
scheduleLocalNotification
:
notification
];
}
/**
* Update the local notification.
*/
-
(
void
)
updateLocalNotification
:
(
UILocalNotification
*
)
notification
withOptions
:
(
NSDictionary
*
)
newOptions
{
NSMutableDictionary
*
options
=
[
notification
.
userInfo
mutableCopy
];
[
options
addEntriesFromDictionary
:
newOptions
];
[
options
setObject
:[
NSDate
date
]
forKey
:
@"updatedAt"
];
notification
=
[[
UILocalNotification
alloc
]
initWithOptions
:
options
];
[
self
scheduleLocalNotification
:
notification
];
}
/**
* Cancel a maybe given forerunner with the same ID.
*/
-
(
void
)
cancelForerunnerLocalNotification
:
(
UILocalNotification
*
)
notification
{
NSNumber
*
id
=
notification
.
options
.
id
;
UILocalNotification
*
forerunner
;
forerunner
=
[
self
.
app
localNotificationWithId
:
id
];
if
(
!
forerunner
)
return
;
[
self
.
app
cancelLocalNotification
:
forerunner
];
}
/**
* Cancels all non-repeating local notification older then
* a specific amount of seconds
*/
-
(
void
)
cancelAllNotificationsWhichAreOlderThen
:
(
float
)
seconds
{
NSArray
*
notifications
;
notifications
=
[
self
.
app
localNotifications
];
for
(
UILocalNotification
*
notification
in
notifications
)
{
if
(
!
[
notification
isRepeating
]
&&
notification
.
timeIntervalSinceFireDate
>
seconds
)
{
[
self
.
app
cancelLocalNotification
:
notification
];
[
self
fireEvent
:
@"cancel"
localnotification
:
notification
];
}
}
}
/**
* Calls the cancel or trigger event after a local notification was received.
* Cancels the local notification if autoCancel was set to true.
*/
-
(
void
)
didReceiveLocalNotification
:
(
NSNotification
*
)
localNotification
{
UILocalNotification
*
notification
=
[
localNotification
object
];
if
([
notification
userInfo
]
==
NULL
||
[
notification
wasUpdated
])
return
;
NSTimeInterval
timeInterval
=
[
notification
timeIntervalSinceLastTrigger
];
NSString
*
event
=
timeInterval
<
0
.
2
&&
deviceready
?
@"trigger"
:
@"click"
;
[
self
fireEvent
:
event
localnotification
:
notification
];
if
(
!
[
event
isEqualToString
:
@"click"
])
return
;
if
([
notification
isRepeating
])
{
[
self
fireEvent
:
@"clear"
localnotification
:
notification
];
}
else
{
[
self
.
app
cancelLocalNotification
:
notification
];
[
self
fireEvent
:
@"cancel"
localnotification
:
notification
];
}
}
/**
* Called when app has started
* (by clicking on a local notification).
*/
-
(
void
)
didFinishLaunchingWithOptions
:
(
NSNotification
*
)
notification
{
NSDictionary
*
launchOptions
=
[
notification
userInfo
];
UILocalNotification
*
localNotification
;
localNotification
=
[
launchOptions
objectForKey
:
UIApplicationLaunchOptionsLocalNotificationKey
];
if
(
localNotification
)
{
[
self
didReceiveLocalNotification
:
[
NSNotification
notificationWithName
:
CDVLocalNotification
object
:
localNotification
]];
}
}
/**
* Called on notification settings registration is completed.
*/
-
(
void
)
didRegisterUserNotificationSettings
:
(
UIUserNotificationSettings
*
)
settings
{
if
(
_command
)
{
[
self
hasPermission
:
_command
];
_command
=
NULL
;
}
}
/**
* Cancels all single non-repeating notifications which are older then 5 days
* before the app terminates.
*/
-
(
void
)
onAppTerminate
{
[
self
cancelAllNotificationsWhichAreOlderThen
:
432000
];
}
/**
* Fire event for local notification.
*/
-
(
void
)
fireEvent
:
(
NSString
*
)
event
localnotification
:
(
UILocalNotification
*
)
notification
{
NSString
*
js
;
NSString
*
params
=
[
NSString
stringWithFormat
:
@"
\"
%@
\"
"
,
self
.
applicationState
];
if
(
notification
)
{
NSString
*
args
=
[
notification
encodeToJSON
];
params
=
[
NSString
stringWithFormat
:
@"%@,'%@'"
,
args
,
self
.
applicationState
];
}
js
=
[
NSString
stringWithFormat
:
@"cordova.plugins.notification.local.core.fireEvent('%@', %@)"
,
event
,
params
];
if
(
deviceready
)
{
[
self
.
commandDelegate
evalJs
:
js
];
}
else
{
[
self
.
eventQueue
addObject
:
js
];
}
}
@end
@end
www/local-notification-core.js
View file @
ca85d768
/*
/*
* 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'
,
're
gisterPermission
'
,
[]);
exec
(
fn
,
null
,
'LocalNotification'
,
're
quest
'
,
[]);
};
};
// /**
/**********
// * 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;
// }
// }
// };
www/local-notification-util.js
View file @
ca85d768
/*
/*
* 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;
// };
/**
/**
* C
onvert the passed values to their required ty
pe.
* C
reate a callback function to get executed within a specific sco
pe.
*
*
* @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
()
{
callbackF
n
.
apply
(
scope
||
this
,
arguments
);
f
n
.
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();
});
//
});
});
//
});
www/local-notification.js
View file @
ca85d768
/*
/*
* 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 ID
s.
*
Request permission to show notification
s.
*
*
* @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
);
};
};
/**
/**
* Re
gister permission to show notifications if not already granted
.
* Re
quest 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);
// };
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment