Updated to support sound & callbacks

This commit is contained in:
Drew Dahlman
2012-04-15 10:54:38 -06:00
parent e92f155dfa
commit ab5509e7da
75 changed files with 9798 additions and 3072 deletions

View File

@@ -1,6 +0,0 @@
*.mode1v3
*.perspectivev3
*.pbxuser
.DS_Store
build
www/phonegap.js

View File

@@ -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

View File

@@ -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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

View File

@@ -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>

View File

@@ -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)

View 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;
}

View File

@@ -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 */;
}

View File

@@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View 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>

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View 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?");
}
};

View File

@@ -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")

View File

@@ -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;
}

View File

@@ -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>

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View 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;

View 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();
});
}

View 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

View File

@@ -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 */;
}

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:localNotifications.xcodeproj">
</FileRef>
</Workspace>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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

View File

@@ -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

View 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

View 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

View File

@@ -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>

Binary file not shown.

After

Width:  |  Height:  |  Size: 955 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 971 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 969 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 276 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 385 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 973 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 990 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 996 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

View File

@@ -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";

View File

@@ -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";

View File

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

View File

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

View File

@@ -0,0 +1,2 @@
/* Localized versions of Info.plist keys */

View 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>

View File

@@ -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

View 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;
}

View 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;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View 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>

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View 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?");
}
};

View File

@@ -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")

View 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!