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
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
1879 additions
and
2000 deletions
+1879
-2000
plugin.xml
plugin.xml
+9
-19
APPLocalNotification.h
src/ios/APPLocalNotification.h
+45
-46
APPLocalNotification.m
src/ios/APPLocalNotification.m
+804
-844
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,413 +63,486 @@
...
@@ -69,413 +63,486 @@
[
eventQueue
removeAllObjects
];
[
eventQueue
removeAllObjects
];
}
}
//
///**
// * Schedule a set of notifications.
// *
// * @param properties
// * A dict of properties for each notification
// */
//- (void) schedule:(CDVInvokedUrlCommand*)command
//{
// NSArray* notifications = command.arguments;
//
// [self.commandDelegate runInBackground:^{
// if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) {
// for (NSDictionary* options in notifications) {
// UNMutableNotificationContent* notification;
//
// notification = [[UNMutableNotificationContent alloc]
// initWithOptions:options];
//
// [self scheduleNotification:notification];
// //[self fireEvent:@"add" notification:notification];
// }
// } else {
// for (NSDictionary* options in notifications) {
// UILocalNotification* notification;
//
// notification = [[UILocalNotification alloc]
// initWithOptions:options];
//
// [self scheduleLocalNotification:[notification copy]];
// [self fireEvent:@"schedule" localnotification:notification];
//
// if (notifications.count > 1) {
// [NSThread sleepForTimeInterval:0.01];
// }
// }
// }
//
// [self execCallback:command];
// }];
//}
//
///**
// * Update a set of notifications.
// *
// * @param properties
// * A dict of properties for each notification
// */
//- (void) update:(CDVInvokedUrlCommand*)command
//{
// NSArray* notifications = command.arguments;
//
// [self.commandDelegate runInBackground:^{
// if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) {
// for (NSDictionary* options in notifications) {
// NSNumber* id = [options objectForKey:@"id"];
// UNNotificationRequest* notification;
//
// notification = [self.center getNotificationWithId:id];
//
// if (!notification)
// continue;
//
// // [self updateNotification:[notification copy]
// // withOptions:options];
// //
// // [self fireEvent:@"update" notification:notification];
// //
// // if (notifications.count > 1) {
// // [NSThread sleepForTimeInterval:0.01];
// // }
// }
// } else {
// for (NSDictionary* options in notifications) {
// NSNumber* id = [options objectForKey:@"id"];
// UILocalNotification* notification;
//
// notification = [self.app localNotificationWithId:id];
//
// if (!notification)
// continue;
//
// [self updateLocalNotification:[notification copy]
// withOptions:options];
//
// [self fireEvent:@"update" localnotification:notification];
//
// if (notifications.count > 1) {
// [NSThread sleepForTimeInterval:0.01];
// }
// }
// }
//
// [self execCallback:command];
// }];
//}
//
///**
// * Cancel a set of notifications.
// *
// * @param ids
// * The IDs of the notifications
// */
//- (void) cancel:(CDVInvokedUrlCommand*)command
//{
// [self.commandDelegate runInBackground:^{
// if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) {
// for (NSNumber* id in command.arguments) {
// UNNotificationRequest* notification;
//
// notification = [self.center getNotificationWithId:id];
//
// if (!notification)
// continue;
//
// [self.center cancelNotification:notification];
// [self fireEvent:@"cancel" notification:notification];
// }
// } else {
// for (NSNumber* id in command.arguments) {
// UILocalNotification* notification;
//
// notification = [self.app localNotificationWithId:id];
//
// if (!notification)
// continue;
//
// [self.app cancelLocalNotification:notification];
// [self fireEvent:@"cancel" localnotification:notification];
// }
// }
//
// [self execCallback:command];
// }];
//}
//
///**
// * Cancel all local notifications.
// */
//- (void) cancelAll:(CDVInvokedUrlCommand*)command
//{
// [self.commandDelegate runInBackground:^{
// [self cancelAllNotifications];
// [self fireEvent:@"cancelall"];
// [self execCallback:command];
// }];
//}
//
///**
// * Clear a set of notifications.
// *
// * @param ids
// * The IDs of the notifications
// */
//- (void) clear:(CDVInvokedUrlCommand*)command
//{
// [self.commandDelegate runInBackground:^{
// if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) {
// for (NSNumber* id in command.arguments) {
// UNNotificationRequest* notification;
//
// notification = [self.center getNotificationWithId:id];
//
// if (!notification)
// continue;
//
// [self.center clearNotification:notification];
// [self fireEvent:@"clear" notification:notification];
// }
// } else {
// for (NSNumber* id in command.arguments) {
// UILocalNotification* notification;
//
// notification = [self.app localNotificationWithId:id];
//
// if (!notification)
// continue;
//
// [self.app clearLocalNotification:notification];
// [self fireEvent:@"clear" localnotification:notification];
// }
// }
//
// [self execCallback:command];
// }];
//}
//
///**
// * Clear all local notifications.
// */
//- (void) clearAll:(CDVInvokedUrlCommand*)command
//{
// [self.commandDelegate runInBackground:^{
// [self clearAllNotifications];
// [self fireEvent:@"clearall"];
// [self execCallback:command];
// }];
//}
//
///**
// * If a notification by ID is present.
// *
// * @param id
// * The ID of the notification
// */
//- (void) isPresent:(CDVInvokedUrlCommand *)command
//{
// [self isPresent:command type:NotifcationTypeAll];
//}
//
///**
// * If a notification by ID is scheduled.
// *
// * @param id
// * The ID of the notification
// */
//- (void) isScheduled:(CDVInvokedUrlCommand*)command
//{
// [self isPresent:command type:NotifcationTypeScheduled];
//}
//
///**
// * Check if a notification with an ID is triggered.
// *
// * @param id
// * The ID of the notification
// */
//- (void) isTriggered:(CDVInvokedUrlCommand*)command
//{
// [self isPresent:command type:NotifcationTypeTriggered];
//}
//
///**
// * Check if a notification with an ID exists.
// *
// * @param type
// * The notification life cycle type
// */
//- (void) isPresent:(CDVInvokedUrlCommand*)command
// type:(APPNotificationType)type;
//{
// [self.commandDelegate runInBackground:^{
// NSNumber* id = [command argumentAtIndex:0];
// BOOL exist;
//
// if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) {
// exist = [self.center notificationExist:id type:type];
// } else {
// if (type == NotifcationTypeAll) {
// exist = [self.app localNotificationExist:id];
// } else {
// exist = [self.app localNotificationExist:id type:type];
// }
// }
//
// CDVPluginResult* result;
// result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK
// messageAsBool:exist];
//
// [self.commandDelegate sendPluginResult:result
// callbackId:command.callbackId];
// }];
//}
//
///**
// * List all ids from all local notifications.
// */
//- (void) getAllIds:(CDVInvokedUrlCommand*)command
//{
// [self getIds:command byType:NotifcationTypeAll];
//}
//
///**
// * List all ids from all pending notifications.
// */
//- (void) getScheduledIds:(CDVInvokedUrlCommand*)command
//{
// [self getIds:command byType:NotifcationTypeScheduled];
//}
//
///**
// * List all ids from all triggered notifications.
// */
//- (void) getTriggeredIds:(CDVInvokedUrlCommand*)command
//{
// [self getIds:command byType:NotifcationTypeTriggered];
//}
//
///**
// * List of ids for given local notifications.
// *
// * @param type
// * Notification life cycle type
// * @param ids
// * The IDs of the notifications
// */
//- (void) getIds:(CDVInvokedUrlCommand*)command
// byType:(APPNotificationType)type;
//{
// [self.commandDelegate runInBackground:^{
// NSArray* ids;
//
// if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) {
// ids = [self.center getNotificationIdsByType:type];
// } else {
// if (type == NotifcationTypeAll) {
// ids = [self.app localNotificationIds];
// } else {
// ids = [self.app localNotificationIdsByType:type];
// }
// }
//
// CDVPluginResult* result;
// result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK
// messageAsArray:ids];
//
// [self.commandDelegate sendPluginResult:result
// callbackId:command.callbackId];
// }];
//}
//
///**
// * Propertys for given local notification.
// */
//- (void) getSingle:(CDVInvokedUrlCommand*)command
//{
// [self getOption:command byType:NotifcationTypeAll];
//}
//
///**
// * Propertya for given scheduled notification.
// */
//- (void) getSingleScheduled:(CDVInvokedUrlCommand*)command
//{
// [self getOption:command byType:NotifcationTypeScheduled];
//}
//
//// Propertys for given triggered notification
//- (void) getSingleTriggered:(CDVInvokedUrlCommand*)command
//{
// [self getOption:command byType:NotifcationTypeTriggered];
//}
//
///**
// * Property list for given local notifications.
// *
// * @param ids
// * The IDs of the notifications
// */
//- (void) getAll:(CDVInvokedUrlCommand*)command
//{
// [self getOptions:command byType:NotifcationTypeAll];
//}
//
///**
// * Property list for given scheduled notifications.
// *
// * @param ids
// * The IDs of the notifications
// */
//- (void) getScheduled:(CDVInvokedUrlCommand*)command
//{
// [self getOptions:command byType:NotifcationTypeScheduled];
//}
//
///**
// * Property list for given triggered notifications.
// *
// * @param ids
// * The IDs of the notifications
// */
//- (void) getTriggered:(CDVInvokedUrlCommand *)command
//{
// [self getOptions:command byType:NotifcationTypeTriggered];
//}
//
///**
// * Propertys for given triggered notification.
// *
// * @param type
// * Notification life cycle type
// * @param ids
// * The ID of the notification
// */
//- (void) getOption:(CDVInvokedUrlCommand*)command
// byType:(APPNotificationType)type;
//{
// [self.commandDelegate runInBackground:^{
// NSArray* ids = command.arguments;
// NSArray* notifications;
//
// if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) {
// notifications = [self.center getNotificationOptionsByType:type
// andId:ids];
// } else {
// if (type == NotifcationTypeAll) {
// notifications = [self.app localNotificationOptionsById:ids];
// }
// else {
// notifications = [self.app localNotificationOptionsByType:type
// andId:ids];
// }
// }
//
// CDVPluginResult* result;
// result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK
// messageAsDictionary:[notifications firstObject]];
//
// [self.commandDelegate sendPluginResult:result
// callbackId:command.callbackId];
// }];
//}
//
///**
// * Property list for given triggered notifications.
// *
// * @param type
// * Notification life cycle type
// * @param ids
// * The IDs of the notifications
// */
//- (void) getOptions:(CDVInvokedUrlCommand*)command
// byType:(APPNotificationType)type;
//{
// [self.commandDelegate runInBackground:^{
// NSArray* ids = command.arguments;
// NSArray* notifications;
//
// if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) {
// if (type == NotifcationTypeAll && ids.count == 0) {
// notifications = [self.center getNotificationOptions];
// }
// else if (type == NotifcationTypeAll) {
// notifications = [self.center getNotificationOptionsById:ids];
// }
// else if (ids.count == 0) {
// notifications = [self.center getNotificationOptionsByType:type];
// }
// else {
// notifications = [self.center getNotificationOptionsByType:type
// andId:ids];
// }
// } else {
// if (type == NotifcationTypeAll && ids.count == 0) {
// notifications = [self.app localNotificationOptions];
// }
// else if (type == NotifcationTypeAll) {
// notifications = [self.app localNotificationOptionsById:ids];
// }
// else if (ids.count == 0) {
// notifications = [self.app localNotificationOptionsByType:type];
// }
// else {
// notifications = [self.app localNotificationOptionsByType:type
// andId:ids];
// }
// }
//
// CDVPluginResult* result;
// result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK
// messageAsArray:notifications];
//
// [self.commandDelegate sendPluginResult:result
// callbackId:command.callbackId];
// }];
//}
/**
/**
* Schedule a set of notifications.
* Check for permission to show notifications.
*
* @param properties
* A dict of properties for each notification
*/
-
(
void
)
schedule
:(
CDVInvokedUrlCommand
*
)
command
{
NSArray
*
notifications
=
command
.
arguments
;
[
self
.
commandDelegate
runInBackground
:
^
{
if
(
SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO
(
@"10.0"
))
{
for
(
NSDictionary
*
options
in
notifications
)
{
UNMutableNotificationContent
*
notification
;
notification
=
[[
UNMutableNotificationContent
alloc
]
initWithOptions
:
options
];
[
self
scheduleNotification
:
notification
];
//[self fireEvent:@"add" notification:notification];
}
}
else
{
for
(
NSDictionary
*
options
in
notifications
)
{
UILocalNotification
*
notification
;
notification
=
[[
UILocalNotification
alloc
]
initWithOptions
:
options
];
[
self
scheduleLocalNotification
:[
notification
copy
]];
[
self
fireEvent
:
@"schedule"
localnotification
:
notification
];
if
(
notifications
.
count
>
1
)
{
[
NSThread
sleepForTimeInterval
:
0
.
01
];
}
}
}
[
self
execCallback
:
command
];
}];
}
/**
* Update a set of notifications.
*
* @param properties
* A dict of properties for each notification
*/
-
(
void
)
update
:(
CDVInvokedUrlCommand
*
)
command
{
NSArray
*
notifications
=
command
.
arguments
;
[
self
.
commandDelegate
runInBackground
:
^
{
if
(
SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO
(
@"10.0"
))
{
for
(
NSDictionary
*
options
in
notifications
)
{
NSNumber
*
id
=
[
options
objectForKey
:
@"id"
];
UNNotificationRequest
*
notification
;
notification
=
[
self
.
center
getNotificationWithId
:
id
];
if
(
!
notification
)
continue
;
// [self updateNotification:[notification copy]
// withOptions:options];
//
// [self fireEvent:@"update" notification:notification];
//
// if (notifications.count > 1) {
// [NSThread sleepForTimeInterval:0.01];
// }
}
}
else
{
for
(
NSDictionary
*
options
in
notifications
)
{
NSNumber
*
id
=
[
options
objectForKey
:
@"id"
];
UILocalNotification
*
notification
;
notification
=
[
self
.
app
localNotificationWithId
:
id
];
if
(
!
notification
)
continue
;
[
self
updateLocalNotification
:[
notification
copy
]
withOptions
:
options
];
[
self
fireEvent
:
@"update"
localnotification
:
notification
];
if
(
notifications
.
count
>
1
)
{
[
NSThread
sleepForTimeInterval
:
0
.
01
];
}
}
}
[
self
execCallback
:
command
];
}];
}
/**
* Cancel a set of notifications.
*
* @param ids
* The IDs of the notifications
*/
-
(
void
)
cancel
:(
CDVInvokedUrlCommand
*
)
command
{
[
self
.
commandDelegate
runInBackground
:
^
{
if
(
SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO
(
@"10.0"
))
{
for
(
NSNumber
*
id
in
command
.
arguments
)
{
UNNotificationRequest
*
notification
;
notification
=
[
self
.
center
getNotificationWithId
:
id
];
if
(
!
notification
)
continue
;
[
self
.
center
cancelNotification
:
notification
];
[
self
fireEvent
:
@"cancel"
notification
:
notification
];
}
}
else
{
for
(
NSNumber
*
id
in
command
.
arguments
)
{
UILocalNotification
*
notification
;
notification
=
[
self
.
app
localNotificationWithId
:
id
];
if
(
!
notification
)
continue
;
[
self
.
app
cancelLocalNotification
:
notification
];
[
self
fireEvent
:
@"cancel"
localnotification
:
notification
];
}
}
[
self
execCallback
:
command
];
}];
}
/**
* Cancel all local notifications.
*/
-
(
void
)
cancelAll
:(
CDVInvokedUrlCommand
*
)
command
{
[
self
.
commandDelegate
runInBackground
:
^
{
[
self
cancelAllNotifications
];
[
self
fireEvent
:
@"cancelall"
];
[
self
execCallback
:
command
];
}];
}
/**
* Clear a set of notifications.
*
* @param ids
* The IDs of the notifications
*/
-
(
void
)
clear
:(
CDVInvokedUrlCommand
*
)
command
{
[
self
.
commandDelegate
runInBackground
:
^
{
if
(
SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO
(
@"10.0"
))
{
for
(
NSNumber
*
id
in
command
.
arguments
)
{
UNNotificationRequest
*
notification
;
notification
=
[
self
.
center
getNotificationWithId
:
id
];
if
(
!
notification
)
continue
;
[
self
.
center
clearNotification
:
notification
];
[
self
fireEvent
:
@"clear"
notification
:
notification
];
}
}
else
{
for
(
NSNumber
*
id
in
command
.
arguments
)
{
UILocalNotification
*
notification
;
notification
=
[
self
.
app
localNotificationWithId
:
id
];
if
(
!
notification
)
continue
;
[
self
.
app
clearLocalNotification
:
notification
];
[
self
fireEvent
:
@"clear"
localnotification
:
notification
];
}
}
[
self
execCallback
:
command
];
}];
}
/**
* Clear all local notifications.
*/
-
(
void
)
clearAll
:(
CDVInvokedUrlCommand
*
)
command
{
[
self
.
commandDelegate
runInBackground
:
^
{
[
self
clearAllNotifications
];
[
self
fireEvent
:
@"clearall"
];
[
self
execCallback
:
command
];
}];
}
/**
* If a notification by ID is present.
*
* @param id
* The ID of the notification
*/
-
(
void
)
isPresent
:(
CDVInvokedUrlCommand
*
)
command
{
[
self
isPresent
:
command
type
:
NotifcationTypeAll
];
}
/**
* If a notification by ID is scheduled.
*
* @param id
* The ID of the notification
*/
-
(
void
)
isScheduled
:(
CDVInvokedUrlCommand
*
)
command
{
[
self
isPresent
:
command
type
:
NotifcationTypeScheduled
];
}
/**
* Check if a notification with an ID is triggered.
*
* @param id
* The ID of the notification
*/
-
(
void
)
isTriggered
:(
CDVInvokedUrlCommand
*
)
command
{
[
self
isPresent
:
command
type
:
NotifcationTypeTriggered
];
}
/**
* Check if a notification with an ID exists.
*
* @param type
* The notification life cycle type
*/
-
(
void
)
isPresent
:(
CDVInvokedUrlCommand
*
)
command
type
:(
APPNotificationType
)
type
;
{
[
self
.
commandDelegate
runInBackground
:
^
{
NSNumber
*
id
=
[
command
argumentAtIndex
:
0
];
BOOL
exist
;
if
(
SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO
(
@"10.0"
))
{
exist
=
[
self
.
center
notificationExist
:
id
type
:
type
];
}
else
{
if
(
type
==
NotifcationTypeAll
)
{
exist
=
[
self
.
app
localNotificationExist
:
id
];
}
else
{
exist
=
[
self
.
app
localNotificationExist
:
id
type
:
type
];
}
}
CDVPluginResult
*
result
;
result
=
[
CDVPluginResult
resultWithStatus
:
CDVCommandStatus_OK
messageAsBool
:
exist
];
[
self
.
commandDelegate
sendPluginResult
:
result
callbackId
:
command
.
callbackId
];
}];
}
/**
* List all ids from all local notifications.
*/
-
(
void
)
getAllIds
:
(
CDVInvokedUrlCommand
*
)
command
{
[
self
getIds
:
command
byType
:
NotifcationTypeAll
];
}
/**
* List all ids from all pending notifications.
*/
-
(
void
)
getScheduledIds
:
(
CDVInvokedUrlCommand
*
)
command
{
[
self
getIds
:
command
byType
:
NotifcationTypeScheduled
];
}
/**
* List all ids from all triggered notifications.
*/
-
(
void
)
getTriggeredIds
:
(
CDVInvokedUrlCommand
*
)
command
{
[
self
getIds
:
command
byType
:
NotifcationTypeTriggered
];
}
/**
* List of ids for given local notifications.
*
* @param type
* Notification life cycle type
* @param ids
* The IDs of the notifications
*/
-
(
void
)
getIds
:
(
CDVInvokedUrlCommand
*
)
command
byType
:
(
APPNotificationType
)
type
;
{
[
self
.
commandDelegate
runInBackground
:
^
{
NSArray
*
ids
;
if
(
SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO
(
@"10.0"
))
{
ids
=
[
self
.
center
getNotificationIdsByType
:
type
];
}
else
{
if
(
type
==
NotifcationTypeAll
)
{
ids
=
[
self
.
app
localNotificationIds
];
}
else
{
ids
=
[
self
.
app
localNotificationIdsByType
:
type
];
}
}
CDVPluginResult
*
result
;
result
=
[
CDVPluginResult
resultWithStatus
:
CDVCommandStatus_OK
messageAsArray
:
ids
];
[
self
.
commandDelegate
sendPluginResult
:
result
callbackId
:
command
.
callbackId
];
}];
}
/**
* Propertys for given local notification.
*/
-
(
void
)
getSingle
:
(
CDVInvokedUrlCommand
*
)
command
{
[
self
getOption
:
command
byType
:
NotifcationTypeAll
];
}
/**
* Propertya for given scheduled notification.
*/
-
(
void
)
getSingleScheduled
:
(
CDVInvokedUrlCommand
*
)
command
{
[
self
getOption
:
command
byType
:
NotifcationTypeScheduled
];
}
// Propertys for given triggered notification
-
(
void
)
getSingleTriggered
:
(
CDVInvokedUrlCommand
*
)
command
{
[
self
getOption
:
command
byType
:
NotifcationTypeTriggered
];
}
/**
* Property list for given local notifications.
*
* @param ids
* The IDs of the notifications
*/
-
(
void
)
getAll
:
(
CDVInvokedUrlCommand
*
)
command
{
[
self
getOptions
:
command
byType
:
NotifcationTypeAll
];
}
/**
* Property list for given scheduled notifications.
*
* @param ids
* The IDs of the notifications
*/
-
(
void
)
getScheduled
:
(
CDVInvokedUrlCommand
*
)
command
{
[
self
getOptions
:
command
byType
:
NotifcationTypeScheduled
];
}
/**
* Property list for given triggered notifications.
*
* @param ids
* The IDs of the notifications
*/
-
(
void
)
getTriggered
:
(
CDVInvokedUrlCommand
*
)
command
{
[
self
getOptions
:
command
byType
:
NotifcationTypeTriggered
];
}
/**
* Propertys for given triggered notification.
*
* @param type
* Notification life cycle type
* @param ids
* The ID of the notification
*/
*/
-
(
void
)
getOption
:
(
CDVInvokedUrlCommand
*
)
command
-
(
void
)
check
:(
CDVInvokedUrlCommand
*
)
command
byType
:
(
APPNotificationType
)
type
;
{
{
[
self
.
commandDelegate
runInBackground
:
^
{
[
self
.
center
getNotificationSettingsWithCompletionHandler
:
^
(
UNNotificationSettings
*
settings
)
{
NSArray
*
ids
=
command
.
arguments
;
BOOL
authorized
=
settings
.
authorizationStatus
==
UNAuthorizationStatusAuthorized
;
NSArray
*
notifications
;
BOOL
enabled
=
settings
.
notificationCenterSetting
==
UNNotificationSettingEnabled
;
BOOL
permitted
=
authorized
&&
enabled
;
if
(
SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO
(
@"10.0"
))
{
notifications
=
[
self
.
center
getNotificationOptionsByType
:
type
andId
:
ids
];
}
else
{
if
(
type
==
NotifcationTypeAll
)
{
notifications
=
[
self
.
app
localNotificationOptionsById
:
ids
];
}
else
{
notifications
=
[
self
.
app
localNotificationOptionsByType
:
type
andId
:
ids
];
}
}
CDVPluginResult
*
result
;
CDVPluginResult
*
result
;
result
=
[
CDVPluginResult
resultWithStatus
:
CDVCommandStatus_OK
result
=
[
CDVPluginResult
resultWithStatus
:
CDVCommandStatus_OK
messageAsDictionary
:[
notifications
firstObject
]
];
messageAsBool
:
permitted
];
[
self
.
commandDelegate
sendPluginResult
:
result
[
self
.
commandDelegate
sendPluginResult
:
result
callbackId
:
command
.
callbackId
];
callbackId
:
command
.
callbackId
];
...
@@ -483,221 +550,114 @@
...
@@ -483,221 +550,114 @@
}
}
/**
/**
* Property list for given triggered notifications.
* Request for permission to show notifcations.
*
* @param type
* Notification life cycle type
* @param ids
* The IDs of the notifications
*/
*/
-
(
void
)
getOptions
:
(
CDVInvokedUrlCommand
*
)
command
-
(
void
)
request
:(
CDVInvokedUrlCommand
*
)
command
byType
:
(
APPNotificationType
)
type
;
{
{
[
self
.
commandDelegate
runInBackground
:
^
{
UNAuthorizationOptions
options
=
NSArray
*
ids
=
command
.
arguments
;
(
UNAuthorizationOptionBadge
|
UNAuthorizationOptionSound
|
UNAuthorizationOptionAlert
);
NSArray
*
notifications
;
if
(
SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO
(
@"10.0"
))
{
[
self
.
center
requestAuthorizationWithOptions
:
options
completionHandler
:
^
(
BOOL
granted
,
NSError
*
e
)
{
if
(
type
==
NotifcationTypeAll
&&
ids
.
count
==
0
)
{
[
self
check
:
command
];
notifications
=
[
self
.
center
getNotificationOptions
];
}
else
if
(
type
==
NotifcationTypeAll
)
{
notifications
=
[
self
.
center
getNotificationOptionsById
:
ids
];
}
else
if
(
ids
.
count
==
0
)
{
notifications
=
[
self
.
center
getNotificationOptionsByType
:
type
];
}
else
{
notifications
=
[
self
.
center
getNotificationOptionsByType
:
type
andId
:
ids
];
}
}
else
{
if
(
type
==
NotifcationTypeAll
&&
ids
.
count
==
0
)
{
notifications
=
[
self
.
app
localNotificationOptions
];
}
else
if
(
type
==
NotifcationTypeAll
)
{
notifications
=
[
self
.
app
localNotificationOptionsById
:
ids
];
}
else
if
(
ids
.
count
==
0
)
{
notifications
=
[
self
.
app
localNotificationOptionsByType
:
type
];
}
else
{
notifications
=
[
self
.
app
localNotificationOptionsByType
:
type
andId
:
ids
];
}
}
CDVPluginResult
*
result
;
result
=
[
CDVPluginResult
resultWithStatus
:
CDVCommandStatus_OK
messageAsArray
:
notifications
];
[
self
.
commandDelegate
sendPluginResult
:
result
callbackId
:
command
.
callbackId
];
}];
}];
}
}
/**
* Inform if the app has the permission to show
* badges and local notifications.
*/
-
(
void
)
hasPermission
:
(
CDVInvokedUrlCommand
*
)
command
{
if
(
SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO
(
@"10.0"
))
{
[
self
.
commandDelegate
runInBackground
:
^
{
[
self
.
center
getNotificationSettingsWithCompletionHandler
:
^
(
UNNotificationSettings
*
settings
)
{
BOOL
authorized
=
settings
.
authorizationStatus
==
UNAuthorizationStatusAuthorized
;
BOOL
enabled
=
settings
.
notificationCenterSetting
==
UNNotificationSettingEnabled
;
BOOL
permitted
=
authorized
&&
enabled
;
CDVPluginResult
*
result
;
result
=
[
CDVPluginResult
resultWithStatus
:
CDVCommandStatus_OK
messageAsBool
:
permitted
];
[
self
.
commandDelegate
sendPluginResult
:
result
callbackId
:
command
.
callbackId
];
}];
}];
}
else
{
[
self
.
commandDelegate
runInBackground
:
^
{
CDVPluginResult
*
result
;
BOOL
hasPermission
;
hasPermission
=
[
self
.
app
hasPermissionToScheduleLocalNotifications
];
result
=
[
CDVPluginResult
resultWithStatus
:
CDVCommandStatus_OK
messageAsBool
:
hasPermission
];
[
self
.
commandDelegate
sendPluginResult
:
result
callbackId
:
command
.
callbackId
];
}];
}
}
/**
* Ask for permission to show badges.
*/
-
(
void
)
registerPermission
:
(
CDVInvokedUrlCommand
*
)
command
{
if
(
SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO
(
@"10.0"
))
{
[
self
.
commandDelegate
runInBackground
:
^
{
UNAuthorizationOptions
options
=
(
UNAuthorizationOptionBadge
|
UNAuthorizationOptionSound
|
UNAuthorizationOptionAlert
);
[
self
.
center
requestAuthorizationWithOptions
:
options
completionHandler
:
^
(
BOOL
granted
,
NSError
*
e
)
{
[
self
hasPermission
:
command
];
}];
}];
}
else
{
if
([[
UIApplication
sharedApplication
]
respondsToSelector
:
@selector
(
registerUserNotificationSettings
:)])
{
_command
=
command
;
[
self
.
commandDelegate
runInBackground
:
^
{
[
self
.
app
registerPermissionToScheduleLocalNotifications
];
}];
}
else
{
[
self
hasPermission
:
command
];
}
}
}
#pragma mark -
#pragma mark -
#pragma mark Core Logic
#pragma mark Core Logic
/**
///**
* Schedule the local notification.
// * Schedule the local notification.
*/
// */
-
(
void
)
scheduleNotification
:
(
UNMutableNotificationContent
*
)
notification
//- (void) scheduleNotification:(UNMutableNotificationContent*)notification
{
//{
[
self
.
center
addNotificationRequest
:
notification
.
request
// [self.center addNotificationRequest:notification.request
withCompletionHandler
:
^
(
NSError
*
e
)
{
// withCompletionHandler:^(NSError* e) {
[
self
fireEvent
:
@"add"
notification
:
notification
.
request
];
// [self fireEvent:@"add" notification:notification.request];
}];
// }];
}
//}
/**
* Update the local notification.
*/
-
(
void
)
updateNotification
:
(
UILocalNotification
*
)
notification
withOptions
:
(
NSDictionary
*
)
newOptions
{
NSMutableDictionary
*
options
=
[
notification
.
userInfo
mutableCopy
];
[
options
addEntriesFromDictionary
:
newOptions
];
[
options
setObject
:[
NSDate
date
]
forKey
:
@"updatedAt"
];
// notification = [[UILocalNotification alloc]
// initWithOptions:options];
//
//
// [self scheduleLocalNotification:notification];
///**
}
// * Update the local notification.
// */
/**
//- (void) updateNotification:(UILocalNotification*)notification
* Cancel all local notifications.
// withOptions:(NSDictionary*)newOptions
*/
//{
-
(
void
)
cancelAllNotifications
// NSMutableDictionary* options = [notification.userInfo mutableCopy];
{
//
if
(
SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO
(
@"10.0"
))
{
// [options addEntriesFromDictionary:newOptions];
[
self
.
center
cancelAllNotifications
];
// [options setObject:[NSDate date] forKey:@"updatedAt"];
}
else
{
//
[
self
.
app
cancelAllLocalNotifications
];
//// notification = [[UILocalNotification alloc]
}
//// initWithOptions:options];
////
[
self
.
app
setApplicationIconBadgeNumber
:
0
];
//// [self scheduleLocalNotification:notification];
}
//}
//
/**
///**
* Clear all local notifications.
// * Cancel all local notifications.
*/
// */
-
(
void
)
clearAllNotifications
//- (void) cancelAllNotifications
{
//{
if
(
SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO
(
@"10.0"
))
{
// if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) {
[
self
.
center
clearAllNotifications
];
// [self.center cancelAllNotifications];
}
else
{
// } else {
[
self
.
app
clearAllLocalNotifications
];
// [self.app cancelAllLocalNotifications];
}
// }
//
[
self
.
app
setApplicationIconBadgeNumber
:
0
];
// [self.app setApplicationIconBadgeNumber:0];
}
//}
//
#pragma mark -
///**
#pragma mark Delegates
// * Clear all local notifications.
// */
/**
//- (void) clearAllNotifications
* Called when a notification is delivered to a foreground app.
//{
*/
// if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0")) {
-
(
void
)
userNotificationCenter
:
(
UNUserNotificationCenter
*
)
center
// [self.center clearAllNotifications];
willPresentNotification
:
(
UNNotification
*
)
notification
// } else {
withCompletionHandler
:
(
void
(
^
)(
UNNotificationPresentationOptions
))
completionHandler
// [self.app clearAllLocalNotifications];
{
// }
[
self
fireEvent
:
@"trigger"
notification
:
notification
.
request
];
//
completionHandler
(
UNAuthorizationOptionBadge
|
UNAuthorizationOptionSound
|
UNAuthorizationOptionAlert
);
// [self.app setApplicationIconBadgeNumber:0];
}
//}
//
//#pragma mark -
/**
//#pragma mark Delegates
* Called to let your app know which action was selected by the user for a given
//
* notification.
///**
*/
// * Called when a notification is delivered to a foreground app.
-
(
void
)
userNotificationCenter
:
(
UNUserNotificationCenter
*
)
center
// */
didReceiveNotificationResponse
:
(
UNNotificationResponse
*
)
response
//- (void) userNotificationCenter:(UNUserNotificationCenter *)center
withCompletionHandler
:
(
void
(
^
)())
completionHandler
// willPresentNotification:(UNNotification *)notification
{
// withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler
UNNotificationRequest
*
notification
=
response
.
notification
.
request
;
//{
// [self fireEvent:@"trigger" notification:notification.request];
[
self
fireEvent
:
@"click"
notification
:
notification
];
// completionHandler(UNAuthorizationOptionBadge | UNAuthorizationOptionSound | UNAuthorizationOptionAlert);
//}
if
([
notification
.
options
isRepeating
])
{
//
[
self
.
center
clearNotification
:
notification
];
//
[
self
fireEvent
:
@"clear"
notification
:
notification
];
///**
}
else
{
// * Called to let your app know which action was selected by the user for a given
[
self
.
center
cancelNotification
:
notification
];
// * notification.
[
self
fireEvent
:
@"cancel"
notification
:
notification
];
// */
}
//- (void) userNotificationCenter:(UNUserNotificationCenter *)center
// didReceiveNotificationResponse:(UNNotificationResponse *)response
completionHandler
();
// withCompletionHandler:(void (^)())completionHandler
}
//{
// UNNotificationRequest* notification = response.notification.request;
//
// [self fireEvent:@"click" notification:notification];
//
// if ([notification.options isRepeating]) {
// [self.center clearNotification:notification];
// [self fireEvent:@"clear" notification:notification];
// } else {
// [self.center cancelNotification:notification];
// [self fireEvent:@"cancel" notification:notification];
// }
//
// completionHandler();
//}
#pragma mark -
#pragma mark -
#pragma mark Life Cycle
#pragma mark Life Cycle
...
@@ -715,40 +675,40 @@
...
@@ -715,40 +675,40 @@
#pragma mark -
#pragma mark -
#pragma mark Helper
#pragma mark Helper
/**
/
//
**
* Retrieves the application state
//
* Retrieves the application state
*
//
*
* @return
//
* @return
* Either "background" or "foreground"
//
* Either "background" or "foreground"
*/
//
*/
-
(
NSString
*
)
applicationState
//
- (NSString*) applicationState
{
//
{
UIApplicationState
state
=
[
self
.
app
applicationState
];
//
UIApplicationState state = [self.app applicationState];
//
bool
isActive
=
state
==
UIApplicationStateActive
;
//
bool isActive = state == UIApplicationStateActive;
//
return
isActive
?
@"foreground"
:
@"background"
;
//
return isActive ? @"foreground" : @"background";
}
//
}
//
/**
/
//
**
* Simply invokes the callback without any parameter.
//
* Simply invokes the callback without any parameter.
*/
//
*/
-
(
void
)
execCallback
:
(
CDVInvokedUrlCommand
*
)
command
//
- (void) execCallback:(CDVInvokedUrlCommand*)command
{
//
{
CDVPluginResult
*
result
=
[
CDVPluginResult
//
CDVPluginResult *result = [CDVPluginResult
resultWithStatus
:
CDVCommandStatus_OK
];
//
resultWithStatus:CDVCommandStatus_OK];
//
[
self
.
commandDelegate
sendPluginResult
:
result
//
[self.commandDelegate sendPluginResult:result
callbackId
:
command
.
callbackId
];
//
callbackId:command.callbackId];
}
//
}
//
/**
/
//
**
* Short hand for shared application instance.
//
* Short hand for shared application instance.
*/
//
*/
-
(
UIApplication
*
)
app
//
- (UIApplication*) app
{
//
{
return
[
UIApplication
sharedApplication
];
//
return [UIApplication sharedApplication];
}
//
}
/**
/**
* Short hand for current notification center.
* Short hand for current notification center.
...
@@ -758,199 +718,199 @@
...
@@ -758,199 +718,199 @@
return
[
UNUserNotificationCenter
currentNotificationCenter
];
return
[
UNUserNotificationCenter
currentNotificationCenter
];
}
}
/**
/
//
**
* Fire general event.
//
* Fire general event.
*/
//
*/
-
(
void
)
fireEvent
:
(
NSString
*
)
event
//
- (void) fireEvent:(NSString*)event
{
//
{
[
self
fireEvent
:
event
notification
:
NULL
];
//
[self fireEvent:event notification:NULL];
}
//
}
//
/**
/
//
**
* Fire event for local notification.
//
* Fire event for local notification.
*/
//
*/
-
(
void
)
fireEvent
:
(
NSString
*
)
event
//
- (void) fireEvent:(NSString*)event
notification
:
(
UNNotificationRequest
*
)
notification
//
notification:(UNNotificationRequest*)notification
{
//
{
NSString
*
js
;
//
NSString* js;
NSString
*
appState
=
[
self
applicationState
];
//
NSString* appState = [self applicationState];
NSString
*
params
=
[
NSString
stringWithFormat
:
@"
\"
%@
\"
"
,
appState
];
//
NSString* params = [NSString stringWithFormat:@"\"%@\"", appState];
//
if
(
notification
)
{
//
if (notification) {
NSString
*
args
=
[
notification
encodeToJSON
];
//
NSString* args = [notification encodeToJSON];
params
=
[
NSString
stringWithFormat
:
@"%@,'%@'"
,
args
,
appState
];
//
params = [NSString stringWithFormat:@"%@,'%@'", args, appState];
}
//
}
//
js
=
[
NSString
stringWithFormat
:
//
js = [NSString stringWithFormat:
@"cordova.plugins.notification.local.core.fireEvent('%@', %@)"
,
//
@"cordova.plugins.notification.local.core.fireEvent('%@', %@)",
event
,
params
];
//
event, params];
//
if
(
deviceready
)
{
//
if (deviceready) {
[
self
.
commandDelegate
evalJs
:
js
];
//
[self.commandDelegate evalJs:js];
}
else
{
//
} else {
[
self
.
eventQueue
addObject
:
js
];
//
[self.eventQueue addObject:js];
}
//
}
}
//
}
//
#pragma mark -
//
#pragma mark -
#pragma mark ios 9
//
#pragma mark ios 9
//
/**
/
//
**
* Schedule the local notification.
//
* Schedule the local notification.
*/
//
*/
-
(
void
)
scheduleLocalNotification
:
(
UILocalNotification
*
)
notification
//
- (void) scheduleLocalNotification:(UILocalNotification*)notification
{
//
{
[
self
cancelForerunnerLocalNotification
:
notification
];
//
[self cancelForerunnerLocalNotification:notification];
[
self
.
app
scheduleLocalNotification
:
notification
];
//
[self.app scheduleLocalNotification:notification];
}
//
}
//
/**
/
//
**
* Update the local notification.
//
* Update the local notification.
*/
//
*/
-
(
void
)
updateLocalNotification
:
(
UILocalNotification
*
)
notification
//
- (void) updateLocalNotification:(UILocalNotification*)notification
withOptions
:
(
NSDictionary
*
)
newOptions
//
withOptions:(NSDictionary*)newOptions
{
//
{
NSMutableDictionary
*
options
=
[
notification
.
userInfo
mutableCopy
];
//
NSMutableDictionary* options = [notification.userInfo mutableCopy];
//
[
options
addEntriesFromDictionary
:
newOptions
];
//
[options addEntriesFromDictionary:newOptions];
[
options
setObject
:[
NSDate
date
]
forKey
:
@"updatedAt"
];
//
[options setObject:[NSDate date] forKey:@"updatedAt"];
//
notification
=
[[
UILocalNotification
alloc
]
//
notification = [[UILocalNotification alloc]
initWithOptions
:
options
];
//
initWithOptions:options];
//
[
self
scheduleLocalNotification
:
notification
];
//
[self scheduleLocalNotification:notification];
}
//
}
//
/**
/
//
**
* Cancel a maybe given forerunner with the same ID.
//
* Cancel a maybe given forerunner with the same ID.
*/
//
*/
-
(
void
)
cancelForerunnerLocalNotification
:
(
UILocalNotification
*
)
notification
//
- (void) cancelForerunnerLocalNotification:(UILocalNotification*)notification
{
//
{
NSNumber
*
id
=
notification
.
options
.
id
;
//
NSNumber* id = notification.options.id;
UILocalNotification
*
forerunner
;
//
UILocalNotification* forerunner;
//
forerunner
=
[
self
.
app
localNotificationWithId
:
id
];
//
forerunner = [self.app localNotificationWithId:id];
//
if
(
!
forerunner
)
//
if (!forerunner)
return
;
//
return;
//
[
self
.
app
cancelLocalNotification
:
forerunner
];
//
[self.app cancelLocalNotification:forerunner];
}
//
}
//
/**
/
//
**
* Cancels all non-repeating local notification older then
//
* Cancels all non-repeating local notification older then
* a specific amount of seconds
//
* a specific amount of seconds
*/
//
*/
-
(
void
)
cancelAllNotificationsWhichAreOlderThen
:
(
float
)
seconds
//
- (void) cancelAllNotificationsWhichAreOlderThen:(float)seconds
{
//
{
NSArray
*
notifications
;
//
NSArray* notifications;
//
notifications
=
[
self
.
app
localNotifications
];
//
notifications = [self.app localNotifications];
//
for
(
UILocalNotification
*
notification
in
notifications
)
//
for (UILocalNotification* notification in notifications)
{
//
{
if
(
!
[
notification
isRepeating
]
//
if (![notification isRepeating]
&&
notification
.
timeIntervalSinceFireDate
>
seconds
)
//
&& notification.timeIntervalSinceFireDate > seconds)
{
//
{
[
self
.
app
cancelLocalNotification
:
notification
];
//
[self.app cancelLocalNotification:notification];
[
self
fireEvent
:
@"cancel"
localnotification
:
notification
];
//
[self fireEvent:@"cancel" localnotification:notification];
}
//
}
}
//
}
}
//
}
//
/**
/
//
**
* Calls the cancel or trigger event after a local notification was received.
//
* Calls the cancel or trigger event after a local notification was received.
* Cancels the local notification if autoCancel was set to true.
//
* Cancels the local notification if autoCancel was set to true.
*/
//
*/
-
(
void
)
didReceiveLocalNotification
:
(
NSNotification
*
)
localNotification
//
- (void) didReceiveLocalNotification:(NSNotification*)localNotification
{
//
{
UILocalNotification
*
notification
=
[
localNotification
object
];
//
UILocalNotification* notification = [localNotification object];
//
if
([
notification
userInfo
]
==
NULL
||
[
notification
wasUpdated
])
//
if ([notification userInfo] == NULL || [notification wasUpdated])
return
;
//
return;
//
NSTimeInterval
timeInterval
=
[
notification
timeIntervalSinceLastTrigger
];
//
NSTimeInterval timeInterval = [notification timeIntervalSinceLastTrigger];
NSString
*
event
=
timeInterval
<
0
.
2
&&
deviceready
?
@"trigger"
:
@"click"
;
//
NSString* event = timeInterval < 0.2 && deviceready ? @"trigger" : @"click";
//
[
self
fireEvent
:
event
localnotification
:
notification
];
//
[self fireEvent:event localnotification:notification];
//
if
(
!
[
event
isEqualToString
:
@"click"
])
//
if (![event isEqualToString:@"click"])
return
;
//
return;
//
if
([
notification
isRepeating
])
{
//
if ([notification isRepeating]) {
[
self
fireEvent
:
@"clear"
localnotification
:
notification
];
//
[self fireEvent:@"clear" localnotification:notification];
}
else
{
//
} else {
[
self
.
app
cancelLocalNotification
:
notification
];
//
[self.app cancelLocalNotification:notification];
[
self
fireEvent
:
@"cancel"
localnotification
:
notification
];
//
[self fireEvent:@"cancel" localnotification:notification];
}
//
}
}
//
}
//
/**
/
//
**
* Called when app has started
//
* Called when app has started
* (by clicking on a local notification).
//
* (by clicking on a local notification).
*/
//
*/
-
(
void
)
didFinishLaunchingWithOptions
:
(
NSNotification
*
)
notification
//
- (void) didFinishLaunchingWithOptions:(NSNotification*)notification
{
//
{
NSDictionary
*
launchOptions
=
[
notification
userInfo
];
//
NSDictionary* launchOptions = [notification userInfo];
//
UILocalNotification
*
localNotification
;
//
UILocalNotification* localNotification;
//
localNotification
=
[
launchOptions
objectForKey
:
//
localNotification = [launchOptions objectForKey:
UIApplicationLaunchOptionsLocalNotificationKey
];
//
UIApplicationLaunchOptionsLocalNotificationKey];
//
if
(
localNotification
)
{
//
if (localNotification) {
[
self
didReceiveLocalNotification
:
//
[self didReceiveLocalNotification:
[
NSNotification
notificationWithName
:
CDVLocalNotification
//
[NSNotification notificationWithName:CDVLocalNotification
object
:
localNotification
]];
//
object:localNotification]];
}
//
}
}
//
}
//
/**
/
//
**
* Called on notification settings registration is completed.
//
* Called on notification settings registration is completed.
*/
//
*/
-
(
void
)
didRegisterUserNotificationSettings
:
(
UIUserNotificationSettings
*
)
settings
//
- (void) didRegisterUserNotificationSettings:(UIUserNotificationSettings*)settings
{
//
{
if
(
_command
)
{
//
if (_command) {
[
self
hasPermission
:
_command
];
//
[self hasPermission:_command];
_command
=
NULL
;
//
_command = NULL;
}
//
}
}
//
}
//
/**
/
//
**
* Cancels all single non-repeating notifications which are older then 5 days
//
* Cancels all single non-repeating notifications which are older then 5 days
* before the app terminates.
//
* before the app terminates.
*/
//
*/
-
(
void
)
onAppTerminate
//
- (void) onAppTerminate
{
//
{
[
self
cancelAllNotificationsWhichAreOlderThen
:
432000
];
//
[self cancelAllNotificationsWhichAreOlderThen:432000];
}
//
}
//
/**
/
//
**
* Fire event for local notification.
//
* Fire event for local notification.
*/
//
*/
-
(
void
)
fireEvent
:
(
NSString
*
)
event
localnotification
:
(
UILocalNotification
*
)
notification
//
- (void) fireEvent:(NSString*)event localnotification:(UILocalNotification*)notification
{
//
{
NSString
*
js
;
//
NSString* js;
NSString
*
params
=
[
NSString
stringWithFormat
:
//
NSString* params = [NSString stringWithFormat:
@"
\"
%@
\"
"
,
self
.
applicationState
];
//
@"\"%@\"", self.applicationState];
//
if
(
notification
)
{
//
if (notification) {
NSString
*
args
=
[
notification
encodeToJSON
];
//
NSString* args = [notification encodeToJSON];
//
params
=
[
NSString
stringWithFormat
:
//
params = [NSString stringWithFormat:
@"%@,'%@'"
,
//
@"%@,'%@'",
args
,
self
.
applicationState
];
//
args, self.applicationState];
}
//
}
//
js
=
[
NSString
stringWithFormat
:
//
js = [NSString stringWithFormat:
@"cordova.plugins.notification.local.core.fireEvent('%@', %@)"
,
//
@"cordova.plugins.notification.local.core.fireEvent('%@', %@)",
event
,
params
];
//
event, params];
//
if
(
deviceready
)
{
//
if (deviceready) {
[
self
.
commandDelegate
evalJs
:
js
];
//
[self.commandDelegate evalJs:js];
}
else
{
//
} else {
[
self
.
eventQueue
addObject
:
js
];
//
[self.eventQueue addObject:js];
}
//
}
}
//
}
@end
@end
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