Updated to support sound & callbacks
6
iPhone/LocalNotification/example/.gitignore
vendored
@@ -1,6 +0,0 @@
|
||||
*.mode1v3
|
||||
*.perspectivev3
|
||||
*.pbxuser
|
||||
.DS_Store
|
||||
build
|
||||
www/phonegap.js
|
||||
@@ -1,16 +0,0 @@
|
||||
//
|
||||
// exampleAppDelegate.h
|
||||
// example
|
||||
//
|
||||
// Created by Gregamel on 4/3/11.
|
||||
// Copyright Boeing 2011. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
#import "PhoneGapDelegate.h"
|
||||
|
||||
@interface exampleAppDelegate : PhoneGapDelegate {
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@@ -1,81 +0,0 @@
|
||||
//
|
||||
// exampleAppDelegate.m
|
||||
// example
|
||||
//
|
||||
// Created by Gregamel on 4/3/11.
|
||||
// Copyright Boeing 2011. All rights reserved.
|
||||
//
|
||||
|
||||
#import "exampleAppDelegate.h"
|
||||
#import "PhoneGapViewController.h"
|
||||
|
||||
@implementation exampleAppDelegate
|
||||
|
||||
- (id) init
|
||||
{
|
||||
/** If you need to do any extra app-specific initialization, you can do it here
|
||||
* -jm
|
||||
**/
|
||||
return [super init];
|
||||
}
|
||||
|
||||
/**
|
||||
* This is main kick off after the app inits, the views and Settings are setup here.
|
||||
*/
|
||||
- (void)applicationDidFinishLaunching:(UIApplication *)application
|
||||
{
|
||||
[ super applicationDidFinishLaunching:application ];
|
||||
}
|
||||
|
||||
-(id) getCommandInstance:(NSString*)className
|
||||
{
|
||||
/** You can catch your own commands here, if you wanted to extend the gap: protocol, or add your
|
||||
* own app specific protocol to it. -jm
|
||||
**/
|
||||
return [super getCommandInstance:className];
|
||||
}
|
||||
|
||||
/**
|
||||
Called when the webview finishes loading. This stops the activity view and closes the imageview
|
||||
*/
|
||||
- (void)webViewDidFinishLoad:(UIWebView *)theWebView
|
||||
{
|
||||
return [ super webViewDidFinishLoad:theWebView ];
|
||||
}
|
||||
|
||||
- (void)webViewDidStartLoad:(UIWebView *)theWebView
|
||||
{
|
||||
return [ super webViewDidStartLoad:theWebView ];
|
||||
}
|
||||
|
||||
/**
|
||||
* Fail Loading With Error
|
||||
* Error - If the webpage failed to load display an error with the reson.
|
||||
*/
|
||||
- (void)webView:(UIWebView *)theWebView didFailLoadWithError:(NSError *)error
|
||||
{
|
||||
return [ super webView:theWebView didFailLoadWithError:error ];
|
||||
}
|
||||
|
||||
/**
|
||||
* Start Loading Request
|
||||
* This is where most of the magic happens... We take the request(s) and process the response.
|
||||
* From here we can re direct links and other protocalls to different internal methods.
|
||||
*/
|
||||
- (BOOL)webView:(UIWebView *)theWebView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
|
||||
{
|
||||
return [ super webView:theWebView shouldStartLoadWithRequest:request navigationType:navigationType ];
|
||||
}
|
||||
|
||||
|
||||
- (BOOL) execute:(InvokedUrlCommand*)command
|
||||
{
|
||||
return [ super execute:command];
|
||||
}
|
||||
|
||||
- (void)dealloc
|
||||
{
|
||||
[ super dealloc ];
|
||||
}
|
||||
|
||||
@end
|
||||
|
Before Width: | Height: | Size: 5.3 KiB |
|
Before Width: | Height: | Size: 5.7 KiB |
|
Before Width: | Height: | Size: 2.9 KiB |
@@ -1,14 +0,0 @@
|
||||
<?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>DetectPhoneNumber</key>
|
||||
<true/>
|
||||
<key>TopActivityIndicator</key>
|
||||
<string>gray</string>
|
||||
<key>EnableLocation</key>
|
||||
<true/>
|
||||
<key>EnableAcceleration</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -1,8 +0,0 @@
|
||||
//
|
||||
// PhoneGap.xcconfig
|
||||
// example
|
||||
//
|
||||
|
||||
// Override this to use your project specific PHONEGAPLIB.
|
||||
// You can base it off the current project path, $(PROJECT_DIR)
|
||||
PHONEGAPLIB = $(PHONEGAPLIB)
|
||||
35
iPhone/LocalNotification/example/css/style.css
Normal file
@@ -0,0 +1,35 @@
|
||||
* {
|
||||
margin:0px;
|
||||
}
|
||||
body {
|
||||
font-family:Helvetica;
|
||||
-webkit-user-select: none;
|
||||
background-color:#fff;
|
||||
}
|
||||
#wrapper {
|
||||
width:100%;
|
||||
height:100%;
|
||||
padding-top:15px;
|
||||
}
|
||||
#header {
|
||||
height:150px;
|
||||
width:100%;
|
||||
background-image:url(../images/header.png);
|
||||
background-size:100%;
|
||||
margin-bottom:10px;
|
||||
box-shadow: 0px 0px 2px .6px #222222;
|
||||
}
|
||||
.btn {
|
||||
font-size:18px;
|
||||
text-align:center;
|
||||
padding-top:12px;
|
||||
padding-bottom:12px;
|
||||
width:95%;
|
||||
border-radius: 5px;
|
||||
background-color:#545454;
|
||||
margin:auto;
|
||||
color:#fff;
|
||||
font-weight:bold;
|
||||
box-shadow: 0px 0px 2px .6px #222222;
|
||||
margin-top:5px;
|
||||
}
|
||||
@@ -1,457 +0,0 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 45;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
1D3623260D0F684500981E51 /* exampleAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* exampleAppDelegate.m */; };
|
||||
1D60589B0D05DD56006BFB54 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; };
|
||||
1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; };
|
||||
1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; };
|
||||
288765FD0DF74451002DB57D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765FC0DF74451002DB57D /* CoreGraphics.framework */; };
|
||||
3009C2AC127B894C007F4BC6 /* icon-72.png in Resources */ = {isa = PBXBuildFile; fileRef = 3009C2AA127B894C007F4BC6 /* icon-72.png */; };
|
||||
3009C2AD127B894C007F4BC6 /* icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3009C2AB127B894C007F4BC6 /* icon@2x.png */; };
|
||||
3009C2B2127B897D007F4BC6 /* Default-Landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = 3009C2B0127B897D007F4BC6 /* Default-Landscape.png */; };
|
||||
3009C2B3127B897D007F4BC6 /* Default-Portrait.png in Resources */ = {isa = PBXBuildFile; fileRef = 3009C2B1127B897D007F4BC6 /* Default-Portrait.png */; };
|
||||
301BF552109A68D80062928A /* libPhoneGapLib.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 301BF535109A57CC0062928A /* libPhoneGapLib.a */; };
|
||||
301BF570109A69640062928A /* www in Resources */ = {isa = PBXBuildFile; fileRef = 301BF56E109A69640062928A /* www */; };
|
||||
301BF5B5109A6A2B0062928A /* AddressBook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 301BF5B4109A6A2B0062928A /* AddressBook.framework */; };
|
||||
301BF5B7109A6A2B0062928A /* AddressBookUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 301BF5B6109A6A2B0062928A /* AddressBookUI.framework */; };
|
||||
301BF5B9109A6A2B0062928A /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 301BF5B8109A6A2B0062928A /* AudioToolbox.framework */; };
|
||||
301BF5BB109A6A2B0062928A /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 301BF5BA109A6A2B0062928A /* AVFoundation.framework */; };
|
||||
301BF5BD109A6A2B0062928A /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 301BF5BC109A6A2B0062928A /* CFNetwork.framework */; };
|
||||
301BF5BF109A6A2B0062928A /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 301BF5BE109A6A2B0062928A /* CoreLocation.framework */; };
|
||||
301BF5C1109A6A2B0062928A /* MediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 301BF5C0109A6A2B0062928A /* MediaPlayer.framework */; };
|
||||
301BF5C3109A6A2B0062928A /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 301BF5C2109A6A2B0062928A /* QuartzCore.framework */; };
|
||||
301BF5C5109A6A2B0062928A /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 301BF5C4109A6A2B0062928A /* SystemConfiguration.framework */; };
|
||||
302CC88810CD8CCE00C49659 /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = 302CC88610CD8CCE00C49659 /* Default.png */; };
|
||||
302CC88910CD8CCE00C49659 /* icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 302CC88710CD8CCE00C49659 /* icon.png */; };
|
||||
3053AC6F109B7857006FCFE7 /* VERSION in Resources */ = {isa = PBXBuildFile; fileRef = 3053AC6E109B7857006FCFE7 /* VERSION */; };
|
||||
305D5FD1115AB8F900A74A75 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 305D5FD0115AB8F900A74A75 /* MobileCoreServices.framework */; };
|
||||
307D28A2123043360040C0FA /* PhoneGapBuildSettings.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 307D28A1123043350040C0FA /* PhoneGapBuildSettings.xcconfig */; };
|
||||
30E1352710E2C1420031B30D /* PhoneGap.plist in Resources */ = {isa = PBXBuildFile; fileRef = 30E1352610E2C1420031B30D /* PhoneGap.plist */; };
|
||||
76EA52F71349035E00AE681A /* LocalNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = 76EA52F61349035E00AE681A /* LocalNotification.m */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
301BF534109A57CC0062928A /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 301BF52D109A57CC0062928A /* PhoneGapLib.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = D2AAC07E0554694100DB518D;
|
||||
remoteInfo = PhoneGapLib;
|
||||
};
|
||||
301BF550109A68C00062928A /* PBXContainerItemProxy */ = {
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = 301BF52D109A57CC0062928A /* PhoneGapLib.xcodeproj */;
|
||||
proxyType = 1;
|
||||
remoteGlobalIDString = D2AAC07D0554694100DB518D;
|
||||
remoteInfo = PhoneGapLib;
|
||||
};
|
||||
/* End PBXContainerItemProxy section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
|
||||
1D3623240D0F684500981E51 /* exampleAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = exampleAppDelegate.h; sourceTree = "<group>"; };
|
||||
1D3623250D0F684500981E51 /* exampleAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = exampleAppDelegate.m; sourceTree = "<group>"; };
|
||||
1D6058910D05DD3D006BFB54 /* example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = example.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
|
||||
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>"; };
|
||||
3009C2AA127B894C007F4BC6 /* icon-72.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon-72.png"; sourceTree = "<group>"; };
|
||||
3009C2AB127B894C007F4BC6 /* icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "icon@2x.png"; sourceTree = "<group>"; };
|
||||
3009C2B0127B897D007F4BC6 /* Default-Landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-Landscape.png"; sourceTree = "<group>"; };
|
||||
3009C2B1127B897D007F4BC6 /* Default-Portrait.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-Portrait.png"; sourceTree = "<group>"; };
|
||||
301BF52D109A57CC0062928A /* PhoneGapLib.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = PhoneGapLib.xcodeproj; sourceTree = PHONEGAPLIB; };
|
||||
301BF56E109A69640062928A /* www */ = {isa = PBXFileReference; lastKnownFileType = folder; path = www; sourceTree = SOURCE_ROOT; };
|
||||
301BF5B4109A6A2B0062928A /* AddressBook.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AddressBook.framework; path = System/Library/Frameworks/AddressBook.framework; sourceTree = SDKROOT; };
|
||||
301BF5B6109A6A2B0062928A /* AddressBookUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AddressBookUI.framework; path = System/Library/Frameworks/AddressBookUI.framework; sourceTree = SDKROOT; };
|
||||
301BF5B8109A6A2B0062928A /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
|
||||
301BF5BA109A6A2B0062928A /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
|
||||
301BF5BC109A6A2B0062928A /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = System/Library/Frameworks/CFNetwork.framework; sourceTree = SDKROOT; };
|
||||
301BF5BE109A6A2B0062928A /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = System/Library/Frameworks/CoreLocation.framework; sourceTree = SDKROOT; };
|
||||
301BF5C0109A6A2B0062928A /* MediaPlayer.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MediaPlayer.framework; path = System/Library/Frameworks/MediaPlayer.framework; sourceTree = SDKROOT; };
|
||||
301BF5C2109A6A2B0062928A /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
|
||||
301BF5C4109A6A2B0062928A /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; };
|
||||
302CC88610CD8CCE00C49659 /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Default.png; sourceTree = "<group>"; };
|
||||
302CC88710CD8CCE00C49659 /* icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = icon.png; sourceTree = "<group>"; };
|
||||
3053AC6E109B7857006FCFE7 /* VERSION */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = VERSION; sourceTree = PHONEGAPLIB; };
|
||||
305D5FD0115AB8F900A74A75 /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = System/Library/Frameworks/MobileCoreServices.framework; sourceTree = SDKROOT; };
|
||||
307D28A1123043350040C0FA /* PhoneGapBuildSettings.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = PhoneGapBuildSettings.xcconfig; sourceTree = "<group>"; };
|
||||
30E1352610E2C1420031B30D /* PhoneGap.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = PhoneGap.plist; sourceTree = "<group>"; };
|
||||
32CA4F630368D1EE00C91783 /* example_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = example_Prefix.pch; sourceTree = "<group>"; };
|
||||
76EA52F51349035E00AE681A /* LocalNotification.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LocalNotification.h; path = ../LocalNotification.h; sourceTree = SOURCE_ROOT; };
|
||||
76EA52F61349035E00AE681A /* LocalNotification.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = LocalNotification.m; path = ../LocalNotification.m; sourceTree = SOURCE_ROOT; };
|
||||
8D1107310486CEB800E47090 /* example-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "example-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
1D60588F0D05DD3D006BFB54 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
301BF552109A68D80062928A /* libPhoneGapLib.a in Frameworks */,
|
||||
1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */,
|
||||
1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */,
|
||||
288765FD0DF74451002DB57D /* CoreGraphics.framework in Frameworks */,
|
||||
301BF5B5109A6A2B0062928A /* AddressBook.framework in Frameworks */,
|
||||
301BF5B7109A6A2B0062928A /* AddressBookUI.framework in Frameworks */,
|
||||
301BF5B9109A6A2B0062928A /* AudioToolbox.framework in Frameworks */,
|
||||
301BF5BB109A6A2B0062928A /* AVFoundation.framework in Frameworks */,
|
||||
301BF5BD109A6A2B0062928A /* CFNetwork.framework in Frameworks */,
|
||||
301BF5BF109A6A2B0062928A /* CoreLocation.framework in Frameworks */,
|
||||
301BF5C1109A6A2B0062928A /* MediaPlayer.framework in Frameworks */,
|
||||
301BF5C3109A6A2B0062928A /* QuartzCore.framework in Frameworks */,
|
||||
301BF5C5109A6A2B0062928A /* SystemConfiguration.framework in Frameworks */,
|
||||
305D5FD1115AB8F900A74A75 /* MobileCoreServices.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
080E96DDFE201D6D7F000001 /* Classes */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1D3623240D0F684500981E51 /* exampleAppDelegate.h */,
|
||||
1D3623250D0F684500981E51 /* exampleAppDelegate.m */,
|
||||
);
|
||||
path = Classes;
|
||||
sourceTree = SOURCE_ROOT;
|
||||
};
|
||||
19C28FACFE9D520D11CA2CBB /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1D6058910D05DD3D006BFB54 /* example.app */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97314FDCFA39411CA2CEA /* CustomTemplate */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
301BF56E109A69640062928A /* www */,
|
||||
301BF52D109A57CC0062928A /* PhoneGapLib.xcodeproj */,
|
||||
080E96DDFE201D6D7F000001 /* Classes */,
|
||||
307C750510C5A3420062BCA9 /* Plugins */,
|
||||
29B97315FDCFA39411CA2CEA /* Other Sources */,
|
||||
29B97317FDCFA39411CA2CEA /* Resources */,
|
||||
29B97323FDCFA39411CA2CEA /* Frameworks */,
|
||||
19C28FACFE9D520D11CA2CBB /* Products */,
|
||||
);
|
||||
name = CustomTemplate;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97315FDCFA39411CA2CEA /* Other Sources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
32CA4F630368D1EE00C91783 /* example_Prefix.pch */,
|
||||
29B97316FDCFA39411CA2CEA /* main.m */,
|
||||
);
|
||||
name = "Other Sources";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97317FDCFA39411CA2CEA /* Resources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3009C2AF127B8962007F4BC6 /* splash */,
|
||||
3009C2AE127B8952007F4BC6 /* icons */,
|
||||
30E1352610E2C1420031B30D /* PhoneGap.plist */,
|
||||
3053AC6E109B7857006FCFE7 /* VERSION */,
|
||||
8D1107310486CEB800E47090 /* example-Info.plist */,
|
||||
307D28A1123043350040C0FA /* PhoneGapBuildSettings.xcconfig */,
|
||||
);
|
||||
name = Resources;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
29B97323FDCFA39411CA2CEA /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1DF5F4DF0D08C38300B7A737 /* UIKit.framework */,
|
||||
1D30AB110D05D00D00671497 /* Foundation.framework */,
|
||||
288765FC0DF74451002DB57D /* CoreGraphics.framework */,
|
||||
301BF5B4109A6A2B0062928A /* AddressBook.framework */,
|
||||
301BF5B6109A6A2B0062928A /* AddressBookUI.framework */,
|
||||
301BF5B8109A6A2B0062928A /* AudioToolbox.framework */,
|
||||
301BF5BA109A6A2B0062928A /* AVFoundation.framework */,
|
||||
301BF5BC109A6A2B0062928A /* CFNetwork.framework */,
|
||||
301BF5BE109A6A2B0062928A /* CoreLocation.framework */,
|
||||
301BF5C0109A6A2B0062928A /* MediaPlayer.framework */,
|
||||
301BF5C2109A6A2B0062928A /* QuartzCore.framework */,
|
||||
301BF5C4109A6A2B0062928A /* SystemConfiguration.framework */,
|
||||
305D5FD0115AB8F900A74A75 /* MobileCoreServices.framework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
3009C2AE127B8952007F4BC6 /* icons */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3009C2AA127B894C007F4BC6 /* icon-72.png */,
|
||||
3009C2AB127B894C007F4BC6 /* icon@2x.png */,
|
||||
302CC88710CD8CCE00C49659 /* icon.png */,
|
||||
);
|
||||
name = icons;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
3009C2AF127B8962007F4BC6 /* splash */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3009C2B0127B897D007F4BC6 /* Default-Landscape.png */,
|
||||
3009C2B1127B897D007F4BC6 /* Default-Portrait.png */,
|
||||
302CC88610CD8CCE00C49659 /* Default.png */,
|
||||
);
|
||||
name = splash;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
301BF52E109A57CC0062928A /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
301BF535109A57CC0062928A /* libPhoneGapLib.a */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
307C750510C5A3420062BCA9 /* Plugins */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
76EA52F51349035E00AE681A /* LocalNotification.h */,
|
||||
76EA52F61349035E00AE681A /* LocalNotification.m */,
|
||||
);
|
||||
path = Plugins;
|
||||
sourceTree = SOURCE_ROOT;
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
1D6058900D05DD3D006BFB54 /* example */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "example" */;
|
||||
buildPhases = (
|
||||
30E9A9A110B758320022D3BA /* Copy PhoneGap Javascript */,
|
||||
304B58A110DAC018002A0835 /* Touch www folder */,
|
||||
1D60588D0D05DD3D006BFB54 /* Resources */,
|
||||
1D60588E0D05DD3D006BFB54 /* Sources */,
|
||||
1D60588F0D05DD3D006BFB54 /* Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
301BF551109A68C00062928A /* PBXTargetDependency */,
|
||||
);
|
||||
name = example;
|
||||
productName = example;
|
||||
productReference = 1D6058910D05DD3D006BFB54 /* example.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
29B97313FDCFA39411CA2CEA /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "example" */;
|
||||
compatibilityVersion = "Xcode 3.1";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 1;
|
||||
knownRegions = (
|
||||
English,
|
||||
Japanese,
|
||||
French,
|
||||
German,
|
||||
);
|
||||
mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */;
|
||||
projectDirPath = "";
|
||||
projectReferences = (
|
||||
{
|
||||
ProductGroup = 301BF52E109A57CC0062928A /* Products */;
|
||||
ProjectRef = 301BF52D109A57CC0062928A /* PhoneGapLib.xcodeproj */;
|
||||
},
|
||||
);
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
1D6058900D05DD3D006BFB54 /* example */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXReferenceProxy section */
|
||||
301BF535109A57CC0062928A /* libPhoneGapLib.a */ = {
|
||||
isa = PBXReferenceProxy;
|
||||
fileType = archive.ar;
|
||||
path = libPhoneGapLib.a;
|
||||
remoteRef = 301BF534109A57CC0062928A /* PBXContainerItemProxy */;
|
||||
sourceTree = BUILT_PRODUCTS_DIR;
|
||||
};
|
||||
/* End PBXReferenceProxy section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
1D60588D0D05DD3D006BFB54 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
301BF570109A69640062928A /* www in Resources */,
|
||||
3053AC6F109B7857006FCFE7 /* VERSION in Resources */,
|
||||
302CC88810CD8CCE00C49659 /* Default.png in Resources */,
|
||||
302CC88910CD8CCE00C49659 /* icon.png in Resources */,
|
||||
30E1352710E2C1420031B30D /* PhoneGap.plist in Resources */,
|
||||
307D28A2123043360040C0FA /* PhoneGapBuildSettings.xcconfig in Resources */,
|
||||
3009C2AC127B894C007F4BC6 /* icon-72.png in Resources */,
|
||||
3009C2AD127B894C007F4BC6 /* icon@2x.png in Resources */,
|
||||
3009C2B2127B897D007F4BC6 /* Default-Landscape.png in Resources */,
|
||||
3009C2B3127B897D007F4BC6 /* Default-Portrait.png in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXShellScriptBuildPhase section */
|
||||
304B58A110DAC018002A0835 /* Touch www folder */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "Touch www folder";
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "touch -cm ${PROJECT_DIR}/www";
|
||||
};
|
||||
30E9A9A110B758320022D3BA /* Copy PhoneGap Javascript */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "Copy PhoneGap Javascript";
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "# get the PhoneGapLib version\nPGVER=`head -1 \"${PHONEGAPLIB}/VERSION\"`\n\nSRC1=\"${PHONEGAPLIB}/javascripts/phonegap.${PGVER}.js\"\nSRC2=\"${PHONEGAPLIB}/javascripts/phonegap.${PGVER}.min.js\"\nTARGET=\"${PROJECT_DIR}/www\"\n\n# compile and copy PhoneGapLib\nmake -C \"${PHONEGAPLIB}\"\ncp \"${SRC1}\" \"${TARGET}\"\ncp \"${SRC2}\" \"${TARGET}\"\n\n# replace [src=\"phonegap.js\"] in all files in www\nfind \"${TARGET}\" | xargs grep 'src[ \t]*=[ \t]*[\\\\'\\\"]phonegap.*.*.js[\\\\'\\\"]' -sl | xargs -L1 sed -i \"\" \"s/src[ \t]*=[ \t]*[\\\\'\\\"]phonegap.*.*.js[\\\\'\\\"]/src=\\\"phonegap.${PGVER}.min.js\\\"/g\"";
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
1D60588E0D05DD3D006BFB54 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
1D60589B0D05DD56006BFB54 /* main.m in Sources */,
|
||||
1D3623260D0F684500981E51 /* exampleAppDelegate.m in Sources */,
|
||||
76EA52F71349035E00AE681A /* LocalNotification.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXTargetDependency section */
|
||||
301BF551109A68C00062928A /* PBXTargetDependency */ = {
|
||||
isa = PBXTargetDependency;
|
||||
name = PhoneGapLib;
|
||||
targetProxy = 301BF550109A68C00062928A /* PBXContainerItemProxy */;
|
||||
};
|
||||
/* End PBXTargetDependency section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
1D6058940D05DD3E006BFB54 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = example_Prefix.pch;
|
||||
INFOPLIST_FILE = "example-Info.plist";
|
||||
PRODUCT_NAME = example;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
1D6058950D05DD3E006BFB54 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
COPY_PHASE_STRIP = YES;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = example_Prefix.pch;
|
||||
INFOPLIST_FILE = "example-Info.plist";
|
||||
PRODUCT_NAME = example;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
C01FCF4F08A954540054247B /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 307D28A1123043350040C0FA /* PhoneGapBuildSettings.xcconfig */;
|
||||
buildSettings = {
|
||||
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
GCC_C_LANGUAGE_STANDARD = c99;
|
||||
GCC_VERSION = com.apple.compilers.llvmgcc42;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 3.0;
|
||||
OTHER_LDFLAGS = (
|
||||
"-all_load",
|
||||
"-Obj-C",
|
||||
);
|
||||
PREBINDING = NO;
|
||||
SDKROOT = iphoneos;
|
||||
SKIP_INSTALL = NO;
|
||||
USER_HEADER_SEARCH_PATHS = "\"$(PHONEGAPLIB)/Classes/JSON\" \"$(PHONEGAPLIB)/Classes\"";
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
C01FCF5008A954540054247B /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 307D28A1123043350040C0FA /* PhoneGapBuildSettings.xcconfig */;
|
||||
buildSettings = {
|
||||
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
GCC_C_LANGUAGE_STANDARD = c99;
|
||||
GCC_VERSION = com.apple.compilers.llvmgcc42;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 3.0;
|
||||
OTHER_LDFLAGS = (
|
||||
"-all_load",
|
||||
"-Obj-C",
|
||||
);
|
||||
PREBINDING = NO;
|
||||
SDKROOT = iphoneos;
|
||||
SKIP_INSTALL = NO;
|
||||
USER_HEADER_SEARCH_PATHS = "\"$(PHONEGAPLIB)/Classes/JSON\" \"$(PHONEGAPLIB)/Classes\"";
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "example" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
1D6058940D05DD3E006BFB54 /* Debug */,
|
||||
1D6058950D05DD3E006BFB54 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
C01FCF4E08A954540054247B /* Build configuration list for PBXProject "example" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
C01FCF4F08A954540054247B /* Debug */,
|
||||
C01FCF5008A954540054247B /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
|
||||
}
|
||||
@@ -1,8 +0,0 @@
|
||||
//
|
||||
// Prefix header for all source files of the 'example' target in the 'example' project
|
||||
//
|
||||
|
||||
#ifdef __OBJC__
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <UIKit/UIKit.h>
|
||||
#endif
|
||||
BIN
iPhone/LocalNotification/example/images/header.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
31
iPhone/LocalNotification/example/index.html
Normal file
@@ -0,0 +1,31 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title></title>
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no;" />
|
||||
<meta charset="utf-8">
|
||||
<script type="text/javascript" charset="utf-8" src="phonegap-1.2.0.js"></script>
|
||||
|
||||
<!-- CORE JS FILES -->
|
||||
<script type="text/javascript" charset="utf-8" src="js/core/phonegap-1.2.0.js"></script>
|
||||
<script type="text/javascript" charset="utf-8" src="js/core/jQuery.js"></script>
|
||||
|
||||
<!-- PLUGINS -->
|
||||
<script type="text/javascript" charset="utf-8" src="js/plugins/LocalNotification.js"></script>
|
||||
|
||||
<!-- OUR INIT -->
|
||||
<script type="text/javascript" charset="utf-8" src="js/init.js"></script>
|
||||
|
||||
<!-- STYLE STUFF -->
|
||||
<link rel="stylesheet" href="css/style.css" />
|
||||
|
||||
</head>
|
||||
<body onload="app.bodyLoad()">
|
||||
<div id="header"></div>
|
||||
<div class="btn" onClick="notification.local_min();">localNotification + 60 seconds</div>
|
||||
<div class="btn" onClick="notification.local_timed(13,30);">localNotification</div>
|
||||
<div class="btn" onClick="notification.tomorrow(06,05,1);">localNotification tomorrow</div>
|
||||
<div class="btn" onClick="notification.clear();">clear all</div>
|
||||
</body>
|
||||
</html>
|
||||
4
iPhone/LocalNotification/example/js/core/jQuery.js
Normal file
4098
iPhone/LocalNotification/example/js/core/phonegap-1.2.0.js
Normal file
132
iPhone/LocalNotification/example/js/init.js
Normal file
@@ -0,0 +1,132 @@
|
||||
// JavaScript Document
|
||||
// PROJECT: Phonegap LocalNotifications
|
||||
// AUTHOR: Drew Dahlman ( www.drewdahlman.com )
|
||||
// DATE: 1.26.2012
|
||||
|
||||
/*
|
||||
NOTES:
|
||||
We will be creating LocalNotifications that can be set to fire while app is inactive,
|
||||
and create a callback for the JS to know when the app has come back from a notification.
|
||||
|
||||
One thing that is deceptive about the LocalNotifications plugin is that when it shows a notification
|
||||
has been created it shows it based on the timezone +0000 which can throw you off.
|
||||
|
||||
in the call for setting the notification we simply call notification.local_timed("13:00") - note that I supplied a string.
|
||||
|
||||
The ability to set repeating notifications has been added!
|
||||
- daily
|
||||
- weekly
|
||||
- monthly
|
||||
- yearly
|
||||
|
||||
|
||||
*/
|
||||
|
||||
|
||||
// NOTIFICATION CENTER
|
||||
/*
|
||||
I like to set up one object that's only job is to manage notifications
|
||||
*/
|
||||
var notification = {
|
||||
init:function(){
|
||||
|
||||
},
|
||||
|
||||
// This will fire after 60 seconds
|
||||
local_min:function(){
|
||||
var d = new Date();
|
||||
d = d.getTime() + 3*1000; //60 seconds from now
|
||||
d = new Date(d);
|
||||
plugins.localNotification.add({
|
||||
date: d,
|
||||
repeat:'daily',
|
||||
message: 'This just fired after a minute!',
|
||||
hasAction: true,
|
||||
badge: 1,
|
||||
id: '123',
|
||||
sound:'horn.caf',
|
||||
background:'app.background()',
|
||||
foreground:'app.running()'
|
||||
});
|
||||
},
|
||||
|
||||
// This will fire based on the time provided.
|
||||
// Something to note is that the iPhone goes off of 24hr time
|
||||
// it defaults to no timezone adjustment so +0000 !IMPORTANT
|
||||
local_timed:function(hh,mm){
|
||||
// the example time we provide is 13:00
|
||||
// This means the alarm will go off at 1pm +0000
|
||||
// how does this translate to your time? While the phone schedules 1pm +0000
|
||||
// it will still go off at your desired time base on your phones time.
|
||||
|
||||
console.log(hh+" "+mm);
|
||||
// Now lets make a new date
|
||||
var d = new Date();
|
||||
d = d.setSeconds(00);
|
||||
d = new Date(d);
|
||||
d = d.setMinutes(mm);
|
||||
d = new Date(d);
|
||||
d = d.setHours(hh);
|
||||
d = new Date(d);
|
||||
plugins.localNotification.add({
|
||||
date: d,
|
||||
repeat:'daily',
|
||||
message: 'This went off just as expected!',
|
||||
hasAction: true,
|
||||
badge: 1,
|
||||
id: '123',
|
||||
sound:'horn.caf',
|
||||
background:'app.background()',
|
||||
foreground:'app.running()'
|
||||
});
|
||||
},
|
||||
clear:function(){
|
||||
plugins.localNotification.cancelAll();
|
||||
},
|
||||
tomorrow:function(hh,mm,days){
|
||||
// Now lets make a new date
|
||||
var d = new Date();
|
||||
d = d.setSeconds(00);
|
||||
d = new Date(d);
|
||||
d = d.setMinutes(mm);
|
||||
d = new Date(d);
|
||||
d = d.setHours(hh);
|
||||
d = new Date(d);
|
||||
|
||||
// add a day
|
||||
d = d.setDate(d.getDate()+days);
|
||||
d = new Date(d);
|
||||
|
||||
plugins.localNotification.add({
|
||||
date: d,
|
||||
repeat:'daily',
|
||||
message: 'This went off just as expected!',
|
||||
hasAction: true,
|
||||
badge: 1,
|
||||
id: '123',
|
||||
sound:'horn.caf',
|
||||
background:'app.background()',
|
||||
foreground:'app.running()'
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// APP
|
||||
var app = {
|
||||
bodyLoad:function(){
|
||||
document.addEventListener("deviceready", app.deviceReady, false);
|
||||
},
|
||||
deviceReady:function(){
|
||||
app.init();
|
||||
},
|
||||
init:function(){
|
||||
|
||||
},
|
||||
background:function(){
|
||||
console.log("I was in the background but i'm back now!");
|
||||
},
|
||||
running:function(){
|
||||
console.log("I am currently running, what should I do?");
|
||||
}
|
||||
};
|
||||
@@ -1,10 +1,12 @@
|
||||
/**
|
||||
Phonegap LocalNotification Plugin
|
||||
Copyright (c) Greg Allen 2011
|
||||
Updates Drew Dahlman 2012
|
||||
|
||||
MIT Licensed
|
||||
|
||||
Usage:
|
||||
plugins.localNotification.add({ date: new Date(), message: 'This is a notification', badge: 1, id: 123 });
|
||||
plugins.localNotification.add({ date: new Date(), message: 'This is a notification', badge: 1, id: 123, sound:'sub.caf',background:'app.background()',foreground:'app.running()' });
|
||||
plugins.localNotification.cancel(123);
|
||||
plugins.localNotification.cancelAll();
|
||||
**/
|
||||
@@ -18,8 +20,12 @@ if (typeof PhoneGap !== "undefined") {
|
||||
message: '',
|
||||
hasAction: true,
|
||||
action: 'View',
|
||||
repeat: '',
|
||||
badge: 0,
|
||||
id: 0
|
||||
id: 0,
|
||||
sound:'',
|
||||
background:'',
|
||||
foreground:''
|
||||
};
|
||||
for (var key in defaults) {
|
||||
if (typeof options[key] !== "undefined")
|
||||
@@ -1,17 +0,0 @@
|
||||
//
|
||||
// main.m
|
||||
// example
|
||||
//
|
||||
// Created by Gregamel on 4/3/11.
|
||||
// Copyright Boeing 2011. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
|
||||
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
|
||||
int retVal = UIApplicationMain(argc, argv, nil, @"exampleAppDelegate");
|
||||
[pool release];
|
||||
return retVal;
|
||||
}
|
||||
@@ -1,56 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<!-- Change this if you want to allow scaling -->
|
||||
<meta name="viewport" content="width=default-width; user-scalable=no" />
|
||||
|
||||
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
|
||||
|
||||
<title>example</title>
|
||||
|
||||
<!-- iPad/iPhone specific css below, add after your main css >
|
||||
<link rel="stylesheet" media="only screen and (max-device-width: 1024px)" href="ipad.css" type="text/css" />
|
||||
<link rel="stylesheet" media="only screen and (max-device-width: 480px)" href="iphone.css" type="text/css" />
|
||||
-->
|
||||
<!-- If you application is targeting iOS BEFORE 4.0 you MUST put json2.js from http://www.JSON.org/json2.js into your www directory and include it here -->
|
||||
<script type="text/javascript" charset="utf-8" src="phonegap.0.9.4.min.js"></script>
|
||||
<script type="text/javascript" charset="utf-8" src="LocalNotification.js"></script>
|
||||
<script type="text/javascript" charset="utf-8">
|
||||
|
||||
|
||||
// If you want to prevent dragging, uncomment this section
|
||||
/*
|
||||
function preventBehavior(e)
|
||||
{
|
||||
e.preventDefault();
|
||||
};
|
||||
document.addEventListener("touchmove", preventBehavior, false);
|
||||
*/
|
||||
|
||||
function onBodyLoad()
|
||||
{
|
||||
document.addEventListener("deviceready",onDeviceReady,false);
|
||||
}
|
||||
|
||||
/* When this function is called, PhoneGap has been initialized and is ready to roll */
|
||||
function onDeviceReady()
|
||||
{
|
||||
var d = new Date();
|
||||
d = d.getTime() + 60*1000; //60 seconds from now
|
||||
d = new Date(d);
|
||||
plugins.localNotification.add({
|
||||
date: d,
|
||||
message: 'This is an alert message',
|
||||
hasAction: true,
|
||||
badge: 1,
|
||||
id: '123'
|
||||
});
|
||||
}
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body onload="onBodyLoad()">
|
||||
Notification will show in 1 minute<br/>
|
||||
Hit the home button so the notification will show
|
||||
</body>
|
||||
</html>
|
||||
16
iPhone/LocalNotification/LocalNotification.h → iPhone/LocalNotification/plugin/LocalNotification.h
Normal file → Executable file
@@ -1,18 +1,30 @@
|
||||
//
|
||||
// LocalNotification.h
|
||||
// Phonegap LocalNotification Plugin
|
||||
// Copyright (c) Greg Allen 2011
|
||||
// Copyright (c) Greg Allen 2011 & 2012 Drew Dahlman
|
||||
// MIT Licensed
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
|
||||
/* FOR PHONEGAP 1.4 < */
|
||||
#ifdef PHONEGAP_FRAMEWORK
|
||||
#import <PhoneGap/PGPlugin.h>
|
||||
#else
|
||||
#import "PGPlugin.h"
|
||||
#endif
|
||||
|
||||
/*
|
||||
UNCOMMENT FOR CORDOVA
|
||||
|
||||
#ifdef CORDOVA_FRAMEWORK
|
||||
#import <Cordova/CDVPlugin.h>
|
||||
#else
|
||||
#import "CDVPlugin.h"
|
||||
#endif
|
||||
|
||||
*/
|
||||
@interface LocalNotification : PGPlugin {
|
||||
|
||||
}
|
||||
- (void)addNotification:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options;
|
||||
- (void)cancelNotification:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options;
|
||||
56
iPhone/LocalNotification/plugin/LocalNotification.js
Executable file
@@ -0,0 +1,56 @@
|
||||
/**
|
||||
Phonegap LocalNotification Plugin
|
||||
Copyright (c) Greg Allen 2011
|
||||
Updates Drew Dahlman 2012
|
||||
|
||||
MIT Licensed
|
||||
|
||||
Usage:
|
||||
plugins.localNotification.add({ date: new Date(), message: 'This is a notification', badge: 1, id: 123, sound:'sub.caf',background:'app.background()',foreground:'app.running()' });
|
||||
plugins.localNotification.cancel(123);
|
||||
plugins.localNotification.cancelAll();
|
||||
**/
|
||||
if (typeof PhoneGap !== "undefined") {
|
||||
var LocalNotification = function() {
|
||||
};
|
||||
|
||||
LocalNotification.prototype.add = function(options) {
|
||||
var defaults = {
|
||||
date: false,
|
||||
message: '',
|
||||
hasAction: true,
|
||||
action: 'View',
|
||||
repeat: '',
|
||||
badge: 0,
|
||||
id: 0,
|
||||
sound:'',
|
||||
background:'',
|
||||
foreground:''
|
||||
};
|
||||
for (var key in defaults) {
|
||||
if (typeof options[key] !== "undefined")
|
||||
defaults[key] = options[key];
|
||||
}
|
||||
if (typeof defaults.date == 'object') {
|
||||
defaults.date = Math.round(defaults.date.getTime()/1000);
|
||||
}
|
||||
PhoneGap.exec("LocalNotification.addNotification", defaults);
|
||||
};
|
||||
|
||||
LocalNotification.prototype.cancel = function(id) {
|
||||
PhoneGap.exec("LocalNotification.cancelNotification", id);
|
||||
};
|
||||
|
||||
LocalNotification.prototype.cancelAll = function(id) {
|
||||
PhoneGap.exec("LocalNotification.cancelAllNotifications");
|
||||
};
|
||||
|
||||
PhoneGap.addConstructor(function()
|
||||
{
|
||||
if(!window.plugins)
|
||||
{
|
||||
window.plugins = {};
|
||||
}
|
||||
window.plugins.localNotification = new LocalNotification();
|
||||
});
|
||||
}
|
||||
35
iPhone/LocalNotification/LocalNotification.m → iPhone/LocalNotification/plugin/LocalNotification.m
Normal file → Executable file
@@ -1,7 +1,7 @@
|
||||
//
|
||||
// LocalNotification.m
|
||||
// Phonegap LocalNotification Plugin
|
||||
// Copyright (c) Greg Allen 2011
|
||||
// Copyright (c) Greg Allen 2011 & 2012 Drew Dahlman
|
||||
// MIT Licensed
|
||||
|
||||
#import "LocalNotification.h"
|
||||
@@ -9,10 +9,22 @@
|
||||
|
||||
@implementation LocalNotification
|
||||
- (void)addNotification:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options {
|
||||
NSMutableDictionary *repeatDict = [[NSMutableDictionary alloc] init];
|
||||
[repeatDict setObject:[NSNumber numberWithInt:NSDayCalendarUnit] forKey:@"daily"];
|
||||
[repeatDict setObject:[NSNumber numberWithInt:NSWeekCalendarUnit] forKey:@"weekly"];
|
||||
[repeatDict setObject:[NSNumber numberWithInt:NSMonthCalendarUnit] forKey:@"monthly"];
|
||||
[repeatDict setObject:[NSNumber numberWithInt:NSYearCalendarUnit] forKey:@"yearly"];
|
||||
[repeatDict setObject:[NSNumber numberWithInt:0] forKey:@""];
|
||||
|
||||
// notif settings
|
||||
double timestamp = [[options objectForKey:@"date"] doubleValue];
|
||||
NSString *msg = [options objectForKey:@"message"];
|
||||
NSString *action = [options objectForKey:@"action"];
|
||||
NSString *notificationId = [options objectForKey:@"id"];
|
||||
NSString *sound = [options objectForKey:@"sound"];
|
||||
NSString *bg = [options objectForKey:@"background"];
|
||||
NSString *fg = [options objectForKey:@"foreground"];
|
||||
NSString *repeat = [options objectForKey:@"repeat"];
|
||||
NSInteger badge = [[options objectForKey:@"badge"] intValue];
|
||||
bool hasAction = ([[options objectForKey:@"hasAction"] intValue] == 1)?YES:NO;
|
||||
|
||||
@@ -22,19 +34,21 @@
|
||||
notif.fireDate = date;
|
||||
notif.hasAction = hasAction;
|
||||
notif.timeZone = [NSTimeZone defaultTimeZone];
|
||||
notif.repeatInterval = [[repeatDict objectForKey: repeat] intValue];
|
||||
|
||||
notif.alertBody = ([msg isEqualToString:@""])?nil:msg;
|
||||
notif.alertAction = action;
|
||||
notif.soundName = UILocalNotificationDefaultSoundName;
|
||||
notif.applicationIconBadgeNumber = badge;
|
||||
|
||||
notif.soundName = sound;
|
||||
notif.applicationIconBadgeNumber = badge;
|
||||
|
||||
NSDictionary *userDict = [NSDictionary dictionaryWithObject:notificationId
|
||||
forKey:@"notificationId"];
|
||||
notif.userInfo = userDict;
|
||||
NSDictionary *userDict = [NSDictionary dictionaryWithObjectsAndKeys:notificationId,@"notificationId",bg,@"background",fg,@"forground",nil];
|
||||
|
||||
notif.userInfo = userDict;
|
||||
|
||||
[[UIApplication sharedApplication] scheduleLocalNotification:notif];
|
||||
NSLog(@"Notification Set: %@ (ID: %@, Badge: %i)", date, notificationId, badge);
|
||||
[notif release];
|
||||
NSLog(@"Notification Set: %@ (ID: %@, Badge: %i, sound: %@,callback: %@)", date, notificationId, badge, sound,bg);
|
||||
//[notif release];
|
||||
}
|
||||
|
||||
- (void)cancelNotification:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options {
|
||||
@@ -53,4 +67,7 @@
|
||||
NSLog(@"All Notifications cancelled");
|
||||
[[UIApplication sharedApplication] cancelAllLocalNotifications];
|
||||
}
|
||||
@end
|
||||
|
||||
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,516 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 46;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
3A9A4F5414D2100C00D60E11 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A9A4F5314D2100C00D60E11 /* Foundation.framework */; };
|
||||
3A9A4F5614D2100C00D60E11 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A9A4F5514D2100C00D60E11 /* UIKit.framework */; };
|
||||
3A9A4F5814D2100C00D60E11 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A9A4F5714D2100C00D60E11 /* CoreGraphics.framework */; };
|
||||
3A9A4F5A14D2100C00D60E11 /* AddressBook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A9A4F5914D2100C00D60E11 /* AddressBook.framework */; };
|
||||
3A9A4F5C14D2100C00D60E11 /* AddressBookUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A9A4F5B14D2100C00D60E11 /* AddressBookUI.framework */; };
|
||||
3A9A4F5E14D2100C00D60E11 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A9A4F5D14D2100C00D60E11 /* AudioToolbox.framework */; };
|
||||
3A9A4F6014D2100C00D60E11 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A9A4F5F14D2100C00D60E11 /* AVFoundation.framework */; };
|
||||
3A9A4F6214D2100C00D60E11 /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A9A4F6114D2100C00D60E11 /* CoreLocation.framework */; };
|
||||
3A9A4F6414D2100C00D60E11 /* MediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A9A4F6314D2100C00D60E11 /* MediaPlayer.framework */; };
|
||||
3A9A4F6614D2100C00D60E11 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A9A4F6514D2100C00D60E11 /* QuartzCore.framework */; };
|
||||
3A9A4F6814D2100C00D60E11 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A9A4F6714D2100C00D60E11 /* SystemConfiguration.framework */; };
|
||||
3A9A4F6A14D2100C00D60E11 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A9A4F6914D2100C00D60E11 /* MobileCoreServices.framework */; };
|
||||
3A9A4F6C14D2100C00D60E11 /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A9A4F6B14D2100C00D60E11 /* CoreMedia.framework */; };
|
||||
3A9A4F7214D2100C00D60E11 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 3A9A4F7014D2100C00D60E11 /* InfoPlist.strings */; };
|
||||
3A9A4F7414D2100C00D60E11 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A9A4F7314D2100C00D60E11 /* main.m */; };
|
||||
3A9A4F7714D2100C00D60E11 /* PhoneGap.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3A9A4F7614D2100C00D60E11 /* PhoneGap.framework */; };
|
||||
3A9A4F7C14D2100C00D60E11 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 3A9A4F7A14D2100C00D60E11 /* Localizable.strings */; };
|
||||
3A9A4F8014D2100C00D60E11 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 3A9A4F7E14D2100C00D60E11 /* Localizable.strings */; };
|
||||
3A9A4F8314D2100C00D60E11 /* icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 3A9A4F8214D2100C00D60E11 /* icon.png */; };
|
||||
3A9A4F8514D2100C00D60E11 /* icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3A9A4F8414D2100C00D60E11 /* icon@2x.png */; };
|
||||
3A9A4F8714D2100C00D60E11 /* icon-72.png in Resources */ = {isa = PBXBuildFile; fileRef = 3A9A4F8614D2100C00D60E11 /* icon-72.png */; };
|
||||
3A9A4F8A14D2100C00D60E11 /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = 3A9A4F8914D2100C00D60E11 /* Default.png */; };
|
||||
3A9A4F8C14D2100C00D60E11 /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3A9A4F8B14D2100C00D60E11 /* Default@2x.png */; };
|
||||
3A9A4F8E14D2100C00D60E11 /* Capture.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 3A9A4F8D14D2100C00D60E11 /* Capture.bundle */; };
|
||||
3A9A4F9014D2100C00D60E11 /* PhoneGap.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3A9A4F8F14D2100C00D60E11 /* PhoneGap.plist */; };
|
||||
3A9A4F9414D2100D00D60E11 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A9A4F9314D2100D00D60E11 /* AppDelegate.m */; };
|
||||
3A9A4FA214D2181000D60E11 /* www in Resources */ = {isa = PBXBuildFile; fileRef = 3A9A4FA114D2181000D60E11 /* www */; };
|
||||
3A9A4FA514D21DB900D60E11 /* LocalNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A9A4FA414D21DB900D60E11 /* LocalNotification.m */; };
|
||||
3ACDF95F14D323340043991E /* sub.caf in Resources */ = {isa = PBXBuildFile; fileRef = 3ACDF95E14D323340043991E /* sub.caf */; };
|
||||
3ACDF96414D32CE30043991E /* horn.caf in Resources */ = {isa = PBXBuildFile; fileRef = 3ACDF96014D32CE30043991E /* horn.caf */; };
|
||||
3ACDF96514D32CE30043991E /* steam.caf in Resources */ = {isa = PBXBuildFile; fileRef = 3ACDF96114D32CE30043991E /* steam.caf */; };
|
||||
3ACDF96614D32CE30043991E /* triangle.caf in Resources */ = {isa = PBXBuildFile; fileRef = 3ACDF96214D32CE30043991E /* triangle.caf */; };
|
||||
3ACDF96714D32CE30043991E /* whistle.caf in Resources */ = {isa = PBXBuildFile; fileRef = 3ACDF96314D32CE30043991E /* whistle.caf */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
3A9A4F4F14D2100C00D60E11 /* localNotifications.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = localNotifications.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
3A9A4F5314D2100C00D60E11 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
|
||||
3A9A4F5514D2100C00D60E11 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
|
||||
3A9A4F5714D2100C00D60E11 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
|
||||
3A9A4F5914D2100C00D60E11 /* AddressBook.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AddressBook.framework; path = System/Library/Frameworks/AddressBook.framework; sourceTree = SDKROOT; };
|
||||
3A9A4F5B14D2100C00D60E11 /* AddressBookUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AddressBookUI.framework; path = System/Library/Frameworks/AddressBookUI.framework; sourceTree = SDKROOT; };
|
||||
3A9A4F5D14D2100C00D60E11 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
|
||||
3A9A4F5F14D2100C00D60E11 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
|
||||
3A9A4F6114D2100C00D60E11 /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = System/Library/Frameworks/CoreLocation.framework; sourceTree = SDKROOT; };
|
||||
3A9A4F6314D2100C00D60E11 /* MediaPlayer.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MediaPlayer.framework; path = System/Library/Frameworks/MediaPlayer.framework; sourceTree = SDKROOT; };
|
||||
3A9A4F6514D2100C00D60E11 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
|
||||
3A9A4F6714D2100C00D60E11 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; };
|
||||
3A9A4F6914D2100C00D60E11 /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = System/Library/Frameworks/MobileCoreServices.framework; sourceTree = SDKROOT; };
|
||||
3A9A4F6B14D2100C00D60E11 /* CoreMedia.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMedia.framework; path = System/Library/Frameworks/CoreMedia.framework; sourceTree = SDKROOT; };
|
||||
3A9A4F6F14D2100C00D60E11 /* localNotifications-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "localNotifications-Info.plist"; sourceTree = "<group>"; };
|
||||
3A9A4F7114D2100C00D60E11 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
|
||||
3A9A4F7314D2100C00D60E11 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
3A9A4F7514D2100C00D60E11 /* localNotifications-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "localNotifications-Prefix.pch"; sourceTree = "<group>"; };
|
||||
3A9A4F7614D2100C00D60E11 /* PhoneGap.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = PhoneGap.framework; path = /Users/Shared/PhoneGap/Frameworks/PhoneGap.framework; sourceTree = "<absolute>"; };
|
||||
3A9A4F7B14D2100C00D60E11 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = Resources/en.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||
3A9A4F7F14D2100C00D60E11 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = es; path = Resources/es.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||
3A9A4F8214D2100C00D60E11 /* icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = icon.png; path = Resources/icons/icon.png; sourceTree = "<group>"; };
|
||||
3A9A4F8414D2100C00D60E11 /* icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "icon@2x.png"; path = "Resources/icons/icon@2x.png"; sourceTree = "<group>"; };
|
||||
3A9A4F8614D2100C00D60E11 /* icon-72.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "icon-72.png"; path = "Resources/icons/icon-72.png"; sourceTree = "<group>"; };
|
||||
3A9A4F8914D2100C00D60E11 /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Default.png; path = Resources/splash/Default.png; sourceTree = "<group>"; };
|
||||
3A9A4F8B14D2100C00D60E11 /* Default@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Default@2x.png"; path = "Resources/splash/Default@2x.png"; sourceTree = "<group>"; };
|
||||
3A9A4F8D14D2100C00D60E11 /* Capture.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; name = Capture.bundle; path = Resources/Capture.bundle; sourceTree = "<group>"; };
|
||||
3A9A4F8F14D2100C00D60E11 /* PhoneGap.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = PhoneGap.plist; sourceTree = "<group>"; };
|
||||
3A9A4F9214D2100D00D60E11 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = Classes/AppDelegate.h; sourceTree = "<group>"; };
|
||||
3A9A4F9314D2100D00D60E11 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = Classes/AppDelegate.m; sourceTree = "<group>"; };
|
||||
3A9A4F9614D2100D00D60E11 /* README */ = {isa = PBXFileReference; lastKnownFileType = text; name = README; path = Plugins/README; sourceTree = "<group>"; };
|
||||
3A9A4FA114D2181000D60E11 /* www */ = {isa = PBXFileReference; lastKnownFileType = folder; path = www; sourceTree = "<group>"; };
|
||||
3A9A4FA314D21DB900D60E11 /* LocalNotification.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LocalNotification.h; sourceTree = "<group>"; };
|
||||
3A9A4FA414D21DB900D60E11 /* LocalNotification.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LocalNotification.m; sourceTree = "<group>"; };
|
||||
3ACDF95E14D323340043991E /* sub.caf */ = {isa = PBXFileReference; lastKnownFileType = file; name = sub.caf; path = Resources/Capture.bundle/sub.caf; sourceTree = "<group>"; };
|
||||
3ACDF96014D32CE30043991E /* horn.caf */ = {isa = PBXFileReference; lastKnownFileType = file; path = horn.caf; sourceTree = "<group>"; };
|
||||
3ACDF96114D32CE30043991E /* steam.caf */ = {isa = PBXFileReference; lastKnownFileType = file; path = steam.caf; sourceTree = "<group>"; };
|
||||
3ACDF96214D32CE30043991E /* triangle.caf */ = {isa = PBXFileReference; lastKnownFileType = file; path = triangle.caf; sourceTree = "<group>"; };
|
||||
3ACDF96314D32CE30043991E /* whistle.caf */ = {isa = PBXFileReference; lastKnownFileType = file; path = whistle.caf; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
3A9A4F4914D2100C00D60E11 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
3A9A4F5414D2100C00D60E11 /* Foundation.framework in Frameworks */,
|
||||
3A9A4F5614D2100C00D60E11 /* UIKit.framework in Frameworks */,
|
||||
3A9A4F5814D2100C00D60E11 /* CoreGraphics.framework in Frameworks */,
|
||||
3A9A4F5A14D2100C00D60E11 /* AddressBook.framework in Frameworks */,
|
||||
3A9A4F5C14D2100C00D60E11 /* AddressBookUI.framework in Frameworks */,
|
||||
3A9A4F5E14D2100C00D60E11 /* AudioToolbox.framework in Frameworks */,
|
||||
3A9A4F6014D2100C00D60E11 /* AVFoundation.framework in Frameworks */,
|
||||
3A9A4F6214D2100C00D60E11 /* CoreLocation.framework in Frameworks */,
|
||||
3A9A4F6414D2100C00D60E11 /* MediaPlayer.framework in Frameworks */,
|
||||
3A9A4F6614D2100C00D60E11 /* QuartzCore.framework in Frameworks */,
|
||||
3A9A4F6814D2100C00D60E11 /* SystemConfiguration.framework in Frameworks */,
|
||||
3A9A4F6A14D2100C00D60E11 /* MobileCoreServices.framework in Frameworks */,
|
||||
3A9A4F6C14D2100C00D60E11 /* CoreMedia.framework in Frameworks */,
|
||||
3A9A4F7714D2100C00D60E11 /* PhoneGap.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
3A9A4F4C14D2100C00D60E11 /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
3A9A4F4114D2100C00D60E11 = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3A9A4F6D14D2100C00D60E11 /* localNotifications */,
|
||||
3A9A4F5214D2100C00D60E11 /* Frameworks */,
|
||||
3A9A4F5014D2100C00D60E11 /* Products */,
|
||||
);
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
3A9A4F5014D2100C00D60E11 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3A9A4F4F14D2100C00D60E11 /* localNotifications.app */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
3A9A4F5214D2100C00D60E11 /* Frameworks */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3A9A4F5314D2100C00D60E11 /* Foundation.framework */,
|
||||
3A9A4F5514D2100C00D60E11 /* UIKit.framework */,
|
||||
3A9A4F5714D2100C00D60E11 /* CoreGraphics.framework */,
|
||||
3A9A4F5914D2100C00D60E11 /* AddressBook.framework */,
|
||||
3A9A4F5B14D2100C00D60E11 /* AddressBookUI.framework */,
|
||||
3A9A4F5D14D2100C00D60E11 /* AudioToolbox.framework */,
|
||||
3A9A4F5F14D2100C00D60E11 /* AVFoundation.framework */,
|
||||
3A9A4F6114D2100C00D60E11 /* CoreLocation.framework */,
|
||||
3A9A4F6314D2100C00D60E11 /* MediaPlayer.framework */,
|
||||
3A9A4F6514D2100C00D60E11 /* QuartzCore.framework */,
|
||||
3A9A4F6714D2100C00D60E11 /* SystemConfiguration.framework */,
|
||||
3A9A4F6914D2100C00D60E11 /* MobileCoreServices.framework */,
|
||||
3A9A4F6B14D2100C00D60E11 /* CoreMedia.framework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
3A9A4F6D14D2100C00D60E11 /* localNotifications */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3A9A4FA114D2181000D60E11 /* www */,
|
||||
3A9A4F7614D2100C00D60E11 /* PhoneGap.framework */,
|
||||
3A9A4F7814D2100C00D60E11 /* Resources */,
|
||||
3A9A4F9114D2100C00D60E11 /* Classes */,
|
||||
3A9A4F9514D2100D00D60E11 /* Plugins */,
|
||||
3A9A4F6E14D2100C00D60E11 /* Supporting Files */,
|
||||
);
|
||||
path = localNotifications;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
3A9A4F6E14D2100C00D60E11 /* Supporting Files */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3A9A4F6F14D2100C00D60E11 /* localNotifications-Info.plist */,
|
||||
3A9A4F7014D2100C00D60E11 /* InfoPlist.strings */,
|
||||
3A9A4F7314D2100C00D60E11 /* main.m */,
|
||||
3A9A4F7514D2100C00D60E11 /* localNotifications-Prefix.pch */,
|
||||
3A9A4F8F14D2100C00D60E11 /* PhoneGap.plist */,
|
||||
);
|
||||
name = "Supporting Files";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
3A9A4F7814D2100C00D60E11 /* Resources */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3ACDF96014D32CE30043991E /* horn.caf */,
|
||||
3ACDF96114D32CE30043991E /* steam.caf */,
|
||||
3ACDF96214D32CE30043991E /* triangle.caf */,
|
||||
3ACDF96314D32CE30043991E /* whistle.caf */,
|
||||
3ACDF95E14D323340043991E /* sub.caf */,
|
||||
3A9A4F8D14D2100C00D60E11 /* Capture.bundle */,
|
||||
3A9A4F7914D2100C00D60E11 /* en.lproj */,
|
||||
3A9A4F7D14D2100C00D60E11 /* es.lproj */,
|
||||
3A9A4F8114D2100C00D60E11 /* icons */,
|
||||
3A9A4F8814D2100C00D60E11 /* splash */,
|
||||
);
|
||||
name = Resources;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
3A9A4F7914D2100C00D60E11 /* en.lproj */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3A9A4F7A14D2100C00D60E11 /* Localizable.strings */,
|
||||
);
|
||||
name = en.lproj;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
3A9A4F7D14D2100C00D60E11 /* es.lproj */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3A9A4F7E14D2100C00D60E11 /* Localizable.strings */,
|
||||
);
|
||||
name = es.lproj;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
3A9A4F8114D2100C00D60E11 /* icons */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3A9A4F8214D2100C00D60E11 /* icon.png */,
|
||||
3A9A4F8414D2100C00D60E11 /* icon@2x.png */,
|
||||
3A9A4F8614D2100C00D60E11 /* icon-72.png */,
|
||||
);
|
||||
name = icons;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
3A9A4F8814D2100C00D60E11 /* splash */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3A9A4F8914D2100C00D60E11 /* Default.png */,
|
||||
3A9A4F8B14D2100C00D60E11 /* Default@2x.png */,
|
||||
);
|
||||
name = splash;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
3A9A4F9114D2100C00D60E11 /* Classes */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3A9A4F9214D2100D00D60E11 /* AppDelegate.h */,
|
||||
3A9A4F9314D2100D00D60E11 /* AppDelegate.m */,
|
||||
);
|
||||
name = Classes;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
3A9A4F9514D2100D00D60E11 /* Plugins */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
3A9A4FA314D21DB900D60E11 /* LocalNotification.h */,
|
||||
3A9A4FA414D21DB900D60E11 /* LocalNotification.m */,
|
||||
3A9A4F9614D2100D00D60E11 /* README */,
|
||||
);
|
||||
name = Plugins;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
3A9A4F4E14D2100C00D60E11 /* localNotifications */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 3A9A4F9914D2100D00D60E11 /* Build configuration list for PBXNativeTarget "localNotifications" */;
|
||||
buildPhases = (
|
||||
3A9A4F4814D2100C00D60E11 /* Sources */,
|
||||
3A9A4F4914D2100C00D60E11 /* Frameworks */,
|
||||
3A9A4F4A14D2100C00D60E11 /* Resources */,
|
||||
3A9A4F4B14D2100C00D60E11 /* Sources */,
|
||||
3A9A4F4C14D2100C00D60E11 /* Frameworks */,
|
||||
3A9A4F4D14D2100C00D60E11 /* ShellScript */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = localNotifications;
|
||||
productName = localNotifications;
|
||||
productReference = 3A9A4F4F14D2100C00D60E11 /* localNotifications.app */;
|
||||
productType = "com.apple.product-type.application";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
3A9A4F4314D2100C00D60E11 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 0420;
|
||||
};
|
||||
buildConfigurationList = 3A9A4F4614D2100C00D60E11 /* Build configuration list for PBXProject "localNotifications" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
developmentRegion = English;
|
||||
hasScannedForEncodings = 0;
|
||||
knownRegions = (
|
||||
en,
|
||||
es,
|
||||
);
|
||||
mainGroup = 3A9A4F4114D2100C00D60E11;
|
||||
productRefGroup = 3A9A4F5014D2100C00D60E11 /* Products */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
3A9A4F4E14D2100C00D60E11 /* localNotifications */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXResourcesBuildPhase section */
|
||||
3A9A4F4A14D2100C00D60E11 /* Resources */ = {
|
||||
isa = PBXResourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
3A9A4F7214D2100C00D60E11 /* InfoPlist.strings in Resources */,
|
||||
3A9A4F7C14D2100C00D60E11 /* Localizable.strings in Resources */,
|
||||
3A9A4F8014D2100C00D60E11 /* Localizable.strings in Resources */,
|
||||
3A9A4F8314D2100C00D60E11 /* icon.png in Resources */,
|
||||
3A9A4F8514D2100C00D60E11 /* icon@2x.png in Resources */,
|
||||
3A9A4F8714D2100C00D60E11 /* icon-72.png in Resources */,
|
||||
3A9A4F8A14D2100C00D60E11 /* Default.png in Resources */,
|
||||
3A9A4F8C14D2100C00D60E11 /* Default@2x.png in Resources */,
|
||||
3A9A4F8E14D2100C00D60E11 /* Capture.bundle in Resources */,
|
||||
3A9A4F9014D2100C00D60E11 /* PhoneGap.plist in Resources */,
|
||||
3A9A4FA214D2181000D60E11 /* www in Resources */,
|
||||
3ACDF95F14D323340043991E /* sub.caf in Resources */,
|
||||
3ACDF96414D32CE30043991E /* horn.caf in Resources */,
|
||||
3ACDF96514D32CE30043991E /* steam.caf in Resources */,
|
||||
3ACDF96614D32CE30043991E /* triangle.caf in Resources */,
|
||||
3ACDF96714D32CE30043991E /* whistle.caf in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXShellScriptBuildPhase section */
|
||||
3A9A4F4D14D2100C00D60E11 /* ShellScript */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/bash;
|
||||
shellScript = "\n\t\t\t\t\t\t\t\tif [ ! -d \"$PROJECT_DIR/www\" ] ; then\n\t\t\t\t\t\t\t\t\tcp -R /Users/Shared/PhoneGap/Frameworks/PhoneGap.framework/www \"$PROJECT_DIR\"\n\t\t\t\t\t\t\t\tfi\n\t\t\t\t\t\t\t\t# detect www folder reference in project, if missing, print warning\n\t\t\t\t\t\t\t\tgrep \"{isa = PBXFileReference; lastKnownFileType = folder; path = www; sourceTree = \\\"<group>\\\"; };\" \"$PROJECT_DIR/$PROJECT_NAME.xcodeproj/project.pbxproj\"\n\t\t\t\t\t\t\t\trc=$? \n\t\t\t\t\t\t\t\tif [ $rc != 0 ] ; then\n\t\t\t\t\t\t\t\techo -e \"warning: Missing - Add $PROJECT_DIR/www as a folder reference in your project. Just drag and drop the folder into your project, into the Project Navigator of Xcode 4. Make sure you select the second radio-button: 'Create folder references for any added folders' (which will create a blue folder)\" 1>&2\n\t\t\t\t\t\t\t\tfi\t\t\t\t\t\t\t";
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
3A9A4F4814D2100C00D60E11 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
3A9A4F7414D2100C00D60E11 /* main.m in Sources */,
|
||||
3A9A4F9414D2100D00D60E11 /* AppDelegate.m in Sources */,
|
||||
3A9A4FA514D21DB900D60E11 /* LocalNotification.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
3A9A4F4B14D2100C00D60E11 /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXVariantGroup section */
|
||||
3A9A4F7014D2100C00D60E11 /* InfoPlist.strings */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
3A9A4F7114D2100C00D60E11 /* en */,
|
||||
);
|
||||
name = InfoPlist.strings;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
3A9A4F7A14D2100C00D60E11 /* Localizable.strings */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
3A9A4F7B14D2100C00D60E11 /* en */,
|
||||
);
|
||||
name = Localizable.strings;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
3A9A4F7E14D2100C00D60E11 /* Localizable.strings */ = {
|
||||
isa = PBXVariantGroup;
|
||||
children = (
|
||||
3A9A4F7F14D2100C00D60E11 /* es */,
|
||||
);
|
||||
name = Localizable.strings;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXVariantGroup section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
3A9A4F9714D2100D00D60E11 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = NO;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_PREPROCESSOR_DEFINITIONS = (
|
||||
"DEBUG=1",
|
||||
"$(inherited)",
|
||||
);
|
||||
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
||||
GCC_VERSION = com.apple.compilers.llvmgcc42;
|
||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 3.0;
|
||||
SDKROOT = iphoneos;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
3A9A4F9814D2100D00D60E11 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
|
||||
CLANG_ENABLE_OBJC_ARC = YES;
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
COPY_PHASE_STRIP = YES;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
||||
GCC_VERSION = com.apple.compilers.llvmgcc42;
|
||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 3.0;
|
||||
SDKROOT = iphoneos;
|
||||
VALIDATE_PRODUCT = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
3A9A4F9A14D2100D00D60E11 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = YES;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
FRAMEWORK_SEARCH_PATHS = /Users/Shared/PhoneGap/Frameworks;
|
||||
GCC_DYNAMIC_NO_PIC = NO;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "localNotifications/localNotifications-Prefix.pch";
|
||||
GCC_PREPROCESSOR_DEFINITIONS = "PHONEGAP_FRAMEWORK=YES";
|
||||
INFOPLIST_FILE = "localNotifications/localNotifications-Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 5.0;
|
||||
OTHER_LDFLAGS = (
|
||||
"-weak_framework",
|
||||
UIKit,
|
||||
"-weak_framework",
|
||||
AVFoundation,
|
||||
"-weak_framework",
|
||||
CoreMedia,
|
||||
"-weak_library",
|
||||
/usr/lib/libSystem.B.dylib,
|
||||
);
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
WRAPPER_EXTENSION = app;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
3A9A4F9B14D2100D00D60E11 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = YES;
|
||||
COPY_PHASE_STRIP = YES;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
FRAMEWORK_SEARCH_PATHS = /Users/Shared/PhoneGap/Frameworks;
|
||||
GCC_PRECOMPILE_PREFIX_HEADER = YES;
|
||||
GCC_PREFIX_HEADER = "localNotifications/localNotifications-Prefix.pch";
|
||||
GCC_PREPROCESSOR_DEFINITIONS = "PHONEGAP_FRAMEWORK=YES";
|
||||
INFOPLIST_FILE = "localNotifications/localNotifications-Info.plist";
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 5.0;
|
||||
OTHER_LDFLAGS = (
|
||||
"-weak_framework",
|
||||
UIKit,
|
||||
"-weak_framework",
|
||||
AVFoundation,
|
||||
"-weak_framework",
|
||||
CoreMedia,
|
||||
"-weak_library",
|
||||
/usr/lib/libSystem.B.dylib,
|
||||
);
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
TARGETED_DEVICE_FAMILY = "1,2";
|
||||
VALIDATE_PRODUCT = YES;
|
||||
WRAPPER_EXTENSION = app;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
3A9A4F4614D2100C00D60E11 /* Build configuration list for PBXProject "localNotifications" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
3A9A4F9714D2100D00D60E11 /* Debug */,
|
||||
3A9A4F9814D2100D00D60E11 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
3A9A4F9914D2100D00D60E11 /* Build configuration list for PBXNativeTarget "localNotifications" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
3A9A4F9A14D2100D00D60E11 /* Debug */,
|
||||
3A9A4F9B14D2100D00D60E11 /* Release */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Release;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 3A9A4F4314D2100C00D60E11 /* Project object */;
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Workspace
|
||||
version = "1.0">
|
||||
<FileRef
|
||||
location = "self:localNotifications.xcodeproj">
|
||||
</FileRef>
|
||||
</Workspace>
|
||||
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Bucket
|
||||
type = "1"
|
||||
version = "1.0">
|
||||
<FileBreakpoints>
|
||||
<FileBreakpoint
|
||||
shouldBeEnabled = "Yes"
|
||||
ignoreCount = "0"
|
||||
continueAfterRunningActions = "No"
|
||||
isPathRelative = "1"
|
||||
filePath = "localNotifications/Classes/AppDelegate.m"
|
||||
timestampString = "349405156.590141"
|
||||
startingColumnNumber = "9223372036854775807"
|
||||
endingColumnNumber = "9223372036854775807"
|
||||
startingLineNumber = "109"
|
||||
endingLineNumber = "109"
|
||||
landmarkName = "-dealloc"
|
||||
landmarkType = "5">
|
||||
</FileBreakpoint>
|
||||
</FileBreakpoints>
|
||||
</Bucket>
|
||||
@@ -0,0 +1,84 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Scheme
|
||||
version = "1.3">
|
||||
<BuildAction
|
||||
parallelizeBuildables = "YES"
|
||||
buildImplicitDependencies = "YES">
|
||||
<BuildActionEntries>
|
||||
<BuildActionEntry
|
||||
buildForTesting = "YES"
|
||||
buildForRunning = "YES"
|
||||
buildForProfiling = "YES"
|
||||
buildForArchiving = "YES"
|
||||
buildForAnalyzing = "YES">
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "3A9A4F4E14D2100C00D60E11"
|
||||
BuildableName = "localNotifications.app"
|
||||
BlueprintName = "localNotifications"
|
||||
ReferencedContainer = "container:localNotifications.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildActionEntry>
|
||||
</BuildActionEntries>
|
||||
</BuildAction>
|
||||
<TestAction
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.GDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB"
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
buildConfiguration = "Debug">
|
||||
<Testables>
|
||||
</Testables>
|
||||
<MacroExpansion>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "3A9A4F4E14D2100C00D60E11"
|
||||
BuildableName = "localNotifications.app"
|
||||
BlueprintName = "localNotifications"
|
||||
ReferencedContainer = "container:localNotifications.xcodeproj">
|
||||
</BuildableReference>
|
||||
</MacroExpansion>
|
||||
</TestAction>
|
||||
<LaunchAction
|
||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.GDB"
|
||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.GDB"
|
||||
launchStyle = "0"
|
||||
useCustomWorkingDirectory = "NO"
|
||||
buildConfiguration = "Debug"
|
||||
debugDocumentVersioning = "YES"
|
||||
allowLocationSimulation = "YES">
|
||||
<BuildableProductRunnable>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "3A9A4F4E14D2100C00D60E11"
|
||||
BuildableName = "localNotifications.app"
|
||||
BlueprintName = "localNotifications"
|
||||
ReferencedContainer = "container:localNotifications.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
<AdditionalOptions>
|
||||
</AdditionalOptions>
|
||||
</LaunchAction>
|
||||
<ProfileAction
|
||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||
savedToolIdentifier = ""
|
||||
useCustomWorkingDirectory = "NO"
|
||||
buildConfiguration = "Release"
|
||||
debugDocumentVersioning = "YES">
|
||||
<BuildableProductRunnable>
|
||||
<BuildableReference
|
||||
BuildableIdentifier = "primary"
|
||||
BlueprintIdentifier = "3A9A4F4E14D2100C00D60E11"
|
||||
BuildableName = "localNotifications.app"
|
||||
BlueprintName = "localNotifications"
|
||||
ReferencedContainer = "container:localNotifications.xcodeproj">
|
||||
</BuildableReference>
|
||||
</BuildableProductRunnable>
|
||||
</ProfileAction>
|
||||
<AnalyzeAction
|
||||
buildConfiguration = "Debug">
|
||||
</AnalyzeAction>
|
||||
<ArchiveAction
|
||||
buildConfiguration = "Release"
|
||||
revealArchiveInOrganizer = "YES">
|
||||
</ArchiveAction>
|
||||
</Scheme>
|
||||
@@ -0,0 +1,22 @@
|
||||
<?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>localNotifications.xcscheme</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>SuppressBuildableAutocreation</key>
|
||||
<dict>
|
||||
<key>3A9A4F4E14D2100C00D60E11</key>
|
||||
<dict>
|
||||
<key>primary</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -0,0 +1,29 @@
|
||||
//
|
||||
// AppDelegate.h
|
||||
// localNotifications
|
||||
//
|
||||
// Created by Andrew Dahlman on 1/26/12.
|
||||
// Copyright __MyCompanyName__ 2012. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
#ifdef PHONEGAP_FRAMEWORK
|
||||
#import <PhoneGap/PhoneGapDelegate.h>
|
||||
#else
|
||||
#import "PhoneGapDelegate.h"
|
||||
#endif
|
||||
|
||||
@interface AppDelegate : PhoneGapDelegate {
|
||||
|
||||
NSString* invokeString;
|
||||
}
|
||||
|
||||
// invoke string is passed to your app on launch, this is only valid if you
|
||||
// edit localNotifications.plist to add a protocol
|
||||
// a simple tutorial can be found here :
|
||||
// http://iphonedevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html
|
||||
|
||||
@property (copy) NSString* invokeString;
|
||||
|
||||
@end
|
||||
|
||||
@@ -0,0 +1,150 @@
|
||||
//
|
||||
// AppDelegate.m
|
||||
// localNotifications
|
||||
//
|
||||
// Created by Andrew Dahlman on 1/26/12.
|
||||
// Copyright __MyCompanyName__ 2012. All rights reserved.
|
||||
//
|
||||
|
||||
#import "AppDelegate.h"
|
||||
#ifdef PHONEGAP_FRAMEWORK
|
||||
#import <PhoneGap/PhoneGapViewController.h>
|
||||
#else
|
||||
#import "PhoneGapViewController.h"
|
||||
#endif
|
||||
|
||||
@implementation AppDelegate
|
||||
|
||||
@synthesize invokeString;
|
||||
|
||||
- (id) init
|
||||
{
|
||||
/** If you need to do any extra app-specific initialization, you can do it here
|
||||
* -jm
|
||||
**/
|
||||
return [super init];
|
||||
}
|
||||
|
||||
/**
|
||||
* This is main kick off after the app inits, the views and Settings are setup here. (preferred - iOS4 and up)
|
||||
*/
|
||||
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
|
||||
{
|
||||
|
||||
/*NSArray *keyArray = [launchOptions allKeys];
|
||||
if ([launchOptions objectForKey:[keyArray objectAtIndex:0]]!=nil)
|
||||
{
|
||||
NSURL *url = [launchOptions objectForKey:[keyArray objectAtIndex:0]];
|
||||
self.invokeString = [url absoluteString];
|
||||
NSLog(@"localNotifications launchOptions = %@",url);
|
||||
}*/
|
||||
|
||||
return [super application:application didFinishLaunchingWithOptions:launchOptions];
|
||||
}
|
||||
|
||||
// this happens while we are running ( in the background, or from within our own app )
|
||||
// only valid if localNotifications.plist specifies a protocol to handle
|
||||
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
|
||||
{
|
||||
// must call super so all plugins will get the notification, and their handlers will be called
|
||||
// super also calls into javascript global function 'handleOpenURL'
|
||||
return [super application:application handleOpenURL:url];
|
||||
}
|
||||
|
||||
-(id) getCommandInstance:(NSString*)className
|
||||
{
|
||||
/** You can catch your own commands here, if you wanted to extend the gap: protocol, or add your
|
||||
* own app specific protocol to it. -jm
|
||||
**/
|
||||
return [super getCommandInstance:className];
|
||||
}
|
||||
|
||||
/**
|
||||
Called when the webview finishes loading. This stops the activity view and closes the imageview
|
||||
*/
|
||||
- (void)webViewDidFinishLoad:(UIWebView *)theWebView
|
||||
{
|
||||
// only valid if localNotifications.plist specifies a protocol to handle
|
||||
if(self.invokeString)
|
||||
{
|
||||
// this is passed before the deviceready event is fired, so you can access it in js when you receive deviceready
|
||||
NSString* jsString = [NSString stringWithFormat:@"var invokeString = \"%@\";", self.invokeString];
|
||||
[theWebView stringByEvaluatingJavaScriptFromString:jsString];
|
||||
}
|
||||
return [ super webViewDidFinishLoad:theWebView ];
|
||||
}
|
||||
|
||||
- (void)webViewDidStartLoad:(UIWebView *)theWebView
|
||||
{
|
||||
return [ super webViewDidStartLoad:theWebView ];
|
||||
}
|
||||
|
||||
/**
|
||||
* Fail Loading With Error
|
||||
* Error - If the webpage failed to load display an error with the reason.
|
||||
*/
|
||||
- (void)webView:(UIWebView *)theWebView didFailLoadWithError:(NSError *)error
|
||||
{
|
||||
return [ super webView:theWebView didFailLoadWithError:error ];
|
||||
}
|
||||
|
||||
/**
|
||||
* Start Loading Request
|
||||
* This is where most of the magic happens... We take the request(s) and process the response.
|
||||
* From here we can re direct links and other protocalls to different internal methods.
|
||||
*/
|
||||
- (BOOL)webView:(UIWebView *)theWebView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
|
||||
{
|
||||
return [ super webView:theWebView shouldStartLoadWithRequest:request navigationType:navigationType ];
|
||||
}
|
||||
|
||||
|
||||
- (BOOL) execute:(InvokedUrlCommand*)command
|
||||
{
|
||||
return [ super execute:command];
|
||||
}
|
||||
|
||||
- (void)dealloc
|
||||
{
|
||||
[ super dealloc ];
|
||||
}
|
||||
|
||||
// ADD OUR NOTIFICATION CODE
|
||||
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
|
||||
{
|
||||
|
||||
UIApplicationState state = [application applicationState];
|
||||
if (state == UIApplicationStateInactive) {
|
||||
// WAS IN BG
|
||||
NSLog(@"I was in the background");
|
||||
|
||||
NSString *notCB = [notification.userInfo objectForKey:@"background"];
|
||||
NSString * jsCallBack = [NSString
|
||||
stringWithFormat:@"%@", notCB];
|
||||
[self.webView stringByEvaluatingJavaScriptFromString:jsCallBack];
|
||||
|
||||
/* Use this line if running on Cordova
|
||||
[self.viewController.webView stringByEvaluatingJavaScriptFromString:jsCallBack];
|
||||
*/
|
||||
|
||||
application.applicationIconBadgeNumber = 0;
|
||||
|
||||
}
|
||||
else {
|
||||
// WAS RUNNING
|
||||
NSLog(@"I was currently active");
|
||||
|
||||
NSString *notCB = [notification.userInfo objectForKey:@"forground"];
|
||||
NSString * jsCallBack = [NSString
|
||||
stringWithFormat:@"%@", notCB];
|
||||
|
||||
/* Use this line if running on Cordova
|
||||
[self.webView stringByEvaluatingJavaScriptFromString:jsCallBack];
|
||||
*/
|
||||
|
||||
[self.webView stringByEvaluatingJavaScriptFromString:jsCallBack];
|
||||
|
||||
application.applicationIconBadgeNumber = 0;
|
||||
}
|
||||
}
|
||||
@end
|
||||
33
iPhone/LocalNotification/project/localNotifications/LocalNotification.h
Executable file
@@ -0,0 +1,33 @@
|
||||
//
|
||||
// LocalNotification.h
|
||||
// Phonegap LocalNotification Plugin
|
||||
// Copyright (c) Greg Allen 2011 & 2012 Drew Dahlman
|
||||
// MIT Licensed
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
/* FOR PHONEGAP 1.4 < */
|
||||
#ifdef PHONEGAP_FRAMEWORK
|
||||
#import <PhoneGap/PGPlugin.h>
|
||||
#else
|
||||
#import "PGPlugin.h"
|
||||
#endif
|
||||
|
||||
/*
|
||||
UNCOMMENT FOR CORDOVA
|
||||
|
||||
#ifdef CORDOVA_FRAMEWORK
|
||||
#import <Cordova/CDVPlugin.h>
|
||||
#else
|
||||
#import "CDVPlugin.h"
|
||||
#endif
|
||||
|
||||
*/
|
||||
@interface LocalNotification : PGPlugin {
|
||||
|
||||
}
|
||||
- (void)addNotification:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options;
|
||||
- (void)cancelNotification:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options;
|
||||
- (void)cancelAllNotifications:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options;
|
||||
|
||||
@end
|
||||
73
iPhone/LocalNotification/project/localNotifications/LocalNotification.m
Executable file
@@ -0,0 +1,73 @@
|
||||
//
|
||||
// LocalNotification.m
|
||||
// Phonegap LocalNotification Plugin
|
||||
// Copyright (c) Greg Allen 2011 & 2012 Drew Dahlman
|
||||
// MIT Licensed
|
||||
|
||||
#import "LocalNotification.h"
|
||||
|
||||
|
||||
@implementation LocalNotification
|
||||
- (void)addNotification:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options {
|
||||
NSMutableDictionary *repeatDict = [[NSMutableDictionary alloc] init];
|
||||
[repeatDict setObject:[NSNumber numberWithInt:NSDayCalendarUnit] forKey:@"daily"];
|
||||
[repeatDict setObject:[NSNumber numberWithInt:NSWeekCalendarUnit] forKey:@"weekly"];
|
||||
[repeatDict setObject:[NSNumber numberWithInt:NSMonthCalendarUnit] forKey:@"monthly"];
|
||||
[repeatDict setObject:[NSNumber numberWithInt:NSYearCalendarUnit] forKey:@"yearly"];
|
||||
[repeatDict setObject:[NSNumber numberWithInt:0] forKey:@""];
|
||||
|
||||
// notif settings
|
||||
double timestamp = [[options objectForKey:@"date"] doubleValue];
|
||||
NSString *msg = [options objectForKey:@"message"];
|
||||
NSString *action = [options objectForKey:@"action"];
|
||||
NSString *notificationId = [options objectForKey:@"id"];
|
||||
NSString *sound = [options objectForKey:@"sound"];
|
||||
NSString *bg = [options objectForKey:@"background"];
|
||||
NSString *fg = [options objectForKey:@"foreground"];
|
||||
NSString *repeat = [options objectForKey:@"repeat"];
|
||||
NSInteger badge = [[options objectForKey:@"badge"] intValue];
|
||||
bool hasAction = ([[options objectForKey:@"hasAction"] intValue] == 1)?YES:NO;
|
||||
|
||||
NSDate *date = [NSDate dateWithTimeIntervalSince1970:timestamp];
|
||||
|
||||
UILocalNotification *notif = [[UILocalNotification alloc] init];
|
||||
notif.fireDate = date;
|
||||
notif.hasAction = hasAction;
|
||||
notif.timeZone = [NSTimeZone defaultTimeZone];
|
||||
notif.repeatInterval = [[repeatDict objectForKey: repeat] intValue];
|
||||
|
||||
notif.alertBody = ([msg isEqualToString:@""])?nil:msg;
|
||||
notif.alertAction = action;
|
||||
|
||||
notif.soundName = sound;
|
||||
notif.applicationIconBadgeNumber = badge;
|
||||
|
||||
NSDictionary *userDict = [NSDictionary dictionaryWithObjectsAndKeys:notificationId,@"notificationId",bg,@"background",fg,@"forground",nil];
|
||||
|
||||
notif.userInfo = userDict;
|
||||
|
||||
[[UIApplication sharedApplication] scheduleLocalNotification:notif];
|
||||
NSLog(@"Notification Set: %@ (ID: %@, Badge: %i, sound: %@,callback: %@)", date, notificationId, badge, sound,bg);
|
||||
//[notif release];
|
||||
}
|
||||
|
||||
- (void)cancelNotification:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options {
|
||||
NSString *notificationId = [arguments objectAtIndex:0];
|
||||
NSArray *notifications = [[UIApplication sharedApplication] scheduledLocalNotifications];
|
||||
for (UILocalNotification *notification in notifications) {
|
||||
NSString *notId = [notification.userInfo objectForKey:@"notificationId"];
|
||||
if ([notificationId isEqualToString:notId]) {
|
||||
NSLog(@"Notification Canceled: %@", notificationId);
|
||||
[[UIApplication sharedApplication] cancelLocalNotification:notification];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (void)cancelAllNotifications:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options {
|
||||
NSLog(@"All Notifications cancelled");
|
||||
[[UIApplication sharedApplication] cancelAllLocalNotifications];
|
||||
}
|
||||
|
||||
|
||||
|
||||
@end
|
||||
@@ -0,0 +1,57 @@
|
||||
<?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>DetectPhoneNumber</key>
|
||||
<true/>
|
||||
<key>TopActivityIndicator</key>
|
||||
<string>gray</string>
|
||||
<key>EnableLocation</key>
|
||||
<false/>
|
||||
<key>EnableAcceleration</key>
|
||||
<true/>
|
||||
<key>EnableViewportScale</key>
|
||||
<false/>
|
||||
<key>AutoHideSplashScreen</key>
|
||||
<true/>
|
||||
<key>ShowSplashScreenSpinner</key>
|
||||
<true/>
|
||||
<key>MediaPlaybackRequiresUserAction</key>
|
||||
<false/>
|
||||
<key>AllowInlineMediaPlayback</key>
|
||||
<false/>
|
||||
<key>OpenAllWhitelistURLsInWebView</key>
|
||||
<false/>
|
||||
<key>ExternalHosts</key>
|
||||
<array/>
|
||||
<key>Plugins</key>
|
||||
<dict>
|
||||
<key>LocalNotification</key>
|
||||
<string>LocalNotification</string>
|
||||
<key>com.phonegap.accelerometer</key>
|
||||
<string>PGAccelerometer</string>
|
||||
<key>com.phonegap.camera</key>
|
||||
<string>PGCamera</string>
|
||||
<key>com.phonegap.connection</key>
|
||||
<string>PGConnection</string>
|
||||
<key>com.phonegap.contacts</key>
|
||||
<string>PGContacts</string>
|
||||
<key>com.phonegap.debugconsole</key>
|
||||
<string>PGDebugConsole</string>
|
||||
<key>com.phonegap.file</key>
|
||||
<string>PGFile</string>
|
||||
<key>com.phonegap.filetransfer</key>
|
||||
<string>PGFileTransfer</string>
|
||||
<key>com.phonegap.geolocation</key>
|
||||
<string>PGLocation</string>
|
||||
<key>com.phonegap.notification</key>
|
||||
<string>PGNotification</string>
|
||||
<key>com.phonegap.media</key>
|
||||
<string>PGSound</string>
|
||||
<key>com.phonegap.mediacapture</key>
|
||||
<string>PGCapture</string>
|
||||
<key>com.phonegap.splashscreen</key>
|
||||
<string>PGSplashScreen</string>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
|
After Width: | Height: | Size: 955 B |
|
After Width: | Height: | Size: 971 B |
|
After Width: | Height: | Size: 969 B |
|
After Width: | Height: | Size: 70 KiB |
|
After Width: | Height: | Size: 276 KiB |
|
After Width: | Height: | Size: 385 KiB |
|
After Width: | Height: | Size: 5.7 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 7.4 KiB |
|
After Width: | Height: | Size: 973 B |
|
After Width: | Height: | Size: 990 B |
|
After Width: | Height: | Size: 996 B |
|
After Width: | Height: | Size: 5.4 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 7.0 KiB |
@@ -0,0 +1,14 @@
|
||||
/*
|
||||
* PhoneGap is available under *either* the terms of the modified BSD license *or* the
|
||||
* MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
|
||||
*
|
||||
* Copyright (c) 2011, IBM Corporation
|
||||
*/
|
||||
|
||||
|
||||
// accessibility label for recording button
|
||||
"toggle audio recording" = "toggle audio recording";
|
||||
// notification spoken by VoiceOver when timed recording finishes
|
||||
"timed recording complete" = "timed recording complete";
|
||||
// accessibility hint for display of recorded elapsed time
|
||||
"recorded time in minutes and seconds" = "recorded time in minutes and seconds";
|
||||
@@ -0,0 +1,13 @@
|
||||
/*
|
||||
* PhoneGap is available under *either* the terms of the modified BSD license *or* the
|
||||
* MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
|
||||
*
|
||||
* Copyright (c) 2011, IBM Corporation
|
||||
*/
|
||||
|
||||
// accessibility label for recording button
|
||||
"toggle audio recording" = "grabación de audio cambiar";
|
||||
// notification spoken by VoiceOver when timed recording finishes
|
||||
"timed recording complete" = "tiempo de grabación completo";
|
||||
// accessibility hint for display of recorded elapsed time
|
||||
"recorded time in minutes and seconds" = "tiempo registrado en minutos y segundos";
|
||||
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 4.9 KiB |
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 5.2 KiB |
BIN
iPhone/LocalNotification/project/localNotifications/Resources/splash/Default.png
Executable file
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 32 KiB |
@@ -0,0 +1,2 @@
|
||||
/* Localized versions of Info.plist keys */
|
||||
|
||||
BIN
iPhone/LocalNotification/project/localNotifications/horn.caf
Normal file
@@ -28,7 +28,7 @@
|
||||
<key>CFBundleIconFile</key>
|
||||
<string>icon.png</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>com.yourcompany.example</string>
|
||||
<string>com.phonegap.localNotifications</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
@@ -0,0 +1,7 @@
|
||||
//
|
||||
// Prefix header for all source files of the 'localNotifications' target in the 'localNotifications' project
|
||||
//
|
||||
|
||||
#ifdef __OBJC__
|
||||
#import <UIKit/UIKit.h>
|
||||
#endif
|
||||
17
iPhone/LocalNotification/project/localNotifications/main.m
Normal file
@@ -0,0 +1,17 @@
|
||||
//
|
||||
// main.m
|
||||
// localNotifications
|
||||
//
|
||||
// Created by Andrew Dahlman on 1/26/12.
|
||||
// Copyright __MyCompanyName__ 2012. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
|
||||
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
|
||||
int retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate");
|
||||
[pool release];
|
||||
return retVal;
|
||||
}
|
||||
BIN
iPhone/LocalNotification/project/localNotifications/steam.caf
Normal file
BIN
iPhone/LocalNotification/project/localNotifications/triangle.caf
Normal file
BIN
iPhone/LocalNotification/project/localNotifications/whistle.caf
Normal file
@@ -0,0 +1,35 @@
|
||||
* {
|
||||
margin:0px;
|
||||
}
|
||||
body {
|
||||
font-family:Helvetica;
|
||||
-webkit-user-select: none;
|
||||
background-color:#fff;
|
||||
}
|
||||
#wrapper {
|
||||
width:100%;
|
||||
height:100%;
|
||||
padding-top:15px;
|
||||
}
|
||||
#header {
|
||||
height:150px;
|
||||
width:100%;
|
||||
background-image:url(../images/header.png);
|
||||
background-size:100%;
|
||||
margin-bottom:10px;
|
||||
box-shadow: 0px 0px 2px .6px #222222;
|
||||
}
|
||||
.btn {
|
||||
font-size:18px;
|
||||
text-align:center;
|
||||
padding-top:12px;
|
||||
padding-bottom:12px;
|
||||
width:95%;
|
||||
border-radius: 5px;
|
||||
background-color:#545454;
|
||||
margin:auto;
|
||||
color:#fff;
|
||||
font-weight:bold;
|
||||
box-shadow: 0px 0px 2px .6px #222222;
|
||||
margin-top:5px;
|
||||
}
|
||||
|
After Width: | Height: | Size: 15 KiB |
@@ -0,0 +1,31 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title></title>
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no;" />
|
||||
<meta charset="utf-8">
|
||||
<script type="text/javascript" charset="utf-8" src="phonegap-1.2.0.js"></script>
|
||||
|
||||
<!-- CORE JS FILES -->
|
||||
<script type="text/javascript" charset="utf-8" src="js/core/phonegap-1.2.0.js"></script>
|
||||
<script type="text/javascript" charset="utf-8" src="js/core/jQuery.js"></script>
|
||||
|
||||
<!-- PLUGINS -->
|
||||
<script type="text/javascript" charset="utf-8" src="js/plugins/LocalNotification.js"></script>
|
||||
|
||||
<!-- OUR INIT -->
|
||||
<script type="text/javascript" charset="utf-8" src="js/init.js"></script>
|
||||
|
||||
<!-- STYLE STUFF -->
|
||||
<link rel="stylesheet" href="css/style.css" />
|
||||
|
||||
</head>
|
||||
<body onload="app.bodyLoad()">
|
||||
<div id="header"></div>
|
||||
<div class="btn" onClick="notification.local_min();">localNotification + 60 seconds</div>
|
||||
<div class="btn" onClick="notification.local_timed(13,30);">localNotification</div>
|
||||
<div class="btn" onClick="notification.tomorrow(06,05,1);">localNotification tomorrow</div>
|
||||
<div class="btn" onClick="notification.clear();">clear all</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,132 @@
|
||||
// JavaScript Document
|
||||
// PROJECT: Phonegap LocalNotifications
|
||||
// AUTHOR: Drew Dahlman ( www.drewdahlman.com )
|
||||
// DATE: 1.26.2012
|
||||
|
||||
/*
|
||||
NOTES:
|
||||
We will be creating LocalNotifications that can be set to fire while app is inactive,
|
||||
and create a callback for the JS to know when the app has come back from a notification.
|
||||
|
||||
One thing that is deceptive about the LocalNotifications plugin is that when it shows a notification
|
||||
has been created it shows it based on the timezone +0000 which can throw you off.
|
||||
|
||||
in the call for setting the notification we simply call notification.local_timed("13:00") - note that I supplied a string.
|
||||
|
||||
The ability to set repeating notifications has been added!
|
||||
- daily
|
||||
- weekly
|
||||
- monthly
|
||||
- yearly
|
||||
|
||||
|
||||
*/
|
||||
|
||||
|
||||
// NOTIFICATION CENTER
|
||||
/*
|
||||
I like to set up one object that's only job is to manage notifications
|
||||
*/
|
||||
var notification = {
|
||||
init:function(){
|
||||
|
||||
},
|
||||
|
||||
// This will fire after 60 seconds
|
||||
local_min:function(){
|
||||
var d = new Date();
|
||||
d = d.getTime() + 3*1000; //60 seconds from now
|
||||
d = new Date(d);
|
||||
plugins.localNotification.add({
|
||||
date: d,
|
||||
repeat:'daily',
|
||||
message: 'This just fired after a minute!',
|
||||
hasAction: true,
|
||||
badge: 1,
|
||||
id: '123',
|
||||
sound:'horn.caf',
|
||||
background:'app.background()',
|
||||
foreground:'app.running()'
|
||||
});
|
||||
},
|
||||
|
||||
// This will fire based on the time provided.
|
||||
// Something to note is that the iPhone goes off of 24hr time
|
||||
// it defaults to no timezone adjustment so +0000 !IMPORTANT
|
||||
local_timed:function(hh,mm){
|
||||
// the example time we provide is 13:00
|
||||
// This means the alarm will go off at 1pm +0000
|
||||
// how does this translate to your time? While the phone schedules 1pm +0000
|
||||
// it will still go off at your desired time base on your phones time.
|
||||
|
||||
console.log(hh+" "+mm);
|
||||
// Now lets make a new date
|
||||
var d = new Date();
|
||||
d = d.setSeconds(00);
|
||||
d = new Date(d);
|
||||
d = d.setMinutes(mm);
|
||||
d = new Date(d);
|
||||
d = d.setHours(hh);
|
||||
d = new Date(d);
|
||||
plugins.localNotification.add({
|
||||
date: d,
|
||||
repeat:'daily',
|
||||
message: 'This went off just as expected!',
|
||||
hasAction: true,
|
||||
badge: 1,
|
||||
id: '123',
|
||||
sound:'horn.caf',
|
||||
background:'app.background()',
|
||||
foreground:'app.running()'
|
||||
});
|
||||
},
|
||||
clear:function(){
|
||||
plugins.localNotification.cancelAll();
|
||||
},
|
||||
tomorrow:function(hh,mm,days){
|
||||
// Now lets make a new date
|
||||
var d = new Date();
|
||||
d = d.setSeconds(00);
|
||||
d = new Date(d);
|
||||
d = d.setMinutes(mm);
|
||||
d = new Date(d);
|
||||
d = d.setHours(hh);
|
||||
d = new Date(d);
|
||||
|
||||
// add a day
|
||||
d = d.setDate(d.getDate()+days);
|
||||
d = new Date(d);
|
||||
|
||||
plugins.localNotification.add({
|
||||
date: d,
|
||||
repeat:'daily',
|
||||
message: 'This went off just as expected!',
|
||||
hasAction: true,
|
||||
badge: 1,
|
||||
id: '123',
|
||||
sound:'horn.caf',
|
||||
background:'app.background()',
|
||||
foreground:'app.running()'
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// APP
|
||||
var app = {
|
||||
bodyLoad:function(){
|
||||
document.addEventListener("deviceready", app.deviceReady, false);
|
||||
},
|
||||
deviceReady:function(){
|
||||
app.init();
|
||||
},
|
||||
init:function(){
|
||||
|
||||
},
|
||||
background:function(){
|
||||
console.log("I was in the background but i'm back now!");
|
||||
},
|
||||
running:function(){
|
||||
console.log("I am currently running, what should I do?");
|
||||
}
|
||||
};
|
||||
@@ -1,10 +1,12 @@
|
||||
/**
|
||||
Phonegap LocalNotification Plugin
|
||||
Copyright (c) Greg Allen 2011
|
||||
Updates Drew Dahlman 2012
|
||||
|
||||
MIT Licensed
|
||||
|
||||
Usage:
|
||||
plugins.localNotification.add({ date: new Date(), message: 'This is a notification', badge: 1, id: 123 });
|
||||
plugins.localNotification.add({ date: new Date(), message: 'This is a notification', badge: 1, id: 123, sound:'sub.caf',background:'app.background()',foreground:'app.running()' });
|
||||
plugins.localNotification.cancel(123);
|
||||
plugins.localNotification.cancelAll();
|
||||
**/
|
||||
@@ -19,7 +21,10 @@ if (typeof PhoneGap !== "undefined") {
|
||||
hasAction: true,
|
||||
action: 'View',
|
||||
badge: 0,
|
||||
id: 0
|
||||
id: 0,
|
||||
sound:'',
|
||||
background:'',
|
||||
foreground:''
|
||||
};
|
||||
for (var key in defaults) {
|
||||
if (typeof options[key] !== "undefined")
|
||||
41
iPhone/LocalNotification/readme.md
Normal file
@@ -0,0 +1,41 @@
|
||||
PHONEGAP LOCALNOTIFICATION
|
||||
The Phonegap LocalNotification plugin is great, but the documentation is lacking - also explanation of how to do more than set a 60 second timer.
|
||||
|
||||
This example goes through in detail how to set a timer for the future based on hours and minutes, as well as days in the future - also setting up repeat events for daily, weekly, monthly, yearly.
|
||||
|
||||
It also explains how to create a callback to your app when it is launched from that notification.
|
||||
|
||||
the full write up is here:<br>
|
||||
http://www.drewdahlman.com/meusLabs/?p=84
|
||||
|
||||
|
||||
<b>NOTES</b>:<br>
|
||||
A breakdown of options - <br>
|
||||
- date ( this expects a date object )<br>
|
||||
- message ( the message that is displayed )<br>
|
||||
- repeat ( has the options of 'weekly','daily','monthly','yearly')<br>
|
||||
- badge ( displays number badge to notification )<br>
|
||||
- foreground ( a javascript function to be called if the app is running )<br>
|
||||
- background ( a javascript function to be called if the app is in the background )<br>
|
||||
- sound ( a sound to be played, the sound must be located in your project's resources and must be a caf file )<br>
|
||||
|
||||
|
||||
<b>UPDATES</b>:<br>
|
||||
3.31.12 - <br>
|
||||
Added support for Cordova Please check LocalNotification.h to comment and uncomment the correct code.
|
||||
|
||||
<b>EXAMPLE</b><br>
|
||||
<pre>
|
||||
window.plugins.localNotification.add({
|
||||
date: d, // your set date object
|
||||
message: 'Hello world!',
|
||||
repeat: 'weekly', // will fire every week on this day
|
||||
badge: 1,
|
||||
foreground:'app.foreground',
|
||||
background:'app.background',
|
||||
sound:'sub.caf'
|
||||
});
|
||||
</pre>
|
||||
<br>
|
||||
enjoy!
|
||||
|
||||