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
3b148a29
Commit
3b148a29
authored
Jun 30, 2017
by
Sebastián Katzer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Removed ios9 src folder
parent
f6544e8b
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
0 additions
and
1785 deletions
+0
-1785
APPLocalNotification.ios9.h
src/ios9/APPLocalNotification.ios9.h
+0
-78
APPLocalNotification.ios9.m
src/ios9/APPLocalNotification.ios9.m
+0
-717
APPLocalNotificationOptions.ios9.h
src/ios9/APPLocalNotificationOptions.ios9.h
+0
-42
APPLocalNotificationOptions.ios9.m
src/ios9/APPLocalNotificationOptions.ios9.m
+0
-246
UIApplication+APPLocalNotification.ios9.h
src/ios9/UIApplication+APPLocalNotification.ios9.h
+0
-63
UIApplication+APPLocalNotification.ios9.m
src/ios9/UIApplication+APPLocalNotification.ios9.m
+0
-333
UILocalNotification+APPLocalNotification.ios9.h
src/ios9/UILocalNotification+APPLocalNotification.ios9.h
+0
-59
UILocalNotification+APPLocalNotification.ios9.m
src/ios9/UILocalNotification+APPLocalNotification.ios9.m
+0
-247
No files found.
src/ios9/APPLocalNotification.ios9.h
deleted
100644 → 0
View file @
f6544e8b
/*
* 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
* as defined in and that are subject to the Apache License
* Version 2.0 (the 'License'). You may not use this file except in
* compliance with the License. Please obtain a copy of the License at
* http://opensource.org/licenses/Apache-2.0/ and read it before using this
* file.
*
* The Original Code and all software distributed under the License are
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
* Please see the License for the specific language governing rights and
* limitations under the License.
*
* @APPPLANT_LICENSE_HEADER_END@
*/
#import <Foundation/Foundation.h>
#import <Cordova/CDVPlugin.h>
@interface
APPLocalNotification9
:
CDVPlugin
// Execute all queued events
-
(
void
)
deviceready
:(
CDVInvokedUrlCommand
*
)
command
;
// Inform if the app has the permission to show notifications
-
(
void
)
hasPermission
:(
CDVInvokedUrlCommand
*
)
command
;
// Register permission to show notifications
-
(
void
)
registerPermission
:(
CDVInvokedUrlCommand
*
)
command
;
// Schedule set of notifications
-
(
void
)
schedule
:(
CDVInvokedUrlCommand
*
)
command
;
// Update set of notifications
-
(
void
)
update
:(
CDVInvokedUrlCommand
*
)
command
;
// Cancel set of notifications
-
(
void
)
cancel
:(
CDVInvokedUrlCommand
*
)
command
;
// Cancel all notifications
-
(
void
)
cancelAll
:(
CDVInvokedUrlCommand
*
)
command
;
// Clear set of notifications
-
(
void
)
clear
:(
CDVInvokedUrlCommand
*
)
command
;
// Clear all notifications
-
(
void
)
clearAll
:(
CDVInvokedUrlCommand
*
)
command
;
// If a notification with an ID is present
-
(
void
)
isPresent
:(
CDVInvokedUrlCommand
*
)
command
;
// If a notification with an ID is scheduled
-
(
void
)
isScheduled
:(
CDVInvokedUrlCommand
*
)
command
;
// If a notification with an ID is triggered
-
(
void
)
isTriggered
:(
CDVInvokedUrlCommand
*
)
command
;
// List all ids from all local notifications
-
(
void
)
getAllIds
:(
CDVInvokedUrlCommand
*
)
command
;
// List all ids from all pending notifications
-
(
void
)
getScheduledIds
:(
CDVInvokedUrlCommand
*
)
command
;
// List all ids from all triggered notifications
-
(
void
)
getTriggeredIds
:(
CDVInvokedUrlCommand
*
)
command
;
// Propertys for given local notification
-
(
void
)
getSingle
:(
CDVInvokedUrlCommand
*
)
command
;
// Propertya for given scheduled notification
-
(
void
)
getSingleScheduled
:(
CDVInvokedUrlCommand
*
)
command
;
// Propertys for given triggered notification
-
(
void
)
getSingleTriggered
:(
CDVInvokedUrlCommand
*
)
command
;
// Property list for given local notifications
-
(
void
)
getAll
:(
CDVInvokedUrlCommand
*
)
command
;
// Property list for given scheduled notifications
-
(
void
)
getScheduled
:(
CDVInvokedUrlCommand
*
)
command
;
// Property list for given triggered notifications
-
(
void
)
getTriggered
:(
CDVInvokedUrlCommand
*
)
command
;
@end
src/ios9/APPLocalNotification.ios9.m
deleted
100644 → 0
View file @
f6544e8b
/*
* 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
* as defined in and that are subject to the Apache License
* Version 2.0 (the 'License'). You may not use this file except in
* compliance with the License. Please obtain a copy of the License at
* http://opensource.org/licenses/Apache-2.0/ and read it before using this
* file.
*
* The Original Code and all software distributed under the License are
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
* Please see the License for the specific language governing rights and
* limitations under the License.
*
* @APPPLANT_LICENSE_HEADER_END@
*/
#import "APPLocalNotification.ios9.h"
#import "APPLocalNotificationOptions.ios9.h"
#import "UIApplication+APPLocalNotification.ios9.h"
#import "UILocalNotification+APPLocalNotification.ios9.h"
@interface
APPLocalNotification9
()
// Retrieves the application state
@property
(
readonly
,
getter
=
applicationState
)
NSString
*
applicationState
;
// All events will be queued until deviceready has been fired
@property
(
readwrite
,
assign
)
BOOL
deviceready
;
// Event queue
@property
(
readonly
,
nonatomic
,
retain
)
NSMutableArray
*
eventQueue
;
// Needed when calling `registerPermission`
@property
(
nonatomic
,
retain
)
CDVInvokedUrlCommand
*
command
;
@end
@implementation
APPLocalNotification9
@synthesize
deviceready
,
eventQueue
;
#pragma mark -
#pragma mark Interface
/**
* Execute all queued events.
*/
-
(
void
)
deviceready
:(
CDVInvokedUrlCommand
*
)
command
{
deviceready
=
YES
;
for
(
NSString
*
js
in
eventQueue
)
{
[
self
.
commandDelegate
evalJs
:
js
];
}
[
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
:
^
{
for
(
NSDictionary
*
options
in
notifications
)
{
UILocalNotification
*
notification
;
notification
=
[[
UILocalNotification
alloc
]
initWithOptions
:
options
];
[
self
scheduleLocalNotification
:[
notification
copy
]];
[
self
fireEvent
:
@"schedule"
notification
:
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
:
^
{
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"
notification
:
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
:
^
{
for
(
NSNumber
*
id
in
command
.
arguments
)
{
UILocalNotification
*
notification
;
notification
=
[
self
.
app
localNotificationWithId
:
id
];
if
(
!
notification
)
continue
;
[
self
.
app
cancelLocalNotification
:
notification
];
[
self
fireEvent
:
@"cancel"
notification
:
notification
];
}
[
self
execCallback
:
command
];
}];
}
/**
* Cancel all local notifications.
*/
-
(
void
)
cancelAll
:(
CDVInvokedUrlCommand
*
)
command
{
[
self
.
commandDelegate
runInBackground
:
^
{
[
self
cancelAllLocalNotifications
];
[
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
:
^
{
for
(
NSNumber
*
id
in
command
.
arguments
)
{
UILocalNotification
*
notification
;
notification
=
[
self
.
app
localNotificationWithId
:
id
];
if
(
!
notification
)
continue
;
[
self
.
app
clearLocalNotification
:
notification
];
[
self
fireEvent
:
@"clear"
notification
:
notification
];
}
[
self
execCallback
:
command
];
}];
}
/**
* Clear all local notifications.
*/
-
(
void
)
clearAll
:(
CDVInvokedUrlCommand
*
)
command
{
[
self
.
commandDelegate
runInBackground
:
^
{
[
self
clearAllLocalNotifications
];
[
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
;
CDVPluginResult
*
result
;
if
(
type
==
NotifcationTypeAll
)
{
exist
=
[
self
.
app
localNotificationExist
:
id
];
}
else
{
exist
=
[
self
.
app
localNotificationExist
:
id
type
:
type
];
}
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
:
^
{
CDVPluginResult
*
result
;
NSArray
*
ids
;
if
(
type
==
NotifcationTypeAll
)
{
ids
=
[
self
.
app
localNotificationIds
];
}
else
{
ids
=
[
self
.
app
localNotificationIdsByType
:
type
];
}
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
;
CDVPluginResult
*
result
;
if
(
type
==
NotifcationTypeAll
)
{
notifications
=
[
self
.
app
localNotificationOptionsById
:
ids
];
}
else
{
notifications
=
[
self
.
app
localNotificationOptionsByType
:
type
andId
:
ids
];
}
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
;
CDVPluginResult
*
result
;
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
];
}
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
{
[
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
([[
UIApplication
sharedApplication
]
respondsToSelector
:
@selector
(
registerUserNotificationSettings
:)])
{
_command
=
command
;
[
self
.
commandDelegate
runInBackground
:
^
{
[
self
.
app
registerPermissionToScheduleLocalNotifications
];
}];
}
else
{
[
self
hasPermission
:
command
];
}
}
#pragma mark -
#pragma mark Core Logic
/**
* Schedule the local notification.
*/
-
(
void
)
scheduleLocalNotification
:
(
UILocalNotification
*
)
notification
{
[
self
cancelForerunnerLocalNotification
:
notification
];
[
self
.
app
scheduleLocalNotification
:
notification
];
}
/**
* Update the local notification.
*/
-
(
void
)
updateLocalNotification
:
(
UILocalNotification
*
)
notification
withOptions
:
(
NSDictionary
*
)
newOptions
{
NSMutableDictionary
*
options
=
[
notification
.
userInfo
mutableCopy
];
[
options
addEntriesFromDictionary
:
newOptions
];
[
options
setObject
:[
NSDate
date
]
forKey
:
@"updatedAt"
];
notification
=
[[
UILocalNotification
alloc
]
initWithOptions
:
options
];
[
self
scheduleLocalNotification
:
notification
];
}
/**
* Cancel all local notifications.
*/
-
(
void
)
cancelAllLocalNotifications
{
[
self
.
app
cancelAllLocalNotifications
];
[
self
.
app
setApplicationIconBadgeNumber
:
0
];
}
/**
* Clear all local notifications.
*/
-
(
void
)
clearAllLocalNotifications
{
[
self
.
app
clearAllLocalNotifications
];
[
self
.
app
setApplicationIconBadgeNumber
:
0
];
}
/**
* Cancel a maybe given forerunner with the same ID.
*/
-
(
void
)
cancelForerunnerLocalNotification
:
(
UILocalNotification
*
)
notification
{
NSNumber
*
id
=
notification
.
options
.
id
;
UILocalNotification
*
forerunner
;
forerunner
=
[
self
.
app
localNotificationWithId
:
id
];
if
(
!
forerunner
)
return
;
[
self
.
app
cancelLocalNotification
:
forerunner
];
}
/**
* Cancels all non-repeating local notification older then
* a specific amount of seconds
*/
-
(
void
)
cancelAllNotificationsWhichAreOlderThen
:
(
float
)
seconds
{
NSArray
*
notifications
;
notifications
=
[
self
.
app
localNotifications
];
for
(
UILocalNotification
*
notification
in
notifications
)
{
if
(
!
[
notification
isRepeating
]
&&
notification
.
timeIntervalSinceFireDate
>
seconds
)
{
[
self
.
app
cancelLocalNotification
:
notification
];
[
self
fireEvent
:
@"cancel"
notification
:
notification
];
}
}
}
#pragma mark -
#pragma mark Delegates
/**
* Calls the cancel or trigger event after a local notification was received.
* Cancels the local notification if autoCancel was set to true.
*/
-
(
void
)
didReceiveLocalNotification
:
(
NSNotification
*
)
localNotification
{
UILocalNotification
*
notification
=
[
localNotification
object
];
if
([
notification
userInfo
]
==
NULL
||
[
notification
wasUpdated
])
return
;
NSTimeInterval
timeInterval
=
[
notification
timeIntervalSinceLastTrigger
];
NSString
*
event
=
timeInterval
<
0
.
2
&&
deviceready
?
@"trigger"
:
@"click"
;
[
self
fireEvent
:
event
notification
:
notification
];
if
(
!
[
event
isEqualToString
:
@"click"
])
return
;
if
([
notification
isRepeating
])
{
[
self
fireEvent
:
@"clear"
notification
:
notification
];
}
else
{
[
self
.
app
cancelLocalNotification
:
notification
];
[
self
fireEvent
:
@"cancel"
notification
:
notification
];
}
}
/**
* Called when app has started
* (by clicking on a local notification).
*/
-
(
void
)
didFinishLaunchingWithOptions
:
(
NSNotification
*
)
notification
{
NSDictionary
*
launchOptions
=
[
notification
userInfo
];
UILocalNotification
*
localNotification
;
localNotification
=
[
launchOptions
objectForKey
:
UIApplicationLaunchOptionsLocalNotificationKey
];
if
(
localNotification
)
{
[
self
didReceiveLocalNotification
:
[
NSNotification
notificationWithName
:
CDVLocalNotification
object
:
localNotification
]];
}
}
/**
* Called on otification settings registration is completed.
*/
-
(
void
)
didRegisterUserNotificationSettings
:
(
UIUserNotificationSettings
*
)
settings
{
if
(
_command
)
{
[
self
hasPermission
:
_command
];
_command
=
NULL
;
}
}
#pragma mark -
#pragma mark Life Cycle
/**
* Registers obervers after plugin was initialized.
*/
-
(
void
)
pluginInitialize
{
eventQueue
=
[[
NSMutableArray
alloc
]
init
];
}
/**
* Clears all single repeating notifications which are older then 5 days
* before the app terminates.
*/
-
(
void
)
onAppTerminate
{
[
self
cancelAllNotificationsWhichAreOlderThen
:
432000
];
}
#pragma mark -
#pragma mark Helper
/**
* Retrieves the application state
*
* @return
* Either "background" or "foreground"
*/
-
(
NSString
*
)
applicationState
{
UIApplicationState
state
=
[
self
.
app
applicationState
];
bool
isActive
=
state
==
UIApplicationStateActive
;
return
isActive
?
@"foreground"
:
@"background"
;
}
/**
* Simply invokes the callback without any parameter.
*/
-
(
void
)
execCallback
:
(
CDVInvokedUrlCommand
*
)
command
{
CDVPluginResult
*
result
=
[
CDVPluginResult
resultWithStatus
:
CDVCommandStatus_OK
];
[
self
.
commandDelegate
sendPluginResult
:
result
callbackId
:
command
.
callbackId
];
}
/**
* Short hand for shared application instance.
*/
-
(
UIApplication
*
)
app
{
return
[
UIApplication
sharedApplication
];
}
/**
* Fire general event.
*/
-
(
void
)
fireEvent
:
(
NSString
*
)
event
{
[
self
fireEvent
:
event
notification
:
NULL
];
}
/**
* Fire event for local notification.
*/
-
(
void
)
fireEvent
:
(
NSString
*
)
event
notification
:
(
UILocalNotification
*
)
notification
{
NSString
*
js
;
NSString
*
params
=
[
NSString
stringWithFormat
:
@"
\"
%@
\"
"
,
self
.
applicationState
];
if
(
notification
)
{
NSString
*
args
=
[
notification
encodeToJSON
];
params
=
[
NSString
stringWithFormat
:
@"%@,'%@'"
,
args
,
self
.
applicationState
];
}
js
=
[
NSString
stringWithFormat
:
@"cordova.plugins.notification.local.core.fireEvent('%@', %@)"
,
event
,
params
];
if
(
deviceready
)
{
[
self
.
commandDelegate
evalJs
:
js
];
}
else
{
[
self
.
eventQueue
addObject
:
js
];
}
}
@end
src/ios9/APPLocalNotificationOptions.ios9.h
deleted
100644 → 0
View file @
f6544e8b
/*
* 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
* as defined in and that are subject to the Apache License
* Version 2.0 (the 'License'). You may not use this file except in
* compliance with the License. Please obtain a copy of the License at
* http://opensource.org/licenses/Apache-2.0/ and read it before using this
* file.
*
* The Original Code and all software distributed under the License are
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
* Please see the License for the specific language governing rights and
* limitations under the License.
*
* @APPPLANT_LICENSE_HEADER_END@
*/
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface
APPLocalNotificationOptions9
:
NSObject
-
(
id
)
initWithDict
:(
NSDictionary
*
)
dict
;
@property
(
readonly
,
getter
=
id
)
NSNumber
*
id
;
@property
(
readonly
,
getter
=
badgeNumber
)
NSInteger
badgeNumber
;
@property
(
readonly
,
getter
=
alertBody
)
NSString
*
alertBody
;
@property
(
readonly
,
getter
=
soundName
)
NSString
*
soundName
;
@property
(
readonly
,
getter
=
fireDate
)
NSDate
*
fireDate
;
@property
(
readonly
,
getter
=
repeatInterval
)
NSCalendarUnit
repeatInterval
;
@property
(
readonly
,
getter
=
userInfo
)
NSDictionary
*
userInfo
;
// If it's a repeating notification
-
(
BOOL
)
isRepeating
;
@end
src/ios9/APPLocalNotificationOptions.ios9.m
deleted
100644 → 0
View file @
f6544e8b
/*
* 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
* as defined in and that are subject to the Apache License
* Version 2.0 (the 'License'). You may not use this file except in
* compliance with the License. Please obtain a copy of the License at
* http://opensource.org/licenses/Apache-2.0/ and read it before using this
* file.
*
* The Original Code and all software distributed under the License are
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
* Please see the License for the specific language governing rights and
* limitations under the License.
*
* @APPPLANT_LICENSE_HEADER_END@
*/
#import "APPLocalNotificationOptions.ios9.h"
@interface
APPLocalNotificationOptions9
()
// The dictionary which contains all notification properties
@property
(
nonatomic
,
retain
)
NSDictionary
*
dict
;
@end
@implementation
APPLocalNotificationOptions9
@synthesize
dict
;
#pragma mark -
#pragma mark Initialization
/**
* Initialize the object with the given options when calling on JS side:
* notification.local.add(options)
*/
-
(
id
)
initWithDict
:(
NSDictionary
*
)
dictionary
{
self
=
[
self
init
];
self
.
dict
=
dictionary
;
return
self
;
}
#pragma mark -
#pragma mark Attributes
/**
* The notification's ID.
*/
-
(
NSNumber
*
)
id
{
NSInteger
id
=
[[
dict
objectForKey
:
@"id"
]
integerValue
];
return
[
NSNumber
numberWithInteger
:
id
];
}
/**
* The notification's title.
*/
-
(
NSString
*
)
title
{
return
[
dict
objectForKey
:
@"title"
];
}
/**
* The notification's message.
*/
-
(
NSString
*
)
text
{
return
[
dict
objectForKey
:
@"text"
];
}
/**
* The notification's badge number.
*/
-
(
NSInteger
)
badgeNumber
{
return
[[
dict
objectForKey
:
@"badge"
]
intValue
];
}
#pragma mark -
#pragma mark Complex Attributes
/**
* The notification's alert body.
*/
-
(
NSString
*
)
alertBody
{
NSString
*
title
=
[
self
title
];
NSString
*
msg
=
[
self
text
];
NSString
*
alertBody
=
msg
;
if
(
!
[
self
stringIsNullOrEmpty
:
title
])
{
alertBody
=
[
NSString
stringWithFormat
:
@"%@
\n
%@"
,
title
,
msg
];
}
return
alertBody
;
}
/**
* The notification's sound path.
*/
-
(
NSString
*
)
soundName
{
NSString
*
path
=
[
dict
objectForKey
:
@"sound"
];
if
([
self
stringIsNullOrEmpty
:
path
])
return
NULL
;
if
([
path
isEqualToString
:
@"res://platform_default"
])
return
UILocalNotificationDefaultSoundName
;
if
([
path
hasPrefix
:
@"file:/"
])
return
[
self
soundNameForAsset
:
path
];
if
([
path
hasPrefix
:
@"res:"
])
return
[
self
soundNameForResource
:
path
];
return
NULL
;
}
/**
* The notification's fire date.
*/
-
(
NSDate
*
)
fireDate
{
double
timestamp
=
[[
dict
objectForKey
:
@"at"
]
doubleValue
];
return
[
NSDate
dateWithTimeIntervalSince1970
:
timestamp
];
}
/**
* The notification's repeat interval.
*/
-
(
NSCalendarUnit
)
repeatInterval
{
NSString
*
interval
=
[
dict
objectForKey
:
@"every"
];
if
([
self
stringIsNullOrEmpty
:
interval
])
{
return
NSCalendarUnitEra
;
}
else
if
([
interval
isEqualToString
:
@"second"
])
{
return
NSCalendarUnitSecond
;
}
else
if
([
interval
isEqualToString
:
@"minute"
])
{
return
NSCalendarUnitMinute
;
}
else
if
([
interval
isEqualToString
:
@"hour"
])
{
return
NSCalendarUnitHour
;
}
else
if
([
interval
isEqualToString
:
@"day"
])
{
return
NSCalendarUnitDay
;
}
else
if
([
interval
isEqualToString
:
@"week"
])
{
return
NSCalendarUnitWeekOfYear
;
}
else
if
([
interval
isEqualToString
:
@"month"
])
{
return
NSCalendarUnitMonth
;
}
else
if
([
interval
isEqualToString
:
@"quarter"
])
{
return
NSCalendarUnitQuarter
;
}
else
if
([
interval
isEqualToString
:
@"year"
])
{
return
NSCalendarUnitYear
;
}
return
NSCalendarUnitEra
;
}
#pragma mark -
#pragma mark Methods
/**
* The notification's user info dict.
*/
-
(
NSDictionary
*
)
userInfo
{
if
([
dict
objectForKey
:
@"updatedAt"
])
{
NSMutableDictionary
*
data
=
[
dict
mutableCopy
];
[
data
removeObjectForKey
:
@"updatedAt"
];
return
data
;
}
return
dict
;
}
/**
* If it's a repeating notification.
*/
-
(
BOOL
)
isRepeating
{
NSCalendarUnit
interval
=
self
.
repeatInterval
;
return
!
(
interval
==
NSCalendarUnitEra
||
interval
==
0
);
}
#pragma mark -
#pragma mark Helpers
/**
* Convert relative path to valid sound name attribute.
*/
-
(
NSString
*
)
soundNameForAsset
:
(
NSString
*
)
path
{
return
[
path
stringByReplacingOccurrencesOfString
:
@"file:/"
withString
:
@"www"
];
}
/**
* Convert resource path to valid sound name attribute.
*/
-
(
NSString
*
)
soundNameForResource
:
(
NSString
*
)
path
{
return
[
path
pathComponents
].
lastObject
;
}
/**
* If the string is empty.
*/
-
(
BOOL
)
stringIsNullOrEmpty
:
(
NSString
*
)
str
{
if
(
str
==
(
NSString
*
)[
NSNull
null
])
return
YES
;
if
([
str
isEqualToString
:
@""
])
return
YES
;
return
NO
;
}
@end
src/ios9/UIApplication+APPLocalNotification.ios9.h
deleted
100644 → 0
View file @
f6544e8b
/*
* 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
* as defined in and that are subject to the Apache License
* Version 2.0 (the 'License'). You may not use this file except in
* compliance with the License. Please obtain a copy of the License at
* http://opensource.org/licenses/Apache-2.0/ and read it before using this
* file.
*
* The Original Code and all software distributed under the License are
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
* Please see the License for the specific language governing rights and
* limitations under the License.
*
* @APPPLANT_LICENSE_HEADER_END@
*/
#import "UILocalNotification+APPLocalNotification.ios9.h"
@interface
UIApplication
(
APPLocalNotification
)
@property
(
readonly
,
getter
=
localNotifications
)
NSArray
*
localNotifications
;
@property
(
readonly
,
getter
=
localNotificationIds
)
NSArray
*
localNotificationIds
;
// If the app has the permission to schedule local notifications
-
(
BOOL
)
hasPermissionToScheduleLocalNotifications
;
// Ask for permission to schedule local notifications
-
(
void
)
registerPermissionToScheduleLocalNotifications
;
// List of all local notification IDs from given type
-
(
NSArray
*
)
localNotificationIdsByType
:(
APPNotificationType
)
type
;
// If local notification with ID exists
-
(
BOOL
)
localNotificationExist
:(
NSNumber
*
)
id
;
// If local notification with ID and type exists
-
(
BOOL
)
localNotificationExist
:(
NSNumber
*
)
id
type
:(
APPNotificationType
)
type
;
// Local notification by ID
-
(
UILocalNotification
*
)
localNotificationWithId
:(
NSNumber
*
)
id
;
// Local notification by ID and type
-
(
UILocalNotification
*
)
localNotificationWithId
:(
NSNumber
*
)
id
andType
:(
APPNotificationType
)
type
;
// Property list from all local notifications
-
(
NSArray
*
)
localNotificationOptions
;
// Property list from given local notifications
-
(
NSArray
*
)
localNotificationOptionsById
:(
NSArray
*
)
ids
;
// Property list from all local notifications with type constraint
-
(
NSArray
*
)
localNotificationOptionsByType
:(
APPNotificationType
)
type
;
// Property list from given local notifications with type constraint
-
(
NSArray
*
)
localNotificationOptionsByType
:(
APPNotificationType
)
type
andId
:(
NSArray
*
)
ids
;
// Clear single local notfications
-
(
void
)
clearLocalNotification
:(
UILocalNotification
*
)
notification
;
// Clear all local notfications
-
(
void
)
clearAllLocalNotifications
;
@end
src/ios9/UIApplication+APPLocalNotification.ios9.m
deleted
100644 → 0
View file @
f6544e8b
/*
* 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
* as defined in and that are subject to the Apache License
* Version 2.0 (the 'License'). You may not use this file except in
* compliance with the License. Please obtain a copy of the License at
* http://opensource.org/licenses/Apache-2.0/ and read it before using this
* file.
*
* The Original Code and all software distributed under the License are
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
* Please see the License for the specific language governing rights and
* limitations under the License.
*
* @APPPLANT_LICENSE_HEADER_END@
*/
#import "UIApplication+APPLocalNotification.ios9.h"
#import "UILocalNotification+APPLocalNotification.ios9.h"
@implementation
UIApplication
(
APPLocalNotification
)
#pragma mark -
#pragma mark Permissions
/**
* If the app has the permission to schedule local notifications.
*/
-
(
BOOL
)
hasPermissionToScheduleLocalNotifications
{
if
([[
UIApplication
sharedApplication
]
respondsToSelector
:
@selector
(
registerUserNotificationSettings
:)])
{
UIUserNotificationType
types
;
UIUserNotificationSettings
*
settings
;
settings
=
[[
UIApplication
sharedApplication
]
currentUserNotificationSettings
];
types
=
UIUserNotificationTypeAlert
|
UIUserNotificationTypeBadge
|
UIUserNotificationTypeSound
;
return
(
settings
.
types
&
types
);
}
else
{
return
YES
;
}
}
/**
* Ask for permission to schedule local notifications.
*/
-
(
void
)
registerPermissionToScheduleLocalNotifications
{
if
([[
UIApplication
sharedApplication
]
respondsToSelector
:
@selector
(
registerUserNotificationSettings
:)])
{
UIUserNotificationType
types
;
UIUserNotificationSettings
*
settings
;
settings
=
[[
UIApplication
sharedApplication
]
currentUserNotificationSettings
];
types
=
settings
.
types
|
UIUserNotificationTypeAlert
|
UIUserNotificationTypeBadge
|
UIUserNotificationTypeSound
;
settings
=
[
UIUserNotificationSettings
settingsForTypes
:
types
categories
:
nil
];
[[
UIApplication
sharedApplication
]
registerUserNotificationSettings
:
settings
];
}
}
#pragma mark -
#pragma mark LocalNotifications
/**
* List of all local notifications which have been added
* but not yet removed from the notification center.
*/
-
(
NSArray
*
)
localNotifications
{
NSArray
*
scheduledNotifications
=
self
.
scheduledLocalNotifications
;
NSMutableArray
*
notifications
=
[[
NSMutableArray
alloc
]
init
];
for
(
UILocalNotification
*
notification
in
scheduledNotifications
)
{
if
(
notification
)
{
[
notifications
addObject
:
notification
];
}
}
return
notifications
;
}
/**
* List of all triggered local notifications which have been scheduled
* and not yet removed the notification center.
*/
-
(
NSArray
*
)
triggeredLocalNotifications
{
NSArray
*
notifications
=
self
.
localNotifications
;
NSMutableArray
*
triggeredNotifications
=
[[
NSMutableArray
alloc
]
init
];
for
(
UILocalNotification
*
notification
in
notifications
)
{
if
([
notification
isTriggered
])
{
[
triggeredNotifications
addObject
:
notification
];
}
}
return
triggeredNotifications
;
}
/**
* List of all local notifications IDs.
*/
-
(
NSArray
*
)
localNotificationIds
{
NSArray
*
notifications
=
self
.
localNotifications
;
NSMutableArray
*
ids
=
[[
NSMutableArray
alloc
]
init
];
for
(
UILocalNotification
*
notification
in
notifications
)
{
[
ids
addObject
:
notification
.
options
.
id
];
}
return
ids
;
}
/**
* List of all local notifications IDs from given type.
*
* @param type
* Notification life cycle type
*/
-
(
NSArray
*
)
localNotificationIdsByType
:
(
APPNotificationType
)
type
{
NSArray
*
notifications
=
self
.
localNotifications
;
NSMutableArray
*
ids
=
[[
NSMutableArray
alloc
]
init
];
for
(
UILocalNotification
*
notification
in
notifications
)
{
if
(
notification
.
type
==
type
)
{
[
ids
addObject
:
notification
.
options
.
id
];
}
}
return
ids
;
}
/*
* If local notification with ID exists.
*
* @param id
* Notification ID
*/
-
(
BOOL
)
localNotificationExist
:
(
NSNumber
*
)
id
{
return
[
self
localNotificationWithId
:
id
]
!=
NULL
;
}
/* If local notification with ID and type exists
*
* @param id
* Notification ID
* @param type
* Notification life cycle type
*/
-
(
BOOL
)
localNotificationExist
:
(
NSNumber
*
)
id
type
:
(
APPNotificationType
)
type
{
return
[
self
localNotificationWithId
:
id
andType
:
type
]
!=
NULL
;
}
/**
* Get local notification with ID.
*
* @param id
* Notification ID
*/
-
(
UILocalNotification
*
)
localNotificationWithId
:
(
NSNumber
*
)
id
{
NSArray
*
notifications
=
self
.
localNotifications
;
for
(
UILocalNotification
*
notification
in
notifications
)
{
NSString
*
fid
=
[
NSString
stringWithFormat
:
@"%@"
,
notification
.
options
.
id
];
if
([
fid
isEqualToString
:[
id
stringValue
]])
{
return
notification
;
}
}
return
NULL
;
}
/*
* Get local notification with ID and type.
*
* @param id
* Notification ID
* @param type
* Notification life cycle type
*/
-
(
UILocalNotification
*
)
localNotificationWithId
:
(
NSNumber
*
)
id
andType
:
(
APPNotificationType
)
type
{
UILocalNotification
*
notification
=
[
self
localNotificationWithId
:
id
];
if
(
notification
&&
notification
.
type
==
type
)
return
notification
;
return
NULL
;
}
/**
* List of properties from all notifications.
*/
-
(
NSArray
*
)
localNotificationOptions
{
NSArray
*
notifications
=
self
.
localNotifications
;
NSMutableArray
*
options
=
[[
NSMutableArray
alloc
]
init
];
for
(
UILocalNotification
*
notification
in
notifications
)
{
[
options
addObject
:
notification
.
options
.
userInfo
];
}
return
options
;
}
/**
* List of properties from all local notifications from given type.
*
* @param type
* Notification life cycle type
*/
-
(
NSArray
*
)
localNotificationOptionsByType
:
(
APPNotificationType
)
type
{
NSArray
*
notifications
=
self
.
localNotifications
;
NSMutableArray
*
options
=
[[
NSMutableArray
alloc
]
init
];
for
(
UILocalNotification
*
notification
in
notifications
)
{
if
(
notification
.
type
==
type
)
{
[
options
addObject
:
notification
.
options
.
userInfo
];
}
}
return
options
;
}
/**
* List of properties from given local notifications.
*
* @param ids
* Notification IDs
*/
-
(
NSArray
*
)
localNotificationOptionsById
:
(
NSArray
*
)
ids
{
UILocalNotification
*
notification
;
NSMutableArray
*
options
=
[[
NSMutableArray
alloc
]
init
];
for
(
NSNumber
*
id
in
ids
)
{
notification
=
[
self
localNotificationWithId
:
id
];
if
(
notification
)
{
[
options
addObject
:
notification
.
options
.
userInfo
];
}
}
return
options
;
}
/**
* List of properties from given local notifications.
*
* @param type
* Notification life cycle type
* @param ids
* Notification IDs
*/
-
(
NSArray
*
)
localNotificationOptionsByType
:
(
APPNotificationType
)
type
andId
:
(
NSArray
*
)
ids
{
UILocalNotification
*
notification
;
NSMutableArray
*
options
=
[[
NSMutableArray
alloc
]
init
];
for
(
NSNumber
*
id
in
ids
)
{
notification
=
[
self
localNotificationWithId
:
id
];
if
(
notification
&&
notification
.
type
==
type
)
{
[
options
addObject
:
notification
.
options
.
userInfo
];
}
}
return
options
;
}
/*
* Clear all local notfications.
*/
-
(
void
)
clearAllLocalNotifications
{
NSArray
*
notifications
=
self
.
triggeredLocalNotifications
;
for
(
UILocalNotification
*
notification
in
notifications
)
{
[
self
clearLocalNotification
:
notification
];
}
}
/*
* Clear single local notfication.
*
* @param notification
* The local notification object
*/
-
(
void
)
clearLocalNotification
:
(
UILocalNotification
*
)
notification
{
[
self
cancelLocalNotification
:
notification
];
if
([
notification
isRepeating
])
{
notification
.
fireDate
=
notification
.
options
.
fireDate
;
[
self
scheduleLocalNotification
:
notification
];
};
}
@end
src/ios9/UILocalNotification+APPLocalNotification.ios9.h
deleted
100644 → 0
View file @
f6544e8b
/*
* 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
* as defined in and that are subject to the Apache License
* Version 2.0 (the 'License'). You may not use this file except in
* compliance with the License. Please obtain a copy of the License at
* http://opensource.org/licenses/Apache-2.0/ and read it before using this
* file.
*
* The Original Code and all software distributed under the License are
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
* Please see the License for the specific language governing rights and
* limitations under the License.
*
* @APPPLANT_LICENSE_HEADER_END@
*/
#import "APPLocalNotificationOptions.ios9.h"
#ifndef APPNotificationType_DEFINED
typedef
NS_ENUM
(
NSUInteger
,
APPNotificationType
)
{
NotifcationTypeAll
=
0
,
NotifcationTypeScheduled
=
1
,
NotifcationTypeTriggered
=
2
};
#endif
@interface
UILocalNotification
(
APPLocalNotification
)
// Initialize a new local notification
-
(
id
)
initWithOptions
:(
NSDictionary
*
)
dict
;
// The options provided by the plug-in
-
(
APPLocalNotificationOptions9
*
)
options
;
// Timeinterval since last trigger date
-
(
double
)
timeIntervalSinceLastTrigger
;
// Timeinterval since fire date
-
(
double
)
timeIntervalSinceFireDate
;
// If the fire date was in the past
-
(
BOOL
)
wasInThePast
;
// If the notification was already scheduled
-
(
BOOL
)
isScheduled
;
// If the notification was already triggered
-
(
BOOL
)
isTriggered
;
// If the notification was updated
-
(
BOOL
)
wasUpdated
;
// If it's a repeating notification
-
(
BOOL
)
isRepeating
;
// Notifciation type
-
(
APPNotificationType
)
type
;
// Encode the user info dict to JSON
-
(
NSString
*
)
encodeToJSON
;
@end
src/ios9/UILocalNotification+APPLocalNotification.ios9.m
deleted
100644 → 0
View file @
f6544e8b
/*
* 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
* as defined in and that are subject to the Apache License
* Version 2.0 (the 'License'). You may not use this file except in
* compliance with the License. Please obtain a copy of the License at
* http://opensource.org/licenses/Apache-2.0/ and read it before using this
* file.
*
* The Original Code and all software distributed under the License are
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
* Please see the License for the specific language governing rights and
* limitations under the License.
*
* @APPPLANT_LICENSE_HEADER_END@
*/
#import "UILocalNotification+APPLocalNotification.ios9.h"
#import "APPLocalNotificationOptions.ios9.h"
#import <objc/runtime.h>
static
char
optionsKey
;
NSInteger
const
APPLocalNotificationTypeScheduled
=
1
;
NSInteger
const
APPLocalNotificationTypeTriggered
=
2
;
@implementation
UILocalNotification
(
APPLocalNotification
)
#pragma mark -
#pragma mark Init
/**
* Initialize a local notification with the given options when calling on JS side:
* notification.local.add(options)
*/
-
(
id
)
initWithOptions
:(
NSDictionary
*
)
dict
{
self
=
[
self
init
];
[
self
setUserInfo
:
dict
];
[
self
__init
];
return
self
;
}
/**
* Applies the given options when calling on JS side:
* notification.local.add(options)
*/
-
(
void
)
__init
{
APPLocalNotificationOptions9
*
options
=
self
.
options
;
self
.
fireDate
=
options
.
fireDate
;
self
.
timeZone
=
[
NSTimeZone
defaultTimeZone
];
self
.
applicationIconBadgeNumber
=
options
.
badgeNumber
;
self
.
repeatInterval
=
options
.
repeatInterval
;
self
.
alertBody
=
options
.
alertBody
;
self
.
soundName
=
options
.
soundName
;
if
([
self
wasInThePast
])
{
self
.
fireDate
=
[
NSDate
date
];
}
}
#pragma mark -
#pragma mark Methods
/**
* The options provided by the plug-in.
*/
-
(
APPLocalNotificationOptions9
*
)
options
{
APPLocalNotificationOptions9
*
options
=
[
self
getOptions
];
if
(
!
options
)
{
options
=
[[
APPLocalNotificationOptions9
alloc
]
initWithDict
:[
self
userInfo
]];
[
self
setOptions
:
options
];
}
return
options
;
}
/**
* Get associated option object
*/
-
(
APPLocalNotificationOptions9
*
)
getOptions
{
return
objc_getAssociatedObject
(
self
,
&
optionsKey
);
}
/**
* Set associated option object
*/
-
(
void
)
setOptions
:
(
APPLocalNotificationOptions9
*
)
options
{
objc_setAssociatedObject
(
self
,
&
optionsKey
,
options
,
OBJC_ASSOCIATION_RETAIN_NONATOMIC
);
}
/**
* The repeating interval in seconds.
*/
-
(
int
)
repeatIntervalInSeconds
{
switch
(
self
.
repeatInterval
)
{
case
NSCalendarUnitMinute
:
return
60
;
case
NSCalendarUnitHour
:
return
60000
;
case
NSCalendarUnitDay
:
case
NSCalendarUnitWeekOfYear
:
case
NSCalendarUnitMonth
:
case
NSCalendarUnitYear
:
return
86400
;
default
:
return
1
;
}
}
/**
* Timeinterval since fire date.
*/
-
(
double
)
timeIntervalSinceFireDate
{
NSDate
*
now
=
[
NSDate
date
];
NSDate
*
fireDate
=
self
.
fireDate
;
int
timespan
=
[
now
timeIntervalSinceDate
:
fireDate
];
return
timespan
;
}
/**
* Timeinterval since last trigger date.
*/
-
(
double
)
timeIntervalSinceLastTrigger
{
int
timespan
=
[
self
timeIntervalSinceFireDate
];
if
([
self
isRepeating
])
{
timespan
=
timespan
%
[
self
repeatIntervalInSeconds
];
}
return
timespan
;
}
/**
* Encode the user info dict to JSON.
*/
-
(
NSString
*
)
encodeToJSON
{
NSString
*
json
;
NSData
*
data
;
NSMutableDictionary
*
obj
=
[
self
.
userInfo
mutableCopy
];
[
obj
removeObjectForKey
:
@"updatedAt"
];
if
(
obj
==
NULL
||
obj
.
count
==
0
)
return
json
;
data
=
[
NSJSONSerialization
dataWithJSONObject
:
obj
options
:
NSJSONWritingPrettyPrinted
error
:
NULL
];
json
=
[[
NSString
alloc
]
initWithData
:
data
encoding
:
NSUTF8StringEncoding
];
return
[
json
stringByReplacingOccurrencesOfString
:
@"
\n
"
withString
:
@""
];
}
#pragma mark -
#pragma mark State
/**
* If the fire date was in the past.
*/
-
(
BOOL
)
wasInThePast
{
return
[
self
timeIntervalSinceLastTrigger
]
>
0
;
}
// If the notification was already scheduled
-
(
BOOL
)
isScheduled
{
return
[
self
isRepeating
]
||
!
[
self
wasInThePast
];
}
/**
* If the notification was already triggered.
*/
-
(
BOOL
)
isTriggered
{
NSDate
*
now
=
[
NSDate
date
];
NSDate
*
fireDate
=
self
.
fireDate
;
bool
isLaterThanFireDate
=
!
([
now
compare
:
fireDate
]
==
NSOrderedAscending
);
return
isLaterThanFireDate
;
}
/**
* If the notification was updated.
*/
-
(
BOOL
)
wasUpdated
{
NSDate
*
now
=
[
NSDate
date
];
NSDate
*
updatedAt
=
[
self
.
userInfo
objectForKey
:
@"updatedAt"
];
if
(
updatedAt
==
NULL
)
return
NO
;
int
timespan
=
[
now
timeIntervalSinceDate
:
updatedAt
];
return
timespan
<
1
;
}
/**
* If it's a repeating notification.
*/
-
(
BOOL
)
isRepeating
{
return
[
self
.
options
isRepeating
];
}
/**
* Process state type of the local notification.
*/
-
(
APPNotificationType
)
type
{
return
[
self
isTriggered
]
?
NotifcationTypeTriggered
:
NotifcationTypeScheduled
;
}
@end
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