Commit ab7fa803 by Sebastián Katzer

Update project

parent 9b453cc0
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="DaemonCodeAnalyzer">
<disable_hints />
</component>
<component name="EntryPointsManager">
<entry_points version="2.0" />
</component>
......@@ -32,61 +29,9 @@
<ConfirmationsSetting value="0" id="Add" />
<ConfirmationsSetting value="0" id="Remove" />
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_6" assert-keyword="true" jdk-15="true" project-jdk-name="Android API 21 Platform" project-jdk-type="Android SDK">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_6" assert-keyword="true" jdk-15="true" project-jdk-name="Android API 22 Platform" project-jdk-type="Android SDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
<component name="RunManager">
<configuration default="true" type="Remote" factoryName="Remote">
<option name="USE_SOCKET_TRANSPORT" value="true" />
<option name="SERVER_MODE" value="false" />
<option name="SHMEM_ADDRESS" value="javadebug" />
<option name="HOST" value="localhost" />
<option name="PORT" value="5005" />
<method />
</configuration>
<configuration default="true" type="Application" factoryName="Application">
<option name="MAIN_CLASS_NAME" />
<option name="VM_PARAMETERS" />
<option name="PROGRAM_PARAMETERS" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="ENABLE_SWING_INSPECTOR" value="false" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<module name="" />
<envs />
<method />
</configuration>
<configuration default="true" type="JUnit" factoryName="JUnit">
<module name="" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="PACKAGE_NAME" />
<option name="MAIN_CLASS_NAME" />
<option name="METHOD_NAME" />
<option name="TEST_OBJECT" value="class" />
<option name="VM_PARAMETERS" value="-ea" />
<option name="PARAMETERS" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="moduleWithDependencies" />
</option>
<envs />
<patterns />
<method />
</configuration>
<list size="0" />
<configuration name="&lt;template&gt;" type="#org.jetbrains.idea.devkit.run.PluginConfigurationType" default="true" selected="false">
<option name="VM_PARAMETERS" value="-Xmx512m -Xms256m -XX:MaxPermSize=250m -ea" />
</configuration>
<configuration name="&lt;template&gt;" type="WebApp" default="true" selected="false">
<Host>localhost</Host>
<Port>5050</Port>
</configuration>
</component>
<component name="masterDetails">
<states>
<state key="Copyright.UI">
......@@ -126,5 +71,4 @@
</state>
</states>
</component>
</project>
</project>
\ No newline at end of file
......@@ -15,6 +15,8 @@
<list default="true" id="fa860bb5-e33b-45b0-af5c-2a9cb390f8e8" name="Default" comment="" />
<ignored path="cordova-example-local-notifications.iws" />
<ignored path=".idea/workspace.xml" />
<ignored path="$PROJECT_DIR$/out/" />
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="TRACKING_ENABLED" value="true" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
......@@ -25,89 +27,37 @@
<component name="CreatePatchCommitExecutor">
<option name="PATCH_PATH" value="" />
</component>
<component name="DaemonCodeAnalyzer">
<disable_hints />
</component>
<component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
<component name="FavoritesManager">
<favorites_list name="cordova-example-local-notifications" />
</component>
<component name="FileEditorManager">
<leaf>
<file leaf-file-name="LocalNotification.java" pinned="false" current="true" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/localnotification/LocalNotification.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="6450" max-vertical-offset="8535">
<caret line="465" column="0" selection-start-line="465" selection-start-column="0" selection-end-line="465" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Manager.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/Manager.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="4905" max-vertical-offset="6930">
<caret line="327" column="17" selection-start-line="0" selection-start-column="0" selection-end-line="456" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Notification.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/Notification.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="690" max-vertical-offset="5610">
<caret line="46" column="28" selection-start-line="0" selection-start-column="0" selection-end-line="368" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
</file>
</leaf>
<leaf />
</component>
<component name="FindManager">
<FindUsagesManager>
<setting name="OPEN_NEW_TAB" value="true" />
</FindUsagesManager>
</component>
<component name="GradleLocalSettings">
<option name="externalProjectsViewState">
<projects_view />
</option>
</component>
<component name="IdeDocumentHistory">
<option name="changedFiles">
<option name="CHANGED_PATHS">
<list>
<option value="$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/Asset.java" />
<option value="$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/NotificationBuilder.java" />
<option value="$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/AbstractActivity.java" />
<option value="$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/AbstractBroadcastReceiver.java" />
<option value="$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/Activity.java" />
<option value="$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/BroadcastReceiver.java" />
<option value="$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/AbstractDeleteReceiver.java" />
<option value="$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/localnotification/DeleteIntentReceiver.java" />
<option value="$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/localnotification/ReceiverActivity.java" />
<option value="$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/localnotification/Receiver.java" />
<option value="$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/Builder.java" />
<option value="$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/Options.java" />
<option value="$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/ClearReceiver.java" />
<option value="$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/AbstractClearReceiver.java" />
<option value="$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/AbstractClickActivity.java" />
<option value="$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/AbstractTriggerReceiver.java" />
<option value="$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/ClickActivity.java" />
<option value="$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/Notification.java" />
<option value="$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/TriggerReceiver.java" />
<option value="$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/localnotification/ClearReceiver.java" />
<option value="$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/localnotification/Restore.java" />
<option value="$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/localnotification/TriggerReceiver.java" />
<option value="$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/AbstractRecstoreReceiver.java" />
<option value="$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/AbstractRestoreReceiver.java" />
<option value="$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/RestoreReceiver.java" />
<option value="$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/localnotification/RestoreReceiver.java" />
<option value="$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/localnotification/ClickActivity.java" />
<option value="$PROJECT_DIR$/platforms/android/AndroidManifest.xml" />
<option value="$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/Options.java" />
<option value="$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/AssetUtil.java" />
<option value="$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/Notification.java" />
<option value="$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/Manager.java" />
<option value="$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/localnotification/LocalNotification.java" />
</list>
</option>
</component>
<component name="NamedScopeManager">
<order />
</component>
<component name="ProjectFrameBounds">
<option name="y" value="23" />
<option name="width" value="1440" />
......@@ -139,7 +89,6 @@
<sortByType />
</navigator>
<panes>
<pane id="Scope" />
<pane id="AndroidView">
<subPane>
<PATH>
......@@ -147,10 +96,63 @@
<option name="myItemId" value="cordova-example-local-notifications" />
<option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="android" />
<option name="myItemType" value="com.android.tools.idea.navigator.nodes.NonAndroidModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="java" />
<option name="myItemType" value="com.android.tools.idea.navigator.nodes.NonAndroidSourceTypeNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="cordova-example-local-notifications" />
<option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="android" />
<option name="myItemType" value="com.android.tools.idea.navigator.nodes.NonAndroidModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="java" />
<option name="myItemType" value="com.android.tools.idea.navigator.nodes.NonAndroidSourceTypeNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="plugin" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="cordova-example-local-notifications" />
<option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="android" />
<option name="myItemType" value="com.android.tools.idea.navigator.nodes.NonAndroidModuleNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="java" />
<option name="myItemType" value="com.android.tools.idea.navigator.nodes.NonAndroidSourceTypeNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="plugin" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="localnotification" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="cordova-example-local-notifications" />
<option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidViewProjectNode" />
</PATH_ELEMENT>
</PATH>
</subPane>
</pane>
<pane id="PackagesPane" />
<pane id="ProjectPane">
<subPane>
<PATH>
......@@ -171,6 +173,9 @@
</PATH>
</subPane>
</pane>
<pane id="Scope" />
<pane id="PackagesPane" />
<pane id="Scratches" />
</panes>
</component>
<component name="PropertiesComponent">
......@@ -188,8 +193,8 @@
<property name="android.project.structure.proportion" value="0.15" />
<property name="recentsLimit" value="5" />
<property name="restartRequiresConfirmation" value="true" />
<property name="ANDROID_EXTENDED_DEVICE_CHOOSER_SERIALS" value="TWPR9PJRFATWTSNR" />
<property name="ANDROID_EXTENDED_DEVICE_CHOOSER_AVD" value="Nexus_5_API_21" />
<property name="ANDROID_EXTENDED_DEVICE_CHOOSER_SERIALS" value="" />
<property name="ANDROID_EXTENDED_DEVICE_CHOOSER_AVD" value="Nexus_5_API_22" />
<property name="FullScreen" value="false" />
</component>
<component name="RecentsManager">
......@@ -199,6 +204,30 @@
</key>
</component>
<component name="RunManager" selected="Android Application.android">
<configuration default="true" type="AndroidRunConfigurationType" factoryName="Android Application">
<module name="" />
<option name="ACTIVITY_CLASS" value="" />
<option name="MODE" value="default_activity" />
<option name="DEPLOY" value="true" />
<option name="ARTIFACT_NAME" value="" />
<option name="TARGET_SELECTION_MODE" value="EMULATOR" />
<option name="USE_LAST_SELECTED_DEVICE" value="false" />
<option name="PREFERRED_AVD" value="" />
<option name="USE_COMMAND_LINE" value="true" />
<option name="COMMAND_LINE" value="" />
<option name="WIPE_USER_DATA" value="false" />
<option name="DISABLE_BOOT_ANIMATION" value="false" />
<option name="NETWORK_SPEED" value="full" />
<option name="NETWORK_LATENCY" value="none" />
<option name="CLEAR_LOGCAT" value="false" />
<option name="SHOW_LOGCAT_AUTOMATICALLY" value="true" />
<option name="FILTER_LOGCAT_AUTOMATICALLY" value="true" />
<option name="SELECTED_MATRIX_CONFIGURATION_ID" value="0" />
<option name="SELECTED_CLOUD_PROJECT_ID" value="" />
<option name="IS_VALID_CLOUD_SELECTION" value="false" />
<option name="INVALID_CLOUD_SELECTION_ERROR" value="" />
<method />
</configuration>
<configuration default="true" type="AndroidTestRunConfigurationType" factoryName="Android Tests">
<module name="" />
<option name="TESTING_TYPE" value="0" />
......@@ -218,17 +247,14 @@
<option name="CLEAR_LOGCAT" value="false" />
<option name="SHOW_LOGCAT_AUTOMATICALLY" value="true" />
<option name="FILTER_LOGCAT_AUTOMATICALLY" value="true" />
<method />
</configuration>
<configuration default="true" type="Remote" factoryName="Remote">
<option name="USE_SOCKET_TRANSPORT" value="true" />
<option name="SERVER_MODE" value="false" />
<option name="SHMEM_ADDRESS" value="javadebug" />
<option name="HOST" value="localhost" />
<option name="PORT" value="5005" />
<option name="SELECTED_MATRIX_CONFIGURATION_ID" value="0" />
<option name="SELECTED_CLOUD_PROJECT_ID" value="" />
<option name="IS_VALID_CLOUD_SELECTION" value="false" />
<option name="INVALID_CLOUD_SELECTION_ERROR" value="" />
<method />
</configuration>
<configuration default="true" type="Application" factoryName="Application">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<option name="MAIN_CLASS_NAME" />
<option name="VM_PARAMETERS" />
<option name="PROGRAM_PARAMETERS" />
......@@ -242,7 +268,24 @@
<envs />
<method />
</configuration>
<configuration default="true" type="GradleRunConfiguration" factoryName="Gradle">
<ExternalSystemSettings>
<option name="executionName" />
<option name="externalProjectPath" />
<option name="externalSystemIdString" value="GRADLE" />
<option name="scriptParameters" />
<option name="taskDescriptions">
<list />
</option>
<option name="taskNames">
<list />
</option>
<option name="vmOptions" />
</ExternalSystemSettings>
<method />
</configuration>
<configuration default="true" type="JUnit" factoryName="JUnit">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<module name="" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
......@@ -261,28 +304,20 @@
<envs />
<patterns />
<method>
<option name="Make" enabled="true" />
<option name="Android.Gradle.BeforeRunTask" enabled="true" />
</method>
</configuration>
<configuration default="true" type="AndroidRunConfigurationType" factoryName="Android Application">
<module name="" />
<option name="ACTIVITY_CLASS" value="" />
<option name="MODE" value="default_activity" />
<option name="DEPLOY" value="true" />
<option name="ARTIFACT_NAME" value="" />
<option name="TARGET_SELECTION_MODE" value="EMULATOR" />
<option name="USE_LAST_SELECTED_DEVICE" value="false" />
<option name="PREFERRED_AVD" value="" />
<option name="USE_COMMAND_LINE" value="true" />
<option name="COMMAND_LINE" value="" />
<option name="WIPE_USER_DATA" value="false" />
<option name="DISABLE_BOOT_ANIMATION" value="false" />
<option name="NETWORK_SPEED" value="full" />
<option name="NETWORK_LATENCY" value="none" />
<option name="CLEAR_LOGCAT" value="false" />
<option name="SHOW_LOGCAT_AUTOMATICALLY" value="true" />
<option name="FILTER_LOGCAT_AUTOMATICALLY" value="true" />
<configuration default="true" type="JarApplication" factoryName="JAR Application">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<envs />
<method />
</configuration>
<configuration default="true" type="Remote" factoryName="Remote">
<option name="USE_SOCKET_TRANSPORT" value="true" />
<option name="SERVER_MODE" value="false" />
<option name="SHMEM_ADDRESS" value="javadebug" />
<option name="HOST" value="localhost" />
<option name="PORT" value="5005" />
<method />
</configuration>
<configuration default="false" name="android" type="AndroidRunConfigurationType" factoryName="Android Application">
......@@ -303,6 +338,10 @@
<option name="CLEAR_LOGCAT" value="false" />
<option name="SHOW_LOGCAT_AUTOMATICALLY" value="true" />
<option name="FILTER_LOGCAT_AUTOMATICALLY" value="true" />
<option name="SELECTED_MATRIX_CONFIGURATION_ID" value="0" />
<option name="SELECTED_CLOUD_PROJECT_ID" value="" />
<option name="IS_VALID_CLOUD_SELECTION" value="false" />
<option name="INVALID_CLOUD_SELECTION_ERROR" value="" />
<RunnerSettings RunnerId="AndroidDebugRunner" />
<ConfigurationWrapper RunnerId="AndroidDebugRunner" />
<method />
......@@ -319,39 +358,35 @@
</configuration>
</component>
<component name="ShelveChangesManager" show_recycled="false" />
<component name="SliceManager">
<option name="analysisUIOptions">
<AnalysisUIOptions />
</option>
</component>
<component name="ToolWindowManager">
<frame x="0" y="23" width="1440" height="809" extended-state="6" />
<editor active="false" />
<layout>
<window_info id="Palette&#9;" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Designer" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Captures" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3997114" sideWeight="0.46280402" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32900432" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Build Variants" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
<window_info id="Build Variants" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.19097957" sideWeight="0.5050505" order="2" side_tool="true" content_ui="tabs" />
<window_info id="Gradle Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32900432" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
<window_info id="Android" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.32756132" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32756132" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
<window_info id="Android" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32756132" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.2532189" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.26752505" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25299507" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Application Servers" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.19097957" sideWeight="0.4949495" order="0" side_tool="false" content_ui="combo" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32756132" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Memory Monitor" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3997114" sideWeight="0.53648067" order="7" side_tool="true" content_ui="tabs" />
<window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Application Servers" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
<window_info id="Memory Monitor" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3997114" sideWeight="0.53648067" order="7" side_tool="true" content_ui="tabs" />
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32756132" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32756132" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
</layout>
</component>
......@@ -366,40 +401,72 @@
<component name="VcsContentAnnotationSettings">
<option name="myLimit" value="2678400000" />
</component>
<component name="VcsManagerConfiguration">
<option name="myTodoPanelSettings">
<TodoPanelSettings />
</option>
</component>
<component name="XDebuggerManager">
<breakpoint-manager>
<breakpoints>
<line-breakpoint enabled="true" type="java-line">
<url>file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/AssetUtil.java</url>
<line>292</line>
<properties />
<option name="timeStamp" value="169" />
</line-breakpoint>
<line-breakpoint enabled="true" type="java-line">
<url>file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/AssetUtil.java</url>
<line>295</line>
<properties />
<option name="timeStamp" value="170" />
</line-breakpoint>
<line-breakpoint enabled="true" type="java-line">
<url>file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/AssetUtil.java</url>
<line>298</line>
<properties />
<option name="timeStamp" value="171" />
</line-breakpoint>
</breakpoints>
<option name="time" value="191" />
<option name="time" value="213" />
</breakpoint-manager>
<watches-manager />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/localnotification/LocalNotification.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="6450" max-vertical-offset="8535">
<state vertical-scroll-proportion="0.0">
<caret line="542" column="7" selection-start-line="542" selection-start-column="7" selection-end-line="542" selection-end-column="7" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/Options.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/Manager.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="327" column="17" selection-start-line="0" selection-start-column="0" selection-end-line="456" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/Notification.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="46" column="28" selection-start-line="0" selection-start-column="0" selection-end-line="368" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/localnotification/LocalNotification.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/Manager.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="327" column="17" selection-start-line="0" selection-start-column="0" selection-end-line="456" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/Notification.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="46" column="28" selection-start-line="0" selection-start-column="0" selection-end-line="368" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/localnotification/LocalNotification.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="465" column="0" selection-start-line="465" selection-start-column="0" selection-end-line="465" selection-end-column="0" />
<folding />
</state>
......@@ -407,7 +474,7 @@
</entry>
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/Manager.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="4905" max-vertical-offset="6930">
<state vertical-scroll-proportion="0.0">
<caret line="327" column="17" selection-start-line="0" selection-start-column="0" selection-end-line="456" selection-end-column="0" />
<folding />
</state>
......@@ -415,7 +482,7 @@
</entry>
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/Notification.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="690" max-vertical-offset="5610">
<state vertical-scroll-proportion="0.0">
<caret line="46" column="28" selection-start-line="0" selection-start-column="0" selection-end-line="368" selection-end-column="0" />
<folding />
</state>
......@@ -423,7 +490,7 @@
</entry>
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/localnotification/LocalNotification.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="6450" max-vertical-offset="8535">
<state vertical-scroll-proportion="0.0">
<caret line="465" column="0" selection-start-line="465" selection-start-column="0" selection-end-line="465" selection-end-column="0" />
<folding />
</state>
......@@ -431,7 +498,7 @@
</entry>
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/Manager.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="4905" max-vertical-offset="6930">
<state vertical-scroll-proportion="0.0">
<caret line="327" column="17" selection-start-line="0" selection-start-column="0" selection-end-line="456" selection-end-column="0" />
<folding />
</state>
......@@ -439,7 +506,7 @@
</entry>
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/Notification.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="690" max-vertical-offset="5610">
<state vertical-scroll-proportion="0.0">
<caret line="46" column="28" selection-start-line="0" selection-start-column="0" selection-end-line="368" selection-end-column="0" />
<folding />
</state>
......@@ -447,7 +514,7 @@
</entry>
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/AssetUtil.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="5100" max-vertical-offset="6015">
<state vertical-scroll-proportion="0.0">
<caret line="131" column="14" selection-start-line="131" selection-start-column="14" selection-end-line="131" selection-end-column="14" />
<folding />
</state>
......@@ -455,21 +522,21 @@
</entry>
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/Options.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="2025" max-vertical-offset="4650">
<state vertical-scroll-proportion="0.0">
<caret line="135" column="0" selection-start-line="135" selection-start-column="0" selection-end-line="135" selection-end-column="0" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/Builder.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="2010" max-vertical-offset="3000">
<state vertical-scroll-proportion="0.0">
<caret line="134" column="22" selection-start-line="134" selection-start-column="22" selection-end-line="134" selection-end-column="22" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/localnotification/LocalNotification.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="420" max-vertical-offset="7515">
<state vertical-scroll-proportion="0.0">
<caret line="63" column="14" selection-start-line="63" selection-start-column="14" selection-end-line="63" selection-end-column="14" />
<folding />
</state>
......@@ -477,14 +544,14 @@
</entry>
<entry file="file://$PROJECT_DIR$/platforms/android/CordovaLib/src/org/apache/cordova/CordovaPlugin.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="735" max-vertical-offset="3555">
<state vertical-scroll-proportion="0.0">
<caret line="49" column="36" selection-start-line="49" selection-start-column="36" selection-end-line="49" selection-end-column="36" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/localnotification/LocalNotification.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="420" max-vertical-offset="7575">
<state vertical-scroll-proportion="0.0">
<caret line="63" column="14" selection-start-line="63" selection-start-column="14" selection-end-line="63" selection-end-column="14" />
<folding />
</state>
......@@ -492,14 +559,14 @@
</entry>
<entry file="file://$PROJECT_DIR$/platforms/android/CordovaLib/src/org/apache/cordova/CordovaPlugin.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="735" max-vertical-offset="3555">
<state vertical-scroll-proportion="0.0">
<caret line="49" column="36" selection-start-line="49" selection-start-column="36" selection-end-line="49" selection-end-column="36" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/localnotification/LocalNotification.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="405" max-vertical-offset="7575">
<state vertical-scroll-proportion="0.0">
<caret line="62" column="14" selection-start-line="62" selection-start-column="14" selection-end-line="62" selection-end-column="14" />
<folding />
</state>
......@@ -507,14 +574,14 @@
</entry>
<entry file="file://$PROJECT_DIR$/platforms/android/CordovaLib/src/org/apache/cordova/CordovaPlugin.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="735" max-vertical-offset="3555">
<state vertical-scroll-proportion="0.0">
<caret line="49" column="36" selection-start-line="49" selection-start-column="36" selection-end-line="49" selection-end-column="36" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/localnotification/LocalNotification.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="8055">
<state vertical-scroll-proportion="0.0">
<caret line="46" column="45" selection-start-line="46" selection-start-column="39" selection-end-line="46" selection-end-column="52" />
<folding />
</state>
......@@ -522,14 +589,14 @@
</entry>
<entry file="file://$PROJECT_DIR$/platforms/android/CordovaLib/src/org/apache/cordova/CordovaPlugin.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="270" max-vertical-offset="3090">
<state vertical-scroll-proportion="0.0">
<caret line="54" column="32" selection-start-line="54" selection-start-column="32" selection-end-line="54" selection-end-column="32" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/localnotification/LocalNotification.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="8055">
<state vertical-scroll-proportion="0.0">
<caret line="46" column="45" selection-start-line="46" selection-start-column="39" selection-end-line="46" selection-end-column="52" />
<folding />
</state>
......@@ -537,106 +604,167 @@
</entry>
<entry file="file://$PROJECT_DIR$/platforms/android/CordovaLib/src/org/apache/cordova/CordovaPlugin.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="270" max-vertical-offset="3090">
<state vertical-scroll-proportion="0.0">
<caret line="54" column="32" selection-start-line="54" selection-start-column="32" selection-end-line="54" selection-end-column="32" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/platforms/android/AndroidManifest.xml">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="195" max-vertical-offset="465">
<state vertical-scroll-proportion="0.0">
<caret line="13" column="68" selection-start-line="13" selection-start-column="68" selection-end-line="13" selection-end-column="68" />
</state>
</provider>
</entry>
<entry file="jar://$USER_HOME$/.android/sdk/platforms/android-19/android.jar!/android/os/MessageQueue.class">
<entry file="file://$PROJECT_DIR$/platforms/android/CordovaLib/src/org/apache/cordova/CordovaPlugin.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="345">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<state vertical-scroll-proportion="0.0">
<caret line="49" column="36" selection-start-line="49" selection-start-column="36" selection-end-line="49" selection-end-column="36" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/AbstractClickActivity.java">
<entry file="file://$PROJECT_DIR$/platforms/android/AndroidManifest.xml">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="-0.111872144" vertical-offset="199" max-vertical-offset="1230">
<caret line="37" column="22" selection-start-line="37" selection-start-column="22" selection-end-line="37" selection-end-column="22" />
<state vertical-scroll-proportion="0.72">
<caret line="18" column="60" selection-start-line="18" selection-start-column="60" selection-end-line="18" selection-end-column="60" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/Manager.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="353" column="0" selection-start-line="353" selection-start-column="0" selection-end-line="353" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/ClickActivity.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="45" max-vertical-offset="570">
<state vertical-scroll-proportion="0.0">
<caret line="30" column="45" selection-start-line="30" selection-start-column="35" selection-end-line="30" selection-end-column="56" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/ClearReceiver.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="30" column="13" selection-start-line="30" selection-start-column="13" selection-end-line="30" selection-end-column="13" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/Builder.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="134" column="22" selection-start-line="134" selection-start-column="22" selection-end-line="134" selection-end-column="22" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/AbstractRestoreReceiver.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="38" column="22" selection-start-line="38" selection-start-column="22" selection-end-line="38" selection-end-column="22" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/AbstractClickActivity.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="37" column="22" selection-start-line="37" selection-start-column="22" selection-end-line="37" selection-end-column="22" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/AbstractClearReceiver.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="39" column="7" selection-start-line="39" selection-start-column="7" selection-end-line="39" selection-end-column="7" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/localnotification/ClearReceiver.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="33" column="13" selection-start-line="33" selection-start-column="13" selection-end-line="33" selection-end-column="13" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/localnotification/ClickActivity.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.6232877" vertical-offset="102" max-vertical-offset="780">
<state vertical-scroll-proportion="0.0">
<caret line="47" column="0" selection-start-line="47" selection-start-column="0" selection-end-line="47" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/platforms/android/CordovaLib/src/org/apache/cordova/CordovaPlugin.java">
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/localnotification/TriggerReceiver.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="255" max-vertical-offset="3090">
<caret line="49" column="36" selection-start-line="49" selection-start-column="36" selection-end-line="49" selection-end-column="36" />
<state vertical-scroll-proportion="0.40601504">
<caret line="39" column="26" selection-start-line="39" selection-start-column="26" selection-end-line="39" selection-end-column="26" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/platforms/android/AndroidManifest.xml">
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/localnotification/RestoreReceiver.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.72" vertical-offset="0" max-vertical-offset="495">
<caret line="18" column="60" selection-start-line="18" selection-start-column="60" selection-end-line="18" selection-end-column="60" />
<state vertical-scroll-proportion="0.24812031">
<caret line="34" column="13" selection-start-line="34" selection-start-column="13" selection-end-line="34" selection-end-column="13" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/AssetUtil.java">
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/Notification.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="-8.561644" vertical-offset="5100" max-vertical-offset="6015">
<caret line="131" column="14" selection-start-line="131" selection-start-column="14" selection-end-line="131" selection-end-column="14" />
<state vertical-scroll-proportion="0.7669173">
<caret line="192" column="27" selection-start-line="192" selection-start-column="27" selection-end-line="192" selection-end-column="27" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/Options.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="771" max-vertical-offset="3915">
<caret line="135" column="0" selection-start-line="135" selection-start-column="0" selection-end-line="135" selection-end-column="0" />
<state vertical-scroll-proportion="0.4781955">
<caret line="220" column="0" selection-start-line="220" selection-start-column="0" selection-end-line="220" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/Builder.java">
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/AbstractTriggerReceiver.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="1296" max-vertical-offset="2565">
<caret line="134" column="22" selection-start-line="134" selection-start-column="22" selection-end-line="134" selection-end-column="22" />
<state vertical-scroll-proportion="0.75789475">
<caret line="69" column="0" selection-start-line="69" selection-start-column="0" selection-end-line="69" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/Notification.java">
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/TriggerReceiver.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="4965">
<caret line="46" column="28" selection-start-line="0" selection-start-column="0" selection-end-line="368" selection-end-column="0" />
<state vertical-scroll-proportion="0.518797">
<caret line="46" column="0" selection-start-line="46" selection-start-column="0" selection-end-line="46" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/Manager.java">
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/localnotification/LocalNotification.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="4114" max-vertical-offset="6270">
<caret line="327" column="17" selection-start-line="0" selection-start-column="0" selection-end-line="456" selection-end-column="0" />
<state vertical-scroll-proportion="-1.5618557">
<caret line="268" column="6" selection-start-line="268" selection-start-column="6" selection-end-line="268" selection-end-column="6" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/localnotification/LocalNotification.java">
<entry file="file://$PROJECT_DIR$/platforms/android/src/de/appplant/cordova/plugin/notification/AssetUtil.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0" vertical-offset="6450" max-vertical-offset="8535">
<caret line="465" column="0" selection-start-line="465" selection-start-column="0" selection-end-line="465" selection-end-column="0" />
<state vertical-scroll-proportion="-4.39433">
<caret line="208" column="39" selection-start-line="208" selection-start-column="20" selection-end-line="208" selection-end-column="39" />
<folding />
</state>
</provider>
</entry>
</component>
</project>
</project>
\ No newline at end of file
......@@ -22,6 +22,6 @@
<activity android:exported="false" android:launchMode="singleInstance" android:name="de.appplant.cordova.plugin.notification.ClickActivity" android:theme="@android:style/Theme.NoDisplay" />
</application>
<uses-sdk android:minSdkVersion="10" android:targetSdkVersion="22" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
</manifest>
......@@ -172,9 +172,7 @@ exports.cancelAll = function (callback, scope) {
* The scope for the callback function
*/
exports.isPresent = function (id, callback, scope) {
var notId = (id || '0').toString();
this.exec('isPresent', notId, callback, scope);
this.exec('isPresent', id || 0, callback, scope);
};
/**
......@@ -188,9 +186,7 @@ exports.isPresent = function (id, callback, scope) {
* The scope for the callback function
*/
exports.isScheduled = function (id, callback, scope) {
var notId = (id || '0').toString();
this.exec('isScheduled', notId, callback, scope);
this.exec('isScheduled', id || 0, callback, scope);
};
/**
......@@ -204,9 +200,7 @@ exports.isScheduled = function (id, callback, scope) {
* The scope for the callback function
*/
exports.isTriggered = function (id, callback, scope) {
var notId = (id || '0').toString();
this.exec('isTriggered', notId, callback, scope);
this.exec('isTriggered', id || 0, callback, scope);
};
/**
......@@ -275,7 +269,7 @@ exports.get = function () {
scope = args[2];
if (!Array.isArray(ids)) {
this.exec('getSingle', ids.toString(), callback, scope);
this.exec('getSingle', Number(ids), callback, scope);
return;
}
......@@ -323,7 +317,7 @@ exports.getScheduled = function () {
}
if (!Array.isArray(ids)) {
this.exec('getSingleScheduled', ids.toString(), callback, scope);
this.exec('getSingleScheduled', Number(ids), callback, scope);
return;
}
......@@ -371,7 +365,7 @@ exports.getTriggered = function () {
}
if (!Array.isArray(ids)) {
this.exec('getSingleTriggered', ids.toString(), callback, scope);
this.exec('getSingleTriggered', Number(ids), callback, scope);
return;
}
......
......@@ -35,7 +35,7 @@ exports._defaults = {
title: '',
sound: 'res://platform_default',
badge: 0,
id: "0",
id: 0,
data: undefined,
every: undefined,
at: undefined
......@@ -87,7 +87,9 @@ exports.mergeWithDefaults = function (options) {
options.text = this.getValueFor(options, 'text', 'message');
options.data = this.getValueFor(options, 'data', 'json');
options.autoClear = this.getValueFor(options, 'autoClear', 'autoCancel');
if (defaults.hasOwnProperty('autoClear')) {
options.autoClear = this.getValueFor(options, 'autoClear', 'autoCancel');
}
if (options.autoClear !== true && options.ongoing) {
options.autoClear = false;
......@@ -131,8 +133,9 @@ 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 = options.id.toString();
options.id = Number(options.id);
}
}
......@@ -147,13 +150,18 @@ exports.convertProperties = function (options) {
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 (typeof options.at == 'object') {
options.at = Math.round(options.at.getTime()/1000);
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') {
......@@ -175,6 +183,7 @@ exports.convertProperties = function (options) {
* The new callback function
*/
exports.createCallbackFn = function (callbackFn, scope) {
if (typeof callbackFn != 'function')
return;
......@@ -184,17 +193,17 @@ exports.createCallbackFn = function (callbackFn, scope) {
};
/**
* Convert the IDs to Strings.
* Convert the IDs to numbers.
*
* @param {String/Number[]} ids
*
* @return Array of Strings
* @return Array of Numbers
*/
exports.convertIds = function (ids) {
var convertedIds = [];
for (var i = 0; i < ids.length; i++) {
convertedIds.push(ids[i].toString());
convertedIds.push(Number(ids[i]));
}
return convertedIds;
......
......@@ -23,7 +23,8 @@
package de.appplant.cordova.plugin.localnotification;
import de.appplant.cordova.plugin.notification.*;
import de.appplant.cordova.plugin.notification.Builder;
import de.appplant.cordova.plugin.notification.Notification;
import de.appplant.cordova.plugin.notification.TriggerReceiver;
/**
......
......@@ -23,8 +23,7 @@
package de.appplant.cordova.plugin.localnotification;
import java.util.ArrayList;
import java.util.List;
import android.os.Build;
import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaInterface;
......@@ -35,9 +34,11 @@ import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.os.Build;
import java.util.ArrayList;
import java.util.List;
import de.appplant.cordova.plugin.notification.*;
import de.appplant.cordova.plugin.notification.Manager;
import de.appplant.cordova.plugin.notification.Notification;
/**
* This plugin utilizes the Android AlarmManager in combination with local
......@@ -249,7 +250,9 @@ public class LocalNotification extends CordovaPlugin {
Notification notification =
getNotificationMgr().cancel(id);
fireEvent("cancel", notification);
if (notification != null) {
fireEvent("cancel", notification);
}
}
}
......@@ -274,7 +277,9 @@ public class LocalNotification extends CordovaPlugin {
Notification notification =
getNotificationMgr().clear(id);
fireEvent("clear", notification);
if (notification != null) {
fireEvent("clear", notification);
}
}
}
......
......@@ -42,7 +42,9 @@ public class RestoreReceiver extends AbstractRestoreReceiver {
*/
@Override
public void onRestore (Notification notification) {
notification.schedule();
if (notification.isScheduled()) {
notification.schedule();
}
}
/**
......
......@@ -23,7 +23,8 @@
package de.appplant.cordova.plugin.localnotification;
import de.appplant.cordova.plugin.notification.*;
import de.appplant.cordova.plugin.notification.Builder;
import de.appplant.cordova.plugin.notification.Notification;
/**
* The alarm receiver is triggered when a scheduled alarm is fired. This class
......
......@@ -23,16 +23,6 @@
package de.appplant.cordova.plugin.notification;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import android.content.Context;
import android.content.res.AssetManager;
import android.content.res.Resources;
......@@ -43,6 +33,16 @@ import android.net.Uri;
import android.os.StrictMode;
import android.util.Log;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
/**
* Util class to map unified asset URIs to native URIs. URIs like file:///
* map to absolute paths while file:// point relatively to the www folder
......@@ -60,7 +60,7 @@ class AssetUtil {
// Ref to the context passed through the constructor to access the
// resources and app directory.
private final Context context;
/**
* Constructor
*
......@@ -102,7 +102,7 @@ class AssetUtil {
/**
* The URI for a path.
*
*
* @param path
* The given path
*/
......@@ -120,15 +120,13 @@ class AssetUtil {
return Uri.EMPTY;
}
/**
* URI for a file.
*
*
* @param path
* Absolute path like file:///...
*
*
* @return
* URI pointing to the given path
*/
......@@ -146,10 +144,10 @@ class AssetUtil {
/**
* URI for an asset.
*
*
* @param path
* Asset path like file://...
*
*
* @return
* URI pointing to the given path
*/
......@@ -191,10 +189,10 @@ class AssetUtil {
/**
* The URI for a resource.
*
*
* @param path
* The given relative path
*
*
* @return
* URI pointing to the given path
*/
......@@ -240,7 +238,7 @@ class AssetUtil {
return Uri.EMPTY;
}
/**
* Uri from remote located content.
*
......@@ -286,11 +284,11 @@ class AssetUtil {
outStream.flush();
outStream.close();
return Uri.fromFile(file);
} catch (MalformedURLException e) {
Log.e("Asset", "Incorrect URL");
Log.e("Asset", "Incorrect URL");
e.printStackTrace();
} catch (FileNotFoundException e) {
Log.e("Asset", "Failed to create new File from HTTP Content");
......@@ -305,7 +303,7 @@ class AssetUtil {
/**
* Copy content from input stream into output stream.
*
*
* @param in
* The input stream
* @param out
......
......@@ -23,8 +23,6 @@
package de.appplant.cordova.plugin.notification;
import java.util.Random;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
......@@ -33,6 +31,8 @@ import android.support.v4.app.NotificationCompat;
import org.json.JSONObject;
import java.util.Random;
/**
* Builder class for local notifications. Build fully configured local
* notification specified by JSON object passed from JS side.
......@@ -158,7 +158,7 @@ public class Builder {
return;
Intent deleteIntent = new Intent(context, clearReceiver)
.setAction(options.getId())
.setAction(options.getIdStr())
.putExtra(Options.EXTRA, options.toString());
PendingIntent dpi = PendingIntent.getBroadcast(
......
......@@ -23,8 +23,6 @@
package de.appplant.cordova.plugin.notification;
import static de.appplant.cordova.plugin.notification.Notification.PREF_KEY;
import android.app.NotificationManager;
import android.content.Context;
import android.content.SharedPreferences;
......@@ -34,12 +32,13 @@ import org.json.JSONObject;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import static de.appplant.cordova.plugin.notification.Notification.PREF_KEY;
/**
* Central way to access all or single local notifications set by specific
* state like triggered or scheduled. Offers shortcut ways to schedule,
......
......@@ -45,7 +45,7 @@ import java.util.Date;
public class Notification {
// Used to differ notifications by their life cycle state
public static enum Type {
public enum Type {
ALL, SCHEDULED, TRIGGERED
}
......@@ -105,7 +105,7 @@ public class Notification {
* Get notification ID.
*/
public int getId () {
return options.getIdAsInt();
return options.getId();
}
/**
......@@ -162,27 +162,23 @@ public class Notification {
* Schedule the local notification.
*/
public void schedule() {
long triggerTime = getNextTriggerTime();
long triggerTime = options.getTriggerTime();
persist();
// Intent gets called when the Notification gets fired
Intent intent = new Intent(context, receiver)
.setAction(options.getId())
.setAction(options.getIdStr())
.putExtra(Options.EXTRA, options.toString());
PendingIntent pi = PendingIntent.getBroadcast(
context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
getAlarmMgr().set(AlarmManager.RTC_WAKEUP, triggerTime, pi);
}
/**
* Re-schedule the local notification if repeating.
*/
void reschedule () {
if (isRepeating()) {
schedule();
getAlarmMgr().setRepeating(AlarmManager.RTC_WAKEUP,
triggerTime, options.getRepeatInterval(), pi);
} else {
getAlarmMgr().set(AlarmManager.RTC_WAKEUP, triggerTime, pi);
}
}
......@@ -208,13 +204,13 @@ public class Notification {
*/
public void cancel() {
Intent intent = new Intent(context, receiver)
.setAction(options.getId());
.setAction(options.getIdStr());
PendingIntent pi = PendingIntent.
getBroadcast(context, 0, intent, 0);
getAlarmMgr().cancel(pi);
getNotMgr().cancel(options.getIdAsInt());
getNotMgr().cancel(options.getId());
unpersist();
}
......@@ -232,7 +228,7 @@ public class Notification {
*/
@SuppressWarnings("deprecation")
private void showNotification () {
int id = getOptions().getIdAsInt();
int id = getOptions().getId();
if (Build.VERSION.SDK_INT <= 15) {
// Notification for HoneyComb to ICS
......@@ -251,26 +247,11 @@ public class Notification {
}
/**
* Next trigger time.
*/
public long getNextTriggerTime() {
long triggerTime = options.getTriggerTime();
if (!isRepeating() || !isTriggered())
return triggerTime;
long interval = options.getRepeatInterval();
int triggerCount = getTriggerCountSinceSchedule();
return triggerTime + (triggerCount + 1) * interval;
}
/**
* Count of triggers since schedule.
*/
public int getTriggerCountSinceSchedule() {
long now = System.currentTimeMillis();
long initTriggerTime = options.getTriggerTime();
long triggerTime = options.getTriggerTime();
if (!wasInThePast())
return 0;
......@@ -278,7 +259,7 @@ public class Notification {
if (!isRepeating())
return 1;
return (int) ((now - initTriggerTime) / options.getRepeatInterval());
return (int) ((now - triggerTime) / options.getRepeatInterval());
}
/**
......@@ -294,6 +275,7 @@ public class Notification {
e.printStackTrace();
}
json.remove("firstAt");
json.remove("updatedAt");
json.remove("soundUri");
json.remove("iconUri");
......@@ -309,7 +291,7 @@ public class Notification {
private void persist () {
SharedPreferences.Editor editor = getPrefs().edit();
editor.putString(options.getId(), options.toString());
editor.putString(options.getIdStr(), options.toString());
if (Build.VERSION.SDK_INT < 9) {
editor.commit();
......@@ -324,7 +306,7 @@ public class Notification {
private void unpersist () {
SharedPreferences.Editor editor = getPrefs().edit();
editor.remove(options.getId());
editor.remove(options.getIdStr());
if (Build.VERSION.SDK_INT < 9) {
editor.commit();
......
......@@ -23,16 +23,16 @@
package de.appplant.cordova.plugin.notification;
import java.util.Date;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.AlarmManager;
import android.content.Context;
import android.graphics.Bitmap;
import android.net.Uri;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.Date;
/**
* Wrapper around the JSON object passed through JS which contains all
* possible option values. Class provides simple readers and more advanced
......@@ -189,35 +189,34 @@ public class Options {
}
/**
* Trigger date in milliseconds.
* ID for the local notification as a number.
*/
public long getTriggerTime() {
return options.optLong("at", 0) * 1000;
public Integer getId() {
return options.optInt("id", 0);
}
/**
* Trigger date.
* ID for the local notification as a string.
*/
public Date getTriggerDate() {
return new Date(getTriggerTime());
public String getIdStr() {
return getId().toString();
}
/**
* ID for the local notification.
* Trigger date.
*/
public String getId() {
return options.optString("id", "0");
public Date getTriggerDate() {
return new Date(getTriggerTime());
}
/**
* ID for the local notification.
* Trigger date in milliseconds.
*/
public int getIdAsInt() {
try {
return Integer.parseInt(getId());
} catch (Exception ignore) {
return 0;
}
public long getTriggerTime() {
return Math.max(
System.currentTimeMillis(),
options.optLong("at", 0) * 1000
);
}
/**
......
......@@ -42,11 +42,6 @@ public class TriggerReceiver extends AbstractTriggerReceiver {
*/
@Override
public void onTrigger (Notification notification, boolean updated) {
if (notification.isRepeating()) {
notification.reschedule();
}
notification.show();
}
......
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0620"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "D2AAC07D0554694100DB518D"
BuildableName = "libCordova.a"
BlueprintName = "CordovaLib"
ReferencedContainer = "container:CordovaLib.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
<Testables>
</Testables>
</TestAction>
<LaunchAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
buildConfiguration = "Debug"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "D2AAC07D0554694100DB518D"
BuildableName = "libCordova.a"
BlueprintName = "CordovaLib"
ReferencedContainer = "container:CordovaLib.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
buildConfiguration = "Release"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "D2AAC07D0554694100DB518D"
BuildableName = "libCordova.a"
BlueprintName = "CordovaLib"
ReferencedContainer = "container:CordovaLib.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>SchemeUserState</key>
<dict>
<key>CordovaLib.xcscheme</key>
<dict>
<key>orderHint</key>
<integer>1</integer>
</dict>
</dict>
<key>SuppressBuildableAutocreation</key>
<dict>
<key>D2AAC07D0554694100DB518D</key>
<dict>
<key>primary</key>
<true/>
</dict>
</dict>
</dict>
</plist>
......@@ -27,8 +27,6 @@
30B4F30219D5E07200D9F7D8 /* Default-Landscape-736h.png in Resources */ = {isa = PBXBuildFile; fileRef = 30B4F2FF19D5E07200D9F7D8 /* Default-Landscape-736h.png */; };
30C1856619D5FC0A00212699 /* icon-60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 30C1856519D5FC0A00212699 /* icon-60@3x.png */; };
30FC414916E50CA1004E6F35 /* icon-72@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 30FC414816E50CA1004E6F35 /* icon-72@2x.png */; };
345E79E8B29A4BC0911A1AD9 /* Toast.m in Sources */ = {isa = PBXBuildFile; fileRef = 73FFCCD6DE0C4F41A5CD8A42 /* Toast.m */; };
3EC215006CC74A65BB090187 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 47EB2B35CA524D62A59BD0CD /* QuartzCore.framework */; };
5B1594DD16A7569C00FEF299 /* AssetsLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5B1594DC16A7569C00FEF299 /* AssetsLibrary.framework */; };
7E7966DE1810823500FA85AD /* icon-40.png in Resources */ = {isa = PBXBuildFile; fileRef = 7E7966D41810823500FA85AD /* icon-40.png */; };
7E7966DF1810823500FA85AD /* icon-40@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7E7966D51810823500FA85AD /* icon-40@2x.png */; };
......@@ -40,12 +38,15 @@
7E7966E51810823500FA85AD /* icon-76@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7E7966DB1810823500FA85AD /* icon-76@2x.png */; };
7E7966E61810823500FA85AD /* icon-small.png in Resources */ = {isa = PBXBuildFile; fileRef = 7E7966DC1810823500FA85AD /* icon-small.png */; };
7E7966E71810823500FA85AD /* icon-small@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 7E7966DD1810823500FA85AD /* icon-small@2x.png */; };
9AF00F0BC0694C408D82918E /* Toast+UIView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C1FEB7986764F8D80C9460D /* Toast+UIView.m */; };
D4A0D8761607E02300AEF8BB /* Default-568h@2x~iphone.png in Resources */ = {isa = PBXBuildFile; fileRef = D4A0D8751607E02300AEF8BB /* Default-568h@2x~iphone.png */; };
383D0BC6E5AD468CA0DB7269 /* APPLocalNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = 7DF9550522254C17A4FD57FB /* APPLocalNotification.m */; };
398FB094C4774595A5BD97A5 /* APPLocalNotificationOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = 99B472F862994183B713CD99 /* APPLocalNotificationOptions.m */; };
19469EFA32F64CB7BD7A3A01 /* UIApplication+APPLocalNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EAE9E33BA4D4133860A98E4 /* UIApplication+APPLocalNotification.m */; };
0117A6A182EE4E83BEEC628F /* UILocalNotification+APPLocalNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = 71A82CC8177D4613A5D4F19F /* UILocalNotification+APPLocalNotification.m */; };
AD7BE76F46AF46B98063DA33 /* CDVDevice.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B4F6CD5151F4B6984357BD8 /* CDVDevice.m */; };
71589C47958B44A0AB9DF872 /* APPLocalNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FAC8E7C327B45D3829E3051 /* APPLocalNotification.m */; };
31A5963AFA5A4FB2A383621E /* APPLocalNotificationOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = 89090721992B40ABA8237698 /* APPLocalNotificationOptions.m */; };
3D2DB1BD087A46D793C1F291 /* UIApplication+APPLocalNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F8A902D10214D7AB16CA6A1 /* UIApplication+APPLocalNotification.m */; };
3ED7D44238364BD3B99BF0CF /* UILocalNotification+APPLocalNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = BDCA0618D07B47B682A9410D /* UILocalNotification+APPLocalNotification.m */; };
6C5A5FDC69334EABB56FCE5A /* Toast+UIView.m in Sources */ = {isa = PBXBuildFile; fileRef = 80361C15F5A148A98AB5AC51 /* Toast+UIView.m */; };
23298A8B7C33459FADC63B77 /* Toast.m in Sources */ = {isa = PBXBuildFile; fileRef = 146586D566294E68A933F318 /* Toast.m */; };
333BC929814D4D72813E9983 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 83079DD5936B45449D749489 /* QuartzCore.framework */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
......@@ -68,7 +69,9 @@
/* Begin PBXFileReference section */
1D3623240D0F684500981E51 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
1D3623250D0F684500981E51 /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
1D6058910D05DD3D006BFB54 /* NotificationExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = NotificationExample.app; sourceTree = BUILT_PRODUCTS_DIR; };
1D6058910D05DD3D006BFB54 /* NotificationExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "NotificationExample.app"; sourceTree = BUILT_PRODUCTS_DIR; };
1F766FDD13BBADB100FB74C0 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = Localizable.strings; sourceTree = "<group>"; };
1F766FE013BBADB100FB74C0 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = Localizable.strings; sourceTree = "<group>"; };
288765FC0DF74451002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
301BF52D109A57CC0062928A /* CordovaLib.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = CordovaLib.xcodeproj; path = CordovaLib/CordovaLib.xcodeproj; sourceTree = "<group>"; };
......@@ -92,13 +95,7 @@
30C1856519D5FC0A00212699 /* icon-60@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-60@3x.png"; sourceTree = "<group>"; };
30FC414816E50CA1004E6F35 /* icon-72@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-72@2x.png"; sourceTree = "<group>"; };
32CA4F630368D1EE00C91783 /* NotificationExample-Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NotificationExample-Prefix.pch"; sourceTree = "<group>"; };
3471FA8FC7F847CCABBCB926 /* CDVDevice.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CDVDevice.h; path = org.apache.cordova.device/CDVDevice.h; sourceTree = "<group>"; };
422DA32284B54A2FA7DF8E04 /* Toast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Toast.h; path = "nl.x-services.plugins.toast/Toast.h"; sourceTree = "<group>"; };
47EB2B35CA524D62A59BD0CD /* QuartzCore.framework */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
49974152A0EA4CEE8C46D9A5 /* Toast+UIView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "Toast+UIView.h"; path = "nl.x-services.plugins.toast/Toast+UIView.h"; sourceTree = "<group>"; };
5B1594DC16A7569C00FEF299 /* AssetsLibrary.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AssetsLibrary.framework; path = System/Library/Frameworks/AssetsLibrary.framework; sourceTree = SDKROOT; };
6C1FEB7986764F8D80C9460D /* Toast+UIView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "Toast+UIView.m"; path = "nl.x-services.plugins.toast/Toast+UIView.m"; sourceTree = "<group>"; };
73FFCCD6DE0C4F41A5CD8A42 /* Toast.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Toast.m; path = "nl.x-services.plugins.toast/Toast.m"; sourceTree = "<group>"; };
7E7966D41810823500FA85AD /* icon-40.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-40.png"; sourceTree = "<group>"; };
7E7966D51810823500FA85AD /* icon-40@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-40@2x.png"; sourceTree = "<group>"; };
7E7966D61810823500FA85AD /* icon-50.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-50.png"; sourceTree = "<group>"; };
......@@ -111,18 +108,25 @@
7E7966DD1810823500FA85AD /* icon-small@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-small@2x.png"; sourceTree = "<group>"; };
8D1107310486CEB800E47090 /* NotificationExample-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "NotificationExample-Info.plist"; path = "../NotificationExample-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = "<group>"; };
D4A0D8751607E02300AEF8BB /* Default-568h@2x~iphone.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x~iphone.png"; sourceTree = "<group>"; };
E44647A1A9E44070A483ABAE /* CDVDevice.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CDVDevice.m; path = org.apache.cordova.device/CDVDevice.m; sourceTree = "<group>"; };
EB87FDF21871DA7A0020F90C /* merges */ = {isa = PBXFileReference; lastKnownFileType = folder; name = merges; path = ../../merges; sourceTree = "<group>"; };
EB87FDF31871DA8E0020F90C /* www */ = {isa = PBXFileReference; lastKnownFileType = folder; name = www; path = ../../www; sourceTree = "<group>"; };
EB87FDF41871DAF40020F90C /* config.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = config.xml; path = ../../config.xml; sourceTree = "<group>"; };
F840E1F0165FE0F500CFE078 /* config.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = config.xml; path = NotificationExample/config.xml; sourceTree = "<group>"; };
7DF9550522254C17A4FD57FB /* APPLocalNotification.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "APPLocalNotification.m"; path = "de.appplant.cordova.plugin.local-notification/APPLocalNotification.m"; sourceTree = "<group>"; fileEncoding = 4; };
99B472F862994183B713CD99 /* APPLocalNotificationOptions.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "APPLocalNotificationOptions.m"; path = "de.appplant.cordova.plugin.local-notification/APPLocalNotificationOptions.m"; sourceTree = "<group>"; fileEncoding = 4; };
6EAE9E33BA4D4133860A98E4 /* UIApplication+APPLocalNotification.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "UIApplication+APPLocalNotification.m"; path = "de.appplant.cordova.plugin.local-notification/UIApplication+APPLocalNotification.m"; sourceTree = "<group>"; fileEncoding = 4; };
71A82CC8177D4613A5D4F19F /* UILocalNotification+APPLocalNotification.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "UILocalNotification+APPLocalNotification.m"; path = "de.appplant.cordova.plugin.local-notification/UILocalNotification+APPLocalNotification.m"; sourceTree = "<group>"; fileEncoding = 4; };
8DEA336FEF244C7EA2348418 /* APPLocalNotification.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "APPLocalNotification.h"; path = "de.appplant.cordova.plugin.local-notification/APPLocalNotification.h"; sourceTree = "<group>"; fileEncoding = 4; };
84BE804849D645818468A4EA /* APPLocalNotificationOptions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "APPLocalNotificationOptions.h"; path = "de.appplant.cordova.plugin.local-notification/APPLocalNotificationOptions.h"; sourceTree = "<group>"; fileEncoding = 4; };
88363D98DED14E718C166C96 /* UIApplication+APPLocalNotification.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "UIApplication+APPLocalNotification.h"; path = "de.appplant.cordova.plugin.local-notification/UIApplication+APPLocalNotification.h"; sourceTree = "<group>"; fileEncoding = 4; };
81C7D8155F7841779AA958E4 /* UILocalNotification+APPLocalNotification.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "UILocalNotification+APPLocalNotification.h"; path = "de.appplant.cordova.plugin.local-notification/UILocalNotification+APPLocalNotification.h"; sourceTree = "<group>"; fileEncoding = 4; };
F840E1F0165FE0F500CFE078 /* config.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = config.xml; path = "NotificationExample/config.xml"; sourceTree = "<group>"; };
2B4F6CD5151F4B6984357BD8 /* CDVDevice.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "CDVDevice.m"; path = "org.apache.cordova.device/CDVDevice.m"; sourceTree = "<group>"; fileEncoding = 4; };
DD6A287E6650489AB756F123 /* CDVDevice.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "CDVDevice.h"; path = "org.apache.cordova.device/CDVDevice.h"; sourceTree = "<group>"; fileEncoding = 4; };
6FAC8E7C327B45D3829E3051 /* APPLocalNotification.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "APPLocalNotification.m"; path = "de.appplant.cordova.plugin.local-notification/APPLocalNotification.m"; sourceTree = "<group>"; fileEncoding = 4; };
89090721992B40ABA8237698 /* APPLocalNotificationOptions.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "APPLocalNotificationOptions.m"; path = "de.appplant.cordova.plugin.local-notification/APPLocalNotificationOptions.m"; sourceTree = "<group>"; fileEncoding = 4; };
0F8A902D10214D7AB16CA6A1 /* UIApplication+APPLocalNotification.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "UIApplication+APPLocalNotification.m"; path = "de.appplant.cordova.plugin.local-notification/UIApplication+APPLocalNotification.m"; sourceTree = "<group>"; fileEncoding = 4; };
BDCA0618D07B47B682A9410D /* UILocalNotification+APPLocalNotification.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "UILocalNotification+APPLocalNotification.m"; path = "de.appplant.cordova.plugin.local-notification/UILocalNotification+APPLocalNotification.m"; sourceTree = "<group>"; fileEncoding = 4; };
E7A8A05F5EB447418EE3DEA3 /* APPLocalNotification.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "APPLocalNotification.h"; path = "de.appplant.cordova.plugin.local-notification/APPLocalNotification.h"; sourceTree = "<group>"; fileEncoding = 4; };
A02EF58E479D4B19893FEDD7 /* APPLocalNotificationOptions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "APPLocalNotificationOptions.h"; path = "de.appplant.cordova.plugin.local-notification/APPLocalNotificationOptions.h"; sourceTree = "<group>"; fileEncoding = 4; };
F0E6140A2C7241BDBFAA17C2 /* UIApplication+APPLocalNotification.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "UIApplication+APPLocalNotification.h"; path = "de.appplant.cordova.plugin.local-notification/UIApplication+APPLocalNotification.h"; sourceTree = "<group>"; fileEncoding = 4; };
9A9D5039A6A2473C88B826C6 /* UILocalNotification+APPLocalNotification.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "UILocalNotification+APPLocalNotification.h"; path = "de.appplant.cordova.plugin.local-notification/UILocalNotification+APPLocalNotification.h"; sourceTree = "<group>"; fileEncoding = 4; };
80361C15F5A148A98AB5AC51 /* Toast+UIView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "Toast+UIView.m"; path = "nl.x-services.plugins.toast/Toast+UIView.m"; sourceTree = "<group>"; fileEncoding = 4; };
146586D566294E68A933F318 /* Toast.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = "Toast.m"; path = "nl.x-services.plugins.toast/Toast.m"; sourceTree = "<group>"; fileEncoding = 4; };
86CB24288F4E413CB00042A0 /* Toast+UIView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Toast+UIView.h"; path = "nl.x-services.plugins.toast/Toast+UIView.h"; sourceTree = "<group>"; fileEncoding = 4; };
D6FB32EC007141DF9D515817 /* Toast.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = "Toast.h"; path = "nl.x-services.plugins.toast/Toast.h"; sourceTree = "<group>"; fileEncoding = 4; };
83079DD5936B45449D749489 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = "QuartzCore.framework"; path = "System/Library/Frameworks/QuartzCore.framework"; sourceTree = SDKROOT; fileEncoding = 4; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
......@@ -134,7 +138,7 @@
301BF552109A68D80062928A /* libCordova.a in Frameworks */,
288765FD0DF74451002DB57D /* CoreGraphics.framework in Frameworks */,
305D5FD1115AB8F900A74A75 /* MobileCoreServices.framework in Frameworks */,
3EC215006CC74A65BB090187 /* QuartzCore.framework in Frameworks */,
333BC929814D4D72813E9983 /* QuartzCore.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
......@@ -151,7 +155,7 @@
1D3623250D0F684500981E51 /* AppDelegate.m */,
);
name = Classes;
path = NotificationExample/Classes;
path = "NotificationExample/Classes";
sourceTree = SOURCE_ROOT;
};
19C28FACFE9D520D11CA2CBB /* Products */ = {
......@@ -167,6 +171,7 @@
children = (
EB87FDF41871DAF40020F90C /* config.xml */,
EB87FDF31871DA8E0020F90C /* www */,
EB87FDF21871DA7A0020F90C /* merges */,
EB87FDF11871DA420020F90C /* Staging */,
301BF52D109A57CC0062928A /* CordovaLib.xcodeproj */,
080E96DDFE201D6D7F000001 /* Classes */,
......@@ -186,7 +191,7 @@
29B97316FDCFA39411CA2CEA /* main.m */,
);
name = "Other Sources";
path = NotificationExample;
path = "NotificationExample";
sourceTree = "<group>";
};
29B97317FDCFA39411CA2CEA /* Resources */ = {
......@@ -197,7 +202,7 @@
8D1107310486CEB800E47090 /* NotificationExample-Info.plist */,
);
name = Resources;
path = NotificationExample/Resources;
path = "NotificationExample/Resources";
sourceTree = "<group>";
};
29B97323FDCFA39411CA2CEA /* Frameworks */ = {
......@@ -206,7 +211,7 @@
5B1594DC16A7569C00FEF299 /* AssetsLibrary.framework */,
288765FC0DF74451002DB57D /* CoreGraphics.framework */,
305D5FD0115AB8F900A74A75 /* MobileCoreServices.framework */,
47EB2B35CA524D62A59BD0CD /* QuartzCore.framework */,
83079DD5936B45449D749489 /* QuartzCore.framework */,
);
name = Frameworks;
sourceTree = "<group>";
......@@ -222,23 +227,23 @@
307C750510C5A3420062BCA9 /* Plugins */ = {
isa = PBXGroup;
children = (
E44647A1A9E44070A483ABAE /* CDVDevice.m */,
3471FA8FC7F847CCABBCB926 /* CDVDevice.h */,
6C1FEB7986764F8D80C9460D /* Toast+UIView.m */,
73FFCCD6DE0C4F41A5CD8A42 /* Toast.m */,
49974152A0EA4CEE8C46D9A5 /* Toast+UIView.h */,
422DA32284B54A2FA7DF8E04 /* Toast.h */,
7DF9550522254C17A4FD57FB /* APPLocalNotification.m */,
99B472F862994183B713CD99 /* APPLocalNotificationOptions.m */,
6EAE9E33BA4D4133860A98E4 /* UIApplication+APPLocalNotification.m */,
71A82CC8177D4613A5D4F19F /* UILocalNotification+APPLocalNotification.m */,
8DEA336FEF244C7EA2348418 /* APPLocalNotification.h */,
84BE804849D645818468A4EA /* APPLocalNotificationOptions.h */,
88363D98DED14E718C166C96 /* UIApplication+APPLocalNotification.h */,
81C7D8155F7841779AA958E4 /* UILocalNotification+APPLocalNotification.h */,
2B4F6CD5151F4B6984357BD8 /* CDVDevice.m */,
DD6A287E6650489AB756F123 /* CDVDevice.h */,
6FAC8E7C327B45D3829E3051 /* APPLocalNotification.m */,
89090721992B40ABA8237698 /* APPLocalNotificationOptions.m */,
0F8A902D10214D7AB16CA6A1 /* UIApplication+APPLocalNotification.m */,
BDCA0618D07B47B682A9410D /* UILocalNotification+APPLocalNotification.m */,
E7A8A05F5EB447418EE3DEA3 /* APPLocalNotification.h */,
A02EF58E479D4B19893FEDD7 /* APPLocalNotificationOptions.h */,
F0E6140A2C7241BDBFAA17C2 /* UIApplication+APPLocalNotification.h */,
9A9D5039A6A2473C88B826C6 /* UILocalNotification+APPLocalNotification.h */,
80361C15F5A148A98AB5AC51 /* Toast+UIView.m */,
146586D566294E68A933F318 /* Toast.m */,
86CB24288F4E413CB00042A0 /* Toast+UIView.h */,
D6FB32EC007141DF9D515817 /* Toast.h */,
);
name = Plugins;
path = NotificationExample/Plugins;
path = "NotificationExample/Plugins";
sourceTree = SOURCE_ROOT;
};
308D052D1370CCF300D202BF /* icons */ = {
......@@ -306,8 +311,8 @@
dependencies = (
301BF551109A68C00062928A /* PBXTargetDependency */,
);
name = NotificationExample;
productName = NotificationExample;
name = "NotificationExample";
productName = "NotificationExample";
productReference = 1D6058910D05DD3D006BFB54 /* NotificationExample.app */;
productType = "com.apple.product-type.application";
};
......@@ -319,7 +324,7 @@
attributes = {
LastUpgradeCheck = 510;
};
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "NotificationExample" */;
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "__CLI__" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 1;
......@@ -420,12 +425,13 @@
1D60589B0D05DD56006BFB54 /* main.m in Sources */,
1D3623260D0F684500981E51 /* AppDelegate.m in Sources */,
302D95F114D2391D003F00A1 /* MainViewController.m in Sources */,
9AF00F0BC0694C408D82918E /* Toast+UIView.m in Sources */,
345E79E8B29A4BC0911A1AD9 /* Toast.m in Sources */,
383D0BC6E5AD468CA0DB7269 /* APPLocalNotification.m in Sources */,
398FB094C4774595A5BD97A5 /* APPLocalNotificationOptions.m in Sources */,
19469EFA32F64CB7BD7A3A01 /* UIApplication+APPLocalNotification.m in Sources */,
0117A6A182EE4E83BEEC628F /* UILocalNotification+APPLocalNotification.m in Sources */,
AD7BE76F46AF46B98063DA33 /* CDVDevice.m in Sources */,
71589C47958B44A0AB9DF872 /* APPLocalNotification.m in Sources */,
31A5963AFA5A4FB2A383621E /* APPLocalNotificationOptions.m in Sources */,
3D2DB1BD087A46D793C1F291 /* UIApplication+APPLocalNotification.m in Sources */,
3ED7D44238364BD3B99BF0CF /* UILocalNotification+APPLocalNotification.m in Sources */,
6C5A5FDC69334EABB56FCE5A /* Toast+UIView.m in Sources */,
23298A8B7C33459FADC63B77 /* Toast.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
......@@ -466,7 +472,7 @@
"-weak-lSystem",
"-ObjC",
);
PRODUCT_NAME = NotificationExample;
PRODUCT_NAME = "NotificationExample";
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
......@@ -495,7 +501,7 @@
"-weak-lSystem",
"-ObjC",
);
PRODUCT_NAME = NotificationExample;
PRODUCT_NAME = "NotificationExample";
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Release;
......@@ -599,7 +605,7 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
C01FCF4E08A954540054247B /* Build configuration list for PBXProject "NotificationExample" */ = {
C01FCF4E08A954540054247B /* Build configuration list for PBXProject "__CLI__" */ = {
isa = XCConfigurationList;
buildConfigurations = (
C01FCF4F08A954540054247B /* Debug */,
......
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:NotificationExample.xcodeproj">
</FileRef>
</Workspace>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDESourceControlProjectFavoriteDictionaryKey</key>
<false/>
<key>IDESourceControlProjectIdentifier</key>
<string>A63F5FF5-C059-403D-81B9-E740110FFC25</string>
<key>IDESourceControlProjectName</key>
<string>NotificationExample</string>
<key>IDESourceControlProjectOriginsDictionary</key>
<dict>
<key>E6A4395732CC1C6C7441E85472223F9AAF3A67CD</key>
<string>github.com:katzer/cordova-plugin-local-notifications.git</string>
</dict>
<key>IDESourceControlProjectPath</key>
<string>platforms/ios/NotificationExample.xcodeproj</string>
<key>IDESourceControlProjectRelativeInstallPathDictionary</key>
<dict>
<key>E6A4395732CC1C6C7441E85472223F9AAF3A67CD</key>
<string>../../../..</string>
</dict>
<key>IDESourceControlProjectURL</key>
<string>github.com:katzer/cordova-plugin-local-notifications.git</string>
<key>IDESourceControlProjectVersion</key>
<integer>111</integer>
<key>IDESourceControlProjectWCCIdentifier</key>
<string>E6A4395732CC1C6C7441E85472223F9AAF3A67CD</string>
<key>IDESourceControlProjectWCConfigurations</key>
<array>
<dict>
<key>IDESourceControlRepositoryExtensionIdentifierKey</key>
<string>public.vcs.git</string>
<key>IDESourceControlWCCIdentifierKey</key>
<string>E6A4395732CC1C6C7441E85472223F9AAF3A67CD</string>
<key>IDESourceControlWCCName</key>
<string>cordova-example-local-notifications</string>
</dict>
</array>
</dict>
</plist>
<?xml version="1.0" encoding="UTF-8"?>
<Bucket
type = "1"
version = "2.0">
</Bucket>
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0620"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "1D6058900D05DD3D006BFB54"
BuildableName = "NotificationExample.app"
BlueprintName = "NotificationExample"
ReferencedContainer = "container:NotificationExample.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES"
buildConfiguration = "Debug">
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "1D6058900D05DD3D006BFB54"
BuildableName = "NotificationExample.app"
BlueprintName = "NotificationExample"
ReferencedContainer = "container:NotificationExample.xcodeproj">
</BuildableReference>
</MacroExpansion>
</TestAction>
<LaunchAction
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
buildConfiguration = "Debug"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "1D6058900D05DD3D006BFB54"
BuildableName = "NotificationExample.app"
BlueprintName = "NotificationExample"
ReferencedContainer = "container:NotificationExample.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
buildConfiguration = "Release"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "1D6058900D05DD3D006BFB54"
BuildableName = "NotificationExample.app"
BlueprintName = "NotificationExample"
ReferencedContainer = "container:NotificationExample.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>SchemeUserState</key>
<dict>
<key>NotificationExample.xcscheme</key>
<dict>
<key>orderHint</key>
<integer>0</integer>
</dict>
</dict>
<key>SuppressBuildableAutocreation</key>
<dict>
<key>1D6058900D05DD3D006BFB54</key>
<dict>
<key>primary</key>
<true/>
</dict>
</dict>
</dict>
</plist>
......@@ -61,6 +61,13 @@
// 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
......
......@@ -102,7 +102,7 @@
[self.commandDelegate runInBackground:^{
for (NSDictionary* options in notifications) {
NSString* id = [options objectForKey:@"id"];
NSNumber* id = [options objectForKey:@"id"];
UILocalNotification* notification;
notification = [self.app localNotificationWithId:id];
......@@ -133,7 +133,7 @@
- (void) cancel:(CDVInvokedUrlCommand*)command
{
[self.commandDelegate runInBackground:^{
for (NSString* id in command.arguments) {
for (NSNumber* id in command.arguments) {
UILocalNotification* notification;
notification = [self.app localNotificationWithId:id];
......@@ -170,7 +170,7 @@
- (void) clear:(CDVInvokedUrlCommand*)command
{
[self.commandDelegate runInBackground:^{
for (NSString* id in command.arguments) {
for (NSNumber* id in command.arguments) {
UILocalNotification* notification;
notification = [self.app localNotificationWithId:id];
......@@ -241,7 +241,7 @@
type:(APPLocalNotificationType)type;
{
[self.commandDelegate runInBackground:^{
NSString* id = [command argumentAtIndex:0];
NSNumber* id = [command argumentAtIndex:0];
BOOL exist;
CDVPluginResult* result;
......@@ -314,6 +314,28 @@
}
/**
* 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
......@@ -347,6 +369,38 @@
}
/**
* Propertys for given triggered notification.
*
* @param type
* Notification life cycle type
* @param ids
* The ID of the notification
*/
- (void) getOption:(CDVInvokedUrlCommand*)command
byType:(APPLocalNotificationType)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[0]];
[self.commandDelegate sendPluginResult:result
callbackId:command.callbackId];
}];
}
/**
* Property list for given triggered notifications.
*
* @param type
......@@ -474,7 +528,7 @@
*/
- (void) cancelForerunnerLocalNotification:(UILocalNotification*)notification
{
NSString* id = notification.options.id;
NSNumber* id = notification.options.id;
UILocalNotification* forerunner;
forerunner = [self.app localNotificationWithId:id];
......
......@@ -25,7 +25,7 @@
- (id) initWithDict:(NSDictionary*)dict;
@property (readonly, getter=id) NSString* id;
@property (readonly, getter=id) NSNumber* id;
@property (readonly, getter=badgeNumber) NSInteger badgeNumber;
@property (readonly, getter=alertBody) NSString* alertBody;
@property (readonly, getter=soundName) NSString* soundName;
......
......@@ -59,9 +59,11 @@ NSString* const DEFAULT_SOUND = @"res://platform_default";
/**
* The notification's ID.
*/
- (NSString*) id
- (NSNumber*) id
{
return [dict objectForKey:@"id"];
NSInteger id = [[dict objectForKey:@"id"] integerValue];
return [NSNumber numberWithInteger:id];
}
/**
......@@ -186,6 +188,14 @@ NSString* const DEFAULT_SOUND = @"res://platform_default";
*/
- (NSDictionary*) userInfo
{
if ([dict objectForKey:@"updatedAt"]) {
NSMutableDictionary* data = [dict mutableCopy];
[data removeObjectForKey:@"updatedAt"];
return data;
}
return dict;
}
......
......@@ -37,14 +37,14 @@
- (NSArray*) localNotificationIdsByType:(APPLocalNotificationType)type;
// If local notification with ID exists
- (BOOL) localNotificationExist:(NSString*)id;
- (BOOL) localNotificationExist:(NSNumber*)id;
// If local notification with ID and type exists
- (BOOL) localNotificationExist:(NSString*)id type:(APPLocalNotificationType)type;
- (BOOL) localNotificationExist:(NSNumber*)id type:(APPLocalNotificationType)type;
// Local notification by ID
- (UILocalNotification*) localNotificationWithId:(NSString*)id;
- (UILocalNotification*) localNotificationWithId:(NSNumber*)id;
// Local notification by ID and type
- (UILocalNotification*) localNotificationWithId:(NSString*)id andType:(APPLocalNotificationType)type;
- (UILocalNotification*) localNotificationWithId:(NSNumber*)id andType:(APPLocalNotificationType)type;
// Property list from all local notifications
- (NSArray*) localNotificationOptions;
......
......@@ -159,7 +159,7 @@
* @param id
* Notification ID
*/
- (BOOL) localNotificationExist:(NSString*)id
- (BOOL) localNotificationExist:(NSNumber*)id
{
return [self localNotificationWithId:id] != NULL;
}
......@@ -171,7 +171,7 @@
* @param type
* Notification life cycle type
*/
- (BOOL) localNotificationExist:(NSString*)id type:(APPLocalNotificationType)type
- (BOOL) localNotificationExist:(NSNumber*)id type:(APPLocalNotificationType)type
{
return [self localNotificationWithId:id andType:type] != NULL;
}
......@@ -182,13 +182,13 @@
* @param id
* Notification ID
*/
- (UILocalNotification*) localNotificationWithId:(NSString*)id
- (UILocalNotification*) localNotificationWithId:(NSNumber*)id
{
NSArray* notifications = self.localNotifications;
for (UILocalNotification* notification in notifications)
{
if ([notification.options.id isEqualToString:id]) {
if ([notification.options.id isEqualToNumber:id]) {
return notification;
}
}
......@@ -204,7 +204,7 @@
* @param type
* Notification life cycle type
*/
- (UILocalNotification*) localNotificationWithId:(NSString*)id andType:(APPLocalNotificationType)type
- (UILocalNotification*) localNotificationWithId:(NSNumber*)id andType:(APPLocalNotificationType)type
{
UILocalNotification* notification = [self localNotificationWithId:id];
......@@ -224,7 +224,7 @@
for (UILocalNotification* notification in notifications)
{
[options addObject:notification.userInfo];
[options addObject:notification.options.userInfo];
}
return options;
......@@ -244,7 +244,7 @@
for (UILocalNotification* notification in notifications)
{
if (notification.type == type) {
[options addObject:notification.userInfo];
[options addObject:notification.options.userInfo];
}
}
......@@ -262,12 +262,12 @@
UILocalNotification* notification;
NSMutableArray* options = [[NSMutableArray alloc] init];
for (NSString* id in ids)
for (NSNumber* id in ids)
{
notification = [self localNotificationWithId:id];
if (notification) {
[options addObject:notification.userInfo];
[options addObject:notification.options.userInfo];
}
}
......@@ -287,12 +287,12 @@
UILocalNotification* notification;
NSMutableArray* options = [[NSMutableArray alloc] init];
for (NSString* id in ids)
for (NSNumber* id in ids)
{
notification = [self localNotificationWithId:id];
if (notification && notification.type == type) {
[options addObject:notification.userInfo];
[options addObject:notification.options.userInfo];
}
}
......
......@@ -23,9 +23,6 @@
</author>
<content src="index.html" />
<access origin="*" />
<feature name="Toast">
<param name="ios-package" value="Toast" />
</feature>
<feature name="Device">
<param name="ios-package" value="CDVDevice" />
</feature>
......@@ -33,4 +30,7 @@
<param name="ios-package" onload="true" value="APPLocalNotification" />
<param name="onload" value="true" />
</feature>
<feature name="Toast">
<param name="ios-package" value="Toast" />
</feature>
</widget>
cordova.define('cordova/plugin_list', function(require, exports, module) {
module.exports = [
{
"file": "plugins/nl.x-services.plugins.toast/www/Toast.js",
"id": "nl.x-services.plugins.toast.Toast",
"clobbers": [
"window.plugins.toast"
]
},
{
"file": "plugins/nl.x-services.plugins.toast/test/tests.js",
"id": "nl.x-services.plugins.toast.tests"
},
{
"file": "plugins/de.appplant.cordova.plugin.local-notification/www/local-notification.js",
"id": "de.appplant.cordova.plugin.local-notification.LocalNotification",
"clobbers": [
......@@ -36,6 +25,17 @@ module.exports = [
]
},
{
"file": "plugins/nl.x-services.plugins.toast/www/Toast.js",
"id": "nl.x-services.plugins.toast.Toast",
"clobbers": [
"window.plugins.toast"
]
},
{
"file": "plugins/nl.x-services.plugins.toast/test/tests.js",
"id": "nl.x-services.plugins.toast.tests"
},
{
"file": "plugins/org.apache.cordova.device/www/device.js",
"id": "org.apache.cordova.device.device",
"clobbers": [
......@@ -46,8 +46,8 @@ module.exports = [
module.exports.metadata =
// TOP OF METADATA
{
"nl.x-services.plugins.toast": "2.0.3",
"de.appplant.cordova.plugin.local-notification": "0.8.2dev",
"nl.x-services.plugins.toast": "2.0.3",
"org.apache.cordova.device": "0.3.0"
}
// BOTTOM OF METADATA
......
......@@ -172,9 +172,7 @@ exports.cancelAll = function (callback, scope) {
* The scope for the callback function
*/
exports.isPresent = function (id, callback, scope) {
var notId = (id || '0').toString();
this.exec('isPresent', notId, callback, scope);
this.exec('isPresent', id || 0, callback, scope);
};
/**
......@@ -188,9 +186,7 @@ exports.isPresent = function (id, callback, scope) {
* The scope for the callback function
*/
exports.isScheduled = function (id, callback, scope) {
var notId = (id || '0').toString();
this.exec('isScheduled', notId, callback, scope);
this.exec('isScheduled', id || 0, callback, scope);
};
/**
......@@ -204,9 +200,7 @@ exports.isScheduled = function (id, callback, scope) {
* The scope for the callback function
*/
exports.isTriggered = function (id, callback, scope) {
var notId = (id || '0').toString();
this.exec('isTriggered', notId, callback, scope);
this.exec('isTriggered', id || 0, callback, scope);
};
/**
......@@ -275,7 +269,7 @@ exports.get = function () {
scope = args[2];
if (!Array.isArray(ids)) {
this.exec('getSingle', ids.toString(), callback, scope);
this.exec('getSingle', Number(ids), callback, scope);
return;
}
......@@ -323,7 +317,7 @@ exports.getScheduled = function () {
}
if (!Array.isArray(ids)) {
this.exec('getSingleScheduled', ids.toString(), callback, scope);
this.exec('getSingleScheduled', Number(ids), callback, scope);
return;
}
......@@ -371,7 +365,7 @@ exports.getTriggered = function () {
}
if (!Array.isArray(ids)) {
this.exec('getSingleTriggered', ids.toString(), callback, scope);
this.exec('getSingleTriggered', Number(ids), callback, scope);
return;
}
......
......@@ -35,7 +35,7 @@ exports._defaults = {
title: '',
sound: 'res://platform_default',
badge: 0,
id: "0",
id: 0,
data: undefined,
every: undefined,
at: undefined
......@@ -87,7 +87,9 @@ exports.mergeWithDefaults = function (options) {
options.text = this.getValueFor(options, 'text', 'message');
options.data = this.getValueFor(options, 'data', 'json');
options.autoClear = this.getValueFor(options, 'autoClear', 'autoCancel');
if (defaults.hasOwnProperty('autoClear')) {
options.autoClear = this.getValueFor(options, 'autoClear', 'autoCancel');
}
if (options.autoClear !== true && options.ongoing) {
options.autoClear = false;
......@@ -131,8 +133,9 @@ 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 = options.id.toString();
options.id = Number(options.id);
}
}
......@@ -147,13 +150,18 @@ exports.convertProperties = function (options) {
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 (typeof options.at == 'object') {
options.at = Math.round(options.at.getTime()/1000);
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') {
......@@ -175,6 +183,7 @@ exports.convertProperties = function (options) {
* The new callback function
*/
exports.createCallbackFn = function (callbackFn, scope) {
if (typeof callbackFn != 'function')
return;
......@@ -184,17 +193,17 @@ exports.createCallbackFn = function (callbackFn, scope) {
};
/**
* Convert the IDs to Strings.
* Convert the IDs to numbers.
*
* @param {String/Number[]} ids
*
* @return Array of Strings
* @return Array of Numbers
*/
exports.convertIds = function (ids) {
var convertedIds = [];
for (var i = 0; i < ids.length; i++) {
convertedIds.push(ids[i].toString());
convertedIds.push(Number(ids[i]));
}
return convertedIds;
......
cordova.define('cordova/plugin_list', function(require, exports, module) {
module.exports = [
{
"file": "plugins/nl.x-services.plugins.toast/www/Toast.js",
"id": "nl.x-services.plugins.toast.Toast",
"clobbers": [
"window.plugins.toast"
]
},
{
"file": "plugins/nl.x-services.plugins.toast/test/tests.js",
"id": "nl.x-services.plugins.toast.tests"
},
{
"file": "plugins/de.appplant.cordova.plugin.local-notification/www/local-notification.js",
"id": "de.appplant.cordova.plugin.local-notification.LocalNotification",
"clobbers": [
......@@ -46,17 +57,6 @@ module.exports = [
]
},
{
"file": "plugins/nl.x-services.plugins.toast/www/Toast.js",
"id": "nl.x-services.plugins.toast.Toast",
"clobbers": [
"window.plugins.toast"
]
},
{
"file": "plugins/nl.x-services.plugins.toast/test/tests.js",
"id": "nl.x-services.plugins.toast.tests"
},
{
"file": "plugins/org.apache.cordova.device/www/device.js",
"id": "org.apache.cordova.device.device",
"clobbers": [
......@@ -74,8 +74,8 @@ module.exports = [
module.exports.metadata =
// TOP OF METADATA
{
"de.appplant.cordova.plugin.local-notification": "0.8.2dev",
"nl.x-services.plugins.toast": "2.0.3",
"de.appplant.cordova.plugin.local-notification": "0.8.2dev",
"org.apache.cordova.device": "0.3.0"
}
// BOTTOM OF METADATA
......
......@@ -209,6 +209,54 @@ exports.getTriggeredIds = function (success, error) {
};
/**
* Propertys for given notification.
*
* @param {Function} success
* Success callback
* @param {Function} error
* Error callback
* @param {int[]} ids
* List of local notification IDs
*/
exports.getSingle = function (success, error, ids) {
var notification = exports.core.getAll(ids)[0];
success(notification);
};
/**
* Propertys for given scheduled notification.
*
* @param {Function} success
* Success callback
* @param {Function} error
* Error callback
* @param {int[]} ids
* List of local notification IDs
*/
exports.getSingleScheduled = function (success, error, ids) {
var notification = exports.core.getScheduled(ids)[0];
success(notification);
};
/**
* Propertys for given triggered notification.
*
* @param {Function} success
* Success callback
* @param {Function} error
* Error callback
* @param {int[]} ids
* List of local notification IDs
*/
exports.getSingleTriggered = function (success, error, ids) {
var notification = exports.core.getTriggered(ids)[0];
success(notification);
};
/**
* Property list for given notifications.
* If called without IDs, all notification will be returned.
*
......
......@@ -20,8 +20,8 @@ cordova.define("de.appplant.cordova.plugin.local-notification.LocalNotification.
*/
exports = require('de.appplant.cordova.plugin.local-notification.LocalNotification.Proxy').core;
exports = require('de.appplant.cordova.plugin.local-notification.LocalNotification.Proxy').core;
var channel = require('cordova/channel');
......
......@@ -172,9 +172,7 @@ exports.cancelAll = function (callback, scope) {
* The scope for the callback function
*/
exports.isPresent = function (id, callback, scope) {
var notId = (id || '0').toString();
this.exec('isPresent', notId, callback, scope);
this.exec('isPresent', id || 0, callback, scope);
};
/**
......@@ -188,9 +186,7 @@ exports.isPresent = function (id, callback, scope) {
* The scope for the callback function
*/
exports.isScheduled = function (id, callback, scope) {
var notId = (id || '0').toString();
this.exec('isScheduled', notId, callback, scope);
this.exec('isScheduled', id || 0, callback, scope);
};
/**
......@@ -204,9 +200,7 @@ exports.isScheduled = function (id, callback, scope) {
* The scope for the callback function
*/
exports.isTriggered = function (id, callback, scope) {
var notId = (id || '0').toString();
this.exec('isTriggered', notId, callback, scope);
this.exec('isTriggered', id || 0, callback, scope);
};
/**
......@@ -275,7 +269,7 @@ exports.get = function () {
scope = args[2];
if (!Array.isArray(ids)) {
this.exec('getSingle', ids.toString(), callback, scope);
this.exec('getSingle', Number(ids), callback, scope);
return;
}
......@@ -323,7 +317,7 @@ exports.getScheduled = function () {
}
if (!Array.isArray(ids)) {
this.exec('getSingleScheduled', ids.toString(), callback, scope);
this.exec('getSingleScheduled', Number(ids), callback, scope);
return;
}
......@@ -371,7 +365,7 @@ exports.getTriggered = function () {
}
if (!Array.isArray(ids)) {
this.exec('getSingleTriggered', ids.toString(), callback, scope);
this.exec('getSingleTriggered', Number(ids), callback, scope);
return;
}
......
......@@ -35,7 +35,7 @@ exports._defaults = {
title: '',
sound: 'res://platform_default',
badge: 0,
id: "0",
id: 0,
data: undefined,
every: undefined,
at: undefined
......@@ -87,7 +87,9 @@ exports.mergeWithDefaults = function (options) {
options.text = this.getValueFor(options, 'text', 'message');
options.data = this.getValueFor(options, 'data', 'json');
options.autoClear = this.getValueFor(options, 'autoClear', 'autoCancel');
if (defaults.hasOwnProperty('autoClear')) {
options.autoClear = this.getValueFor(options, 'autoClear', 'autoCancel');
}
if (options.autoClear !== true && options.ongoing) {
options.autoClear = false;
......@@ -131,8 +133,9 @@ 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 = options.id.toString();
options.id = Number(options.id);
}
}
......@@ -147,13 +150,18 @@ exports.convertProperties = function (options) {
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 (typeof options.at == 'object') {
options.at = Math.round(options.at.getTime()/1000);
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') {
......@@ -175,6 +183,7 @@ exports.convertProperties = function (options) {
* The new callback function
*/
exports.createCallbackFn = function (callbackFn, scope) {
if (typeof callbackFn != 'function')
return;
......@@ -184,17 +193,17 @@ exports.createCallbackFn = function (callbackFn, scope) {
};
/**
* Convert the IDs to Strings.
* Convert the IDs to numbers.
*
* @param {String/Number[]} ids
*
* @return Array of Strings
* @return Array of Numbers
*/
exports.convertIds = function (ids) {
var convertedIds = [];
for (var i = 0; i < ids.length; i++) {
convertedIds.push(ids[i].toString());
convertedIds.push(Number(ids[i]));
}
return convertedIds;
......
......@@ -20,6 +20,7 @@
<!-- cordova -->
<engines>
<engine name="cordova" version=">=3.0.0" />
<engine name="cordova" version="<4.0.0" />
</engines>
<!-- dependencies -->
......
......@@ -39,10 +39,16 @@ module.exports = function (context) {
var cordova_util = context.requireCordovaModule('cordova-lib/src/cordova/util'),
ConfigParser = context.requireCordovaModule('cordova-lib/src/configparser/ConfigParser'),
platforms = context.requireCordovaModule('cordova-lib/src/cordova/platforms'),
projectRoot = cordova_util.isCordova(),
xml = cordova_util.projectConfig(projectRoot),
cfg = new ConfigParser(xml);
// Cordova moved the platforms stuff; try both locations so we'll work for new and old file layouts.
var platforms;
try {
platforms = context.requireCordovaModule('cordova-lib/src/cordova/platforms');
} catch(e) {
platforms = context.requireCordovaModule('cordova-lib/src/platforms/platforms');
}
/**
* The absolute path for the file.
......
......@@ -23,7 +23,8 @@
package de.appplant.cordova.plugin.localnotification;
import de.appplant.cordova.plugin.notification.*;
import de.appplant.cordova.plugin.notification.Builder;
import de.appplant.cordova.plugin.notification.Notification;
import de.appplant.cordova.plugin.notification.TriggerReceiver;
/**
......
......@@ -23,8 +23,7 @@
package de.appplant.cordova.plugin.localnotification;
import java.util.ArrayList;
import java.util.List;
import android.os.Build;
import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaInterface;
......@@ -35,9 +34,11 @@ import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.os.Build;
import java.util.ArrayList;
import java.util.List;
import de.appplant.cordova.plugin.notification.*;
import de.appplant.cordova.plugin.notification.Manager;
import de.appplant.cordova.plugin.notification.Notification;
/**
* This plugin utilizes the Android AlarmManager in combination with local
......@@ -249,7 +250,9 @@ public class LocalNotification extends CordovaPlugin {
Notification notification =
getNotificationMgr().cancel(id);
fireEvent("cancel", notification);
if (notification != null) {
fireEvent("cancel", notification);
}
}
}
......@@ -274,7 +277,9 @@ public class LocalNotification extends CordovaPlugin {
Notification notification =
getNotificationMgr().clear(id);
fireEvent("clear", notification);
if (notification != null) {
fireEvent("clear", notification);
}
}
}
......
......@@ -42,7 +42,9 @@ public class RestoreReceiver extends AbstractRestoreReceiver {
*/
@Override
public void onRestore (Notification notification) {
notification.schedule();
if (notification.isScheduled()) {
notification.schedule();
}
}
/**
......
......@@ -23,7 +23,8 @@
package de.appplant.cordova.plugin.localnotification;
import de.appplant.cordova.plugin.notification.*;
import de.appplant.cordova.plugin.notification.Builder;
import de.appplant.cordova.plugin.notification.Notification;
/**
* The alarm receiver is triggered when a scheduled alarm is fired. This class
......
......@@ -23,16 +23,6 @@
package de.appplant.cordova.plugin.notification;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import android.content.Context;
import android.content.res.AssetManager;
import android.content.res.Resources;
......@@ -43,6 +33,16 @@ import android.net.Uri;
import android.os.StrictMode;
import android.util.Log;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
/**
* Util class to map unified asset URIs to native URIs. URIs like file:///
* map to absolute paths while file:// point relatively to the www folder
......@@ -60,7 +60,7 @@ class AssetUtil {
// Ref to the context passed through the constructor to access the
// resources and app directory.
private final Context context;
/**
* Constructor
*
......@@ -102,7 +102,7 @@ class AssetUtil {
/**
* The URI for a path.
*
*
* @param path
* The given path
*/
......@@ -120,15 +120,13 @@ class AssetUtil {
return Uri.EMPTY;
}
/**
* URI for a file.
*
*
* @param path
* Absolute path like file:///...
*
*
* @return
* URI pointing to the given path
*/
......@@ -146,10 +144,10 @@ class AssetUtil {
/**
* URI for an asset.
*
*
* @param path
* Asset path like file://...
*
*
* @return
* URI pointing to the given path
*/
......@@ -191,10 +189,10 @@ class AssetUtil {
/**
* The URI for a resource.
*
*
* @param path
* The given relative path
*
*
* @return
* URI pointing to the given path
*/
......@@ -240,7 +238,7 @@ class AssetUtil {
return Uri.EMPTY;
}
/**
* Uri from remote located content.
*
......@@ -286,11 +284,11 @@ class AssetUtil {
outStream.flush();
outStream.close();
return Uri.fromFile(file);
} catch (MalformedURLException e) {
Log.e("Asset", "Incorrect URL");
Log.e("Asset", "Incorrect URL");
e.printStackTrace();
} catch (FileNotFoundException e) {
Log.e("Asset", "Failed to create new File from HTTP Content");
......@@ -305,7 +303,7 @@ class AssetUtil {
/**
* Copy content from input stream into output stream.
*
*
* @param in
* The input stream
* @param out
......
......@@ -23,8 +23,6 @@
package de.appplant.cordova.plugin.notification;
import java.util.Random;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
......@@ -33,6 +31,8 @@ import android.support.v4.app.NotificationCompat;
import org.json.JSONObject;
import java.util.Random;
/**
* Builder class for local notifications. Build fully configured local
* notification specified by JSON object passed from JS side.
......@@ -158,7 +158,7 @@ public class Builder {
return;
Intent deleteIntent = new Intent(context, clearReceiver)
.setAction(options.getId())
.setAction(options.getIdStr())
.putExtra(Options.EXTRA, options.toString());
PendingIntent dpi = PendingIntent.getBroadcast(
......
......@@ -23,8 +23,6 @@
package de.appplant.cordova.plugin.notification;
import static de.appplant.cordova.plugin.notification.Notification.PREF_KEY;
import android.app.NotificationManager;
import android.content.Context;
import android.content.SharedPreferences;
......@@ -34,12 +32,13 @@ import org.json.JSONObject;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import static de.appplant.cordova.plugin.notification.Notification.PREF_KEY;
/**
* Central way to access all or single local notifications set by specific
* state like triggered or scheduled. Offers shortcut ways to schedule,
......
......@@ -45,7 +45,7 @@ import java.util.Date;
public class Notification {
// Used to differ notifications by their life cycle state
public static enum Type {
public enum Type {
ALL, SCHEDULED, TRIGGERED
}
......@@ -105,7 +105,7 @@ public class Notification {
* Get notification ID.
*/
public int getId () {
return options.getIdAsInt();
return options.getId();
}
/**
......@@ -162,27 +162,23 @@ public class Notification {
* Schedule the local notification.
*/
public void schedule() {
long triggerTime = getNextTriggerTime();
long triggerTime = options.getTriggerTime();
persist();
// Intent gets called when the Notification gets fired
Intent intent = new Intent(context, receiver)
.setAction(options.getId())
.setAction(options.getIdStr())
.putExtra(Options.EXTRA, options.toString());
PendingIntent pi = PendingIntent.getBroadcast(
context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
getAlarmMgr().set(AlarmManager.RTC_WAKEUP, triggerTime, pi);
}
/**
* Re-schedule the local notification if repeating.
*/
void reschedule () {
if (isRepeating()) {
schedule();
getAlarmMgr().setRepeating(AlarmManager.RTC_WAKEUP,
triggerTime, options.getRepeatInterval(), pi);
} else {
getAlarmMgr().set(AlarmManager.RTC_WAKEUP, triggerTime, pi);
}
}
......@@ -208,13 +204,13 @@ public class Notification {
*/
public void cancel() {
Intent intent = new Intent(context, receiver)
.setAction(options.getId());
.setAction(options.getIdStr());
PendingIntent pi = PendingIntent.
getBroadcast(context, 0, intent, 0);
getAlarmMgr().cancel(pi);
getNotMgr().cancel(options.getIdAsInt());
getNotMgr().cancel(options.getId());
unpersist();
}
......@@ -232,7 +228,7 @@ public class Notification {
*/
@SuppressWarnings("deprecation")
private void showNotification () {
int id = getOptions().getIdAsInt();
int id = getOptions().getId();
if (Build.VERSION.SDK_INT <= 15) {
// Notification for HoneyComb to ICS
......@@ -251,26 +247,11 @@ public class Notification {
}
/**
* Next trigger time.
*/
public long getNextTriggerTime() {
long triggerTime = options.getTriggerTime();
if (!isRepeating() || !isTriggered())
return triggerTime;
long interval = options.getRepeatInterval();
int triggerCount = getTriggerCountSinceSchedule();
return triggerTime + (triggerCount + 1) * interval;
}
/**
* Count of triggers since schedule.
*/
public int getTriggerCountSinceSchedule() {
long now = System.currentTimeMillis();
long initTriggerTime = options.getTriggerTime();
long triggerTime = options.getTriggerTime();
if (!wasInThePast())
return 0;
......@@ -278,7 +259,7 @@ public class Notification {
if (!isRepeating())
return 1;
return (int) ((now - initTriggerTime) / options.getRepeatInterval());
return (int) ((now - triggerTime) / options.getRepeatInterval());
}
/**
......@@ -294,6 +275,7 @@ public class Notification {
e.printStackTrace();
}
json.remove("firstAt");
json.remove("updatedAt");
json.remove("soundUri");
json.remove("iconUri");
......@@ -309,7 +291,7 @@ public class Notification {
private void persist () {
SharedPreferences.Editor editor = getPrefs().edit();
editor.putString(options.getId(), options.toString());
editor.putString(options.getIdStr(), options.toString());
if (Build.VERSION.SDK_INT < 9) {
editor.commit();
......@@ -324,7 +306,7 @@ public class Notification {
private void unpersist () {
SharedPreferences.Editor editor = getPrefs().edit();
editor.remove(options.getId());
editor.remove(options.getIdStr());
if (Build.VERSION.SDK_INT < 9) {
editor.commit();
......
......@@ -23,16 +23,16 @@
package de.appplant.cordova.plugin.notification;
import java.util.Date;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.AlarmManager;
import android.content.Context;
import android.graphics.Bitmap;
import android.net.Uri;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.Date;
/**
* Wrapper around the JSON object passed through JS which contains all
* possible option values. Class provides simple readers and more advanced
......@@ -189,35 +189,34 @@ public class Options {
}
/**
* Trigger date in milliseconds.
* ID for the local notification as a number.
*/
public long getTriggerTime() {
return options.optLong("at", 0) * 1000;
public Integer getId() {
return options.optInt("id", 0);
}
/**
* Trigger date.
* ID for the local notification as a string.
*/
public Date getTriggerDate() {
return new Date(getTriggerTime());
public String getIdStr() {
return getId().toString();
}
/**
* ID for the local notification.
* Trigger date.
*/
public String getId() {
return options.optString("id", "0");
public Date getTriggerDate() {
return new Date(getTriggerTime());
}
/**
* ID for the local notification.
* Trigger date in milliseconds.
*/
public int getIdAsInt() {
try {
return Integer.parseInt(getId());
} catch (Exception ignore) {
return 0;
}
public long getTriggerTime() {
return Math.max(
System.currentTimeMillis(),
options.optLong("at", 0) * 1000
);
}
/**
......
......@@ -42,11 +42,6 @@ public class TriggerReceiver extends AbstractTriggerReceiver {
*/
@Override
public void onTrigger (Notification notification, boolean updated) {
if (notification.isRepeating()) {
notification.reschedule();
}
notification.show();
}
......
......@@ -61,6 +61,13 @@
// 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
......
......@@ -102,7 +102,7 @@
[self.commandDelegate runInBackground:^{
for (NSDictionary* options in notifications) {
NSString* id = [options objectForKey:@"id"];
NSNumber* id = [options objectForKey:@"id"];
UILocalNotification* notification;
notification = [self.app localNotificationWithId:id];
......@@ -133,7 +133,7 @@
- (void) cancel:(CDVInvokedUrlCommand*)command
{
[self.commandDelegate runInBackground:^{
for (NSString* id in command.arguments) {
for (NSNumber* id in command.arguments) {
UILocalNotification* notification;
notification = [self.app localNotificationWithId:id];
......@@ -170,7 +170,7 @@
- (void) clear:(CDVInvokedUrlCommand*)command
{
[self.commandDelegate runInBackground:^{
for (NSString* id in command.arguments) {
for (NSNumber* id in command.arguments) {
UILocalNotification* notification;
notification = [self.app localNotificationWithId:id];
......@@ -241,7 +241,7 @@
type:(APPLocalNotificationType)type;
{
[self.commandDelegate runInBackground:^{
NSString* id = [command argumentAtIndex:0];
NSNumber* id = [command argumentAtIndex:0];
BOOL exist;
CDVPluginResult* result;
......@@ -314,6 +314,28 @@
}
/**
* 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
......@@ -347,6 +369,38 @@
}
/**
* Propertys for given triggered notification.
*
* @param type
* Notification life cycle type
* @param ids
* The ID of the notification
*/
- (void) getOption:(CDVInvokedUrlCommand*)command
byType:(APPLocalNotificationType)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[0]];
[self.commandDelegate sendPluginResult:result
callbackId:command.callbackId];
}];
}
/**
* Property list for given triggered notifications.
*
* @param type
......@@ -474,7 +528,7 @@
*/
- (void) cancelForerunnerLocalNotification:(UILocalNotification*)notification
{
NSString* id = notification.options.id;
NSNumber* id = notification.options.id;
UILocalNotification* forerunner;
forerunner = [self.app localNotificationWithId:id];
......
......@@ -25,7 +25,7 @@
- (id) initWithDict:(NSDictionary*)dict;
@property (readonly, getter=id) NSString* id;
@property (readonly, getter=id) NSNumber* id;
@property (readonly, getter=badgeNumber) NSInteger badgeNumber;
@property (readonly, getter=alertBody) NSString* alertBody;
@property (readonly, getter=soundName) NSString* soundName;
......
......@@ -59,9 +59,11 @@ NSString* const DEFAULT_SOUND = @"res://platform_default";
/**
* The notification's ID.
*/
- (NSString*) id
- (NSNumber*) id
{
return [dict objectForKey:@"id"];
NSInteger id = [[dict objectForKey:@"id"] integerValue];
return [NSNumber numberWithInteger:id];
}
/**
......@@ -186,6 +188,14 @@ NSString* const DEFAULT_SOUND = @"res://platform_default";
*/
- (NSDictionary*) userInfo
{
if ([dict objectForKey:@"updatedAt"]) {
NSMutableDictionary* data = [dict mutableCopy];
[data removeObjectForKey:@"updatedAt"];
return data;
}
return dict;
}
......
......@@ -37,14 +37,14 @@
- (NSArray*) localNotificationIdsByType:(APPLocalNotificationType)type;
// If local notification with ID exists
- (BOOL) localNotificationExist:(NSString*)id;
- (BOOL) localNotificationExist:(NSNumber*)id;
// If local notification with ID and type exists
- (BOOL) localNotificationExist:(NSString*)id type:(APPLocalNotificationType)type;
- (BOOL) localNotificationExist:(NSNumber*)id type:(APPLocalNotificationType)type;
// Local notification by ID
- (UILocalNotification*) localNotificationWithId:(NSString*)id;
- (UILocalNotification*) localNotificationWithId:(NSNumber*)id;
// Local notification by ID and type
- (UILocalNotification*) localNotificationWithId:(NSString*)id andType:(APPLocalNotificationType)type;
- (UILocalNotification*) localNotificationWithId:(NSNumber*)id andType:(APPLocalNotificationType)type;
// Property list from all local notifications
- (NSArray*) localNotificationOptions;
......
......@@ -159,7 +159,7 @@
* @param id
* Notification ID
*/
- (BOOL) localNotificationExist:(NSString*)id
- (BOOL) localNotificationExist:(NSNumber*)id
{
return [self localNotificationWithId:id] != NULL;
}
......@@ -171,7 +171,7 @@
* @param type
* Notification life cycle type
*/
- (BOOL) localNotificationExist:(NSString*)id type:(APPLocalNotificationType)type
- (BOOL) localNotificationExist:(NSNumber*)id type:(APPLocalNotificationType)type
{
return [self localNotificationWithId:id andType:type] != NULL;
}
......@@ -182,13 +182,13 @@
* @param id
* Notification ID
*/
- (UILocalNotification*) localNotificationWithId:(NSString*)id
- (UILocalNotification*) localNotificationWithId:(NSNumber*)id
{
NSArray* notifications = self.localNotifications;
for (UILocalNotification* notification in notifications)
{
if ([notification.options.id isEqualToString:id]) {
if ([notification.options.id isEqualToNumber:id]) {
return notification;
}
}
......@@ -204,7 +204,7 @@
* @param type
* Notification life cycle type
*/
- (UILocalNotification*) localNotificationWithId:(NSString*)id andType:(APPLocalNotificationType)type
- (UILocalNotification*) localNotificationWithId:(NSNumber*)id andType:(APPLocalNotificationType)type
{
UILocalNotification* notification = [self localNotificationWithId:id];
......@@ -224,7 +224,7 @@
for (UILocalNotification* notification in notifications)
{
[options addObject:notification.userInfo];
[options addObject:notification.options.userInfo];
}
return options;
......@@ -244,7 +244,7 @@
for (UILocalNotification* notification in notifications)
{
if (notification.type == type) {
[options addObject:notification.userInfo];
[options addObject:notification.options.userInfo];
}
}
......@@ -262,12 +262,12 @@
UILocalNotification* notification;
NSMutableArray* options = [[NSMutableArray alloc] init];
for (NSString* id in ids)
for (NSNumber* id in ids)
{
notification = [self localNotificationWithId:id];
if (notification) {
[options addObject:notification.userInfo];
[options addObject:notification.options.userInfo];
}
}
......@@ -287,12 +287,12 @@
UILocalNotification* notification;
NSMutableArray* options = [[NSMutableArray alloc] init];
for (NSString* id in ids)
for (NSNumber* id in ids)
{
notification = [self localNotificationWithId:id];
if (notification && notification.type == type) {
[options addObject:notification.userInfo];
[options addObject:notification.options.userInfo];
}
}
......
......@@ -20,12 +20,12 @@
*/
var Notifications = Windows.UI.Notifications,
applicationData = Windows.Storage.ApplicationData.current,
localSettings = applicationData.localSettings;
var proxy = require('de.appplant.cordova.plugin.local-notification.LocalNotification.Proxy');
var Notifications = Windows.UI.Notifications;
exports.core = {
proxy.core = {
/**
* Executes all queued events.
......
......@@ -209,6 +209,54 @@ exports.getTriggeredIds = function (success, error) {
};
/**
* Propertys for given notification.
*
* @param {Function} success
* Success callback
* @param {Function} error
* Error callback
* @param {int[]} ids
* List of local notification IDs
*/
exports.getSingle = function (success, error, ids) {
var notification = exports.core.getAll(ids)[0];
success(notification);
};
/**
* Propertys for given scheduled notification.
*
* @param {Function} success
* Success callback
* @param {Function} error
* Error callback
* @param {int[]} ids
* List of local notification IDs
*/
exports.getSingleScheduled = function (success, error, ids) {
var notification = exports.core.getScheduled(ids)[0];
success(notification);
};
/**
* Propertys for given triggered notification.
*
* @param {Function} success
* Success callback
* @param {Function} error
* Error callback
* @param {int[]} ids
* List of local notification IDs
*/
exports.getSingleTriggered = function (success, error, ids) {
var notification = exports.core.getTriggered(ids)[0];
success(notification);
};
/**
* Property list for given notifications.
* If called without IDs, all notification will be returned.
*
......@@ -259,11 +307,5 @@ exports.getTriggered = function (success, error, ids) {
success(notifications);
};
/**
* Required for core module to access the proxy.
*/
exports.exports = function () {
return exports;
};
cordova.commandProxy.add('LocalNotification', exports);
......@@ -20,9 +20,9 @@
*/
var channel = require('cordova/channel');
exports = require('de.appplant.cordova.plugin.local-notification.LocalNotification.Proxy').core;
exports = require('de.appplant.cordova.plugin.local-notification.LocalNotification.Proxy.Core').core;
var channel = require('cordova/channel');
/***********
......
......@@ -172,9 +172,7 @@ exports.cancelAll = function (callback, scope) {
* The scope for the callback function
*/
exports.isPresent = function (id, callback, scope) {
var notId = (id || '0').toString();
this.exec('isPresent', notId, callback, scope);
this.exec('isPresent', id || 0, callback, scope);
};
/**
......@@ -188,9 +186,7 @@ exports.isPresent = function (id, callback, scope) {
* The scope for the callback function
*/
exports.isScheduled = function (id, callback, scope) {
var notId = (id || '0').toString();
this.exec('isScheduled', notId, callback, scope);
this.exec('isScheduled', id || 0, callback, scope);
};
/**
......@@ -204,9 +200,7 @@ exports.isScheduled = function (id, callback, scope) {
* The scope for the callback function
*/
exports.isTriggered = function (id, callback, scope) {
var notId = (id || '0').toString();
this.exec('isTriggered', notId, callback, scope);
this.exec('isTriggered', id || 0, callback, scope);
};
/**
......@@ -275,7 +269,7 @@ exports.get = function () {
scope = args[2];
if (!Array.isArray(ids)) {
this.exec('getSingle', ids.toString(), callback, scope);
this.exec('getSingle', Number(ids), callback, scope);
return;
}
......@@ -323,7 +317,7 @@ exports.getScheduled = function () {
}
if (!Array.isArray(ids)) {
this.exec('getSingleScheduled', ids.toString(), callback, scope);
this.exec('getSingleScheduled', Number(ids), callback, scope);
return;
}
......@@ -371,7 +365,7 @@ exports.getTriggered = function () {
}
if (!Array.isArray(ids)) {
this.exec('getSingleTriggered', ids.toString(), callback, scope);
this.exec('getSingleTriggered', Number(ids), callback, scope);
return;
}
......
......@@ -35,7 +35,7 @@ exports._defaults = {
title: '',
sound: 'res://platform_default',
badge: 0,
id: "0",
id: 0,
data: undefined,
every: undefined,
at: undefined
......@@ -87,7 +87,9 @@ exports.mergeWithDefaults = function (options) {
options.text = this.getValueFor(options, 'text', 'message');
options.data = this.getValueFor(options, 'data', 'json');
options.autoClear = this.getValueFor(options, 'autoClear', 'autoCancel');
if (defaults.hasOwnProperty('autoClear')) {
options.autoClear = this.getValueFor(options, 'autoClear', 'autoCancel');
}
if (options.autoClear !== true && options.ongoing) {
options.autoClear = false;
......@@ -131,8 +133,9 @@ 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 = options.id.toString();
options.id = Number(options.id);
}
}
......@@ -147,13 +150,18 @@ exports.convertProperties = function (options) {
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 (typeof options.at == 'object') {
options.at = Math.round(options.at.getTime()/1000);
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') {
......@@ -175,6 +183,7 @@ exports.convertProperties = function (options) {
* The new callback function
*/
exports.createCallbackFn = function (callbackFn, scope) {
if (typeof callbackFn != 'function')
return;
......@@ -184,17 +193,17 @@ exports.createCallbackFn = function (callbackFn, scope) {
};
/**
* Convert the IDs to Strings.
* Convert the IDs to numbers.
*
* @param {String/Number[]} ids
*
* @return Array of Strings
* @return Array of Numbers
*/
exports.convertIds = function (ids) {
var convertedIds = [];
for (var i = 0; i < ids.length; i++) {
convertedIds.push(ids[i].toString());
convertedIds.push(Number(ids[i]));
}
return convertedIds;
......
......@@ -9,15 +9,15 @@
"parents": {
"/*": [
{
"xml": "<feature name=\"Toast\"><param name=\"ios-package\" value=\"Toast\" /></feature>",
"xml": "<feature name=\"Device\"><param name=\"ios-package\" value=\"CDVDevice\" /></feature>",
"count": 1
},
{
"xml": "<feature name=\"Device\"><param name=\"ios-package\" value=\"CDVDevice\" /></feature>",
"xml": "<feature name=\"LocalNotification\"><param name=\"ios-package\" onload=\"true\" value=\"APPLocalNotification\" /><param name=\"onload\" value=\"true\" /></feature>",
"count": 1
},
{
"xml": "<feature name=\"LocalNotification\"><param name=\"ios-package\" onload=\"true\" value=\"APPLocalNotification\" /><param name=\"onload\" value=\"true\" /></feature>",
"xml": "<feature name=\"Toast\"><param name=\"ios-package\" value=\"Toast\" /></feature>",
"count": 1
}
]
......@@ -30,17 +30,16 @@
"xml": false,
"count": 1
}
],
"MessageUI.framework": []
]
}
}
}
},
"installed_plugins": {
"nl.x-services.plugins.toast": {
"de.appplant.cordova.plugin.local-notification": {
"PACKAGE_NAME": "de.appplant.localnotification.example"
},
"de.appplant.cordova.plugin.local-notification": {
"nl.x-services.plugins.toast": {
"PACKAGE_NAME": "de.appplant.localnotification.example"
}
},
......
......@@ -7,10 +7,10 @@
"files": {}
},
"installed_plugins": {
"de.appplant.cordova.plugin.local-notification": {
"nl.x-services.plugins.toast": {
"PACKAGE_NAME": "NotificationExample"
},
"nl.x-services.plugins.toast": {
"de.appplant.cordova.plugin.local-notification": {
"PACKAGE_NAME": "NotificationExample"
}
},
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment