This commit is contained in:
Kyle Fang
2013-02-25 10:32:25 +08:00
parent 25fa16da75
commit bf80caf3e2
8 changed files with 157 additions and 5 deletions

View File

@@ -3,4 +3,5 @@ pod 'MagicalRecord', '~> 2.0.8'
pod 'GoogleAnalytics-iOS-SDK', '~> 2.0beta3'
pod 'NUI', '~>0.2.1'
pod 'RDActionSheet', '~>0.0.1'
pod 'AHAlertView', '~>0.0.1'
pod 'AHAlertView', '~>0.0.2'
pod 'GVUserDefaults', '~>0.9.0'

View File

@@ -26,6 +26,9 @@
04BDDEEB16902D0A00D04A9E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04BDDEC616902D0900D04A9E /* Foundation.framework */; };
04BDDEF316902D0A00D04A9E /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 04BDDEF116902D0A00D04A9E /* InfoPlist.strings */; };
04BDDEF616902D0A00D04A9E /* ProgressTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 04BDDEF516902D0A00D04A9E /* ProgressTests.m */; };
04FD824216DAFB770028AF2A /* PPEvenKitManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 04FD824116DAFB770028AF2A /* PPEvenKitManager.m */; };
04FD824416DAFF670028AF2A /* EventKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04FD824316DAFF670028AF2A /* EventKit.framework */; };
04FD824716DB02910028AF2A /* GVUserDefaults+Progress.m in Sources */ = {isa = PBXBuildFile; fileRef = 04FD824616DB02910028AF2A /* GVUserDefaults+Progress.m */; };
E448B7DB3E2B421C88755488 /* libPods.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 506553F6D4624CF3AC28E6EC /* libPods.a */; };
/* End PBXBuildFile section */
@@ -66,6 +69,11 @@
04BDDEF216902D0A00D04A9E /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
04BDDEF416902D0A00D04A9E /* ProgressTests.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ProgressTests.h; sourceTree = "<group>"; };
04BDDEF516902D0A00D04A9E /* ProgressTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ProgressTests.m; sourceTree = "<group>"; };
04FD824016DAFB770028AF2A /* PPEvenKitManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PPEvenKitManager.h; sourceTree = "<group>"; };
04FD824116DAFB770028AF2A /* PPEvenKitManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PPEvenKitManager.m; sourceTree = "<group>"; };
04FD824316DAFF670028AF2A /* EventKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = EventKit.framework; path = System/Library/Frameworks/EventKit.framework; sourceTree = SDKROOT; };
04FD824516DB02910028AF2A /* GVUserDefaults+Progress.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GVUserDefaults+Progress.h"; sourceTree = "<group>"; };
04FD824616DB02910028AF2A /* GVUserDefaults+Progress.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GVUserDefaults+Progress.m"; sourceTree = "<group>"; };
506553F6D4624CF3AC28E6EC /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; };
C1BEB88070034FED9EE62EFA /* Pods.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.xcconfig; path = Pods/Pods.xcconfig; sourceTree = SOURCE_ROOT; };
/* End PBXFileReference section */
@@ -75,6 +83,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
04FD824416DAFF670028AF2A /* EventKit.framework in Frameworks */,
04BDDEC516902D0900D04A9E /* UIKit.framework in Frameworks */,
04BDDEC716902D0900D04A9E /* Foundation.framework in Frameworks */,
04BDDEC916902D0900D04A9E /* CoreGraphics.framework in Frameworks */,
@@ -118,6 +127,7 @@
04BDDEC316902D0900D04A9E /* Frameworks */ = {
isa = PBXGroup;
children = (
04FD824316DAFF670028AF2A /* EventKit.framework */,
04BDDEC416902D0900D04A9E /* UIKit.framework */,
04BDDEC616902D0900D04A9E /* Foundation.framework */,
04BDDEC816902D0900D04A9E /* CoreGraphics.framework */,
@@ -130,7 +140,10 @@
04BDDECA16902D0900D04A9E /* Progress */ = {
isa = PBXGroup;
children = (
04386A0B16908C4C0058C876 /* Progress.entitlements */,
04FD824516DB02910028AF2A /* GVUserDefaults+Progress.h */,
04FD824616DB02910028AF2A /* GVUserDefaults+Progress.m */,
04FD824016DAFB770028AF2A /* PPEvenKitManager.h */,
04FD824116DAFB770028AF2A /* PPEvenKitManager.m */,
04BDDED316902D0900D04A9E /* PPAppDelegate.h */,
04BDDED416902D0900D04A9E /* PPAppDelegate.m */,
04BDDEDC16902D0900D04A9E /* Progress.storyboard */,
@@ -145,6 +158,7 @@
04BDDECB16902D0900D04A9E /* Supporting Files */ = {
isa = PBXGroup;
children = (
04386A0B16908C4C0058C876 /* Progress.entitlements */,
044C661716AFE29F00F9BC1E /* Icon.png */,
044C661416AFE28100F9BC1E /* Icon@2x.png */,
04BDDECC16902D0900D04A9E /* Progress-Info.plist */,
@@ -309,6 +323,8 @@
04BDDED516902D0900D04A9E /* PPAppDelegate.m in Sources */,
04BDDEE116902D0900D04A9E /* PPViewController.m in Sources */,
0486284C16B000D700F62384 /* Progress.xcdatamodeld in Sources */,
04FD824216DAFB770028AF2A /* PPEvenKitManager.m in Sources */,
04FD824716DB02910028AF2A /* GVUserDefaults+Progress.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};

View File

@@ -0,0 +1,14 @@
//
// GVUserDefaults+Progress.h
// Progress
//
// Created by Kyle Fang on 2/25/13.
// Copyright (c) 2013 kylefang. All rights reserved.
//
#import "GVUserDefaults.h"
@interface GVUserDefaults (Progress)
@property (nonatomic) BOOL firstTimeLaunchApp;
@end

View File

@@ -0,0 +1,18 @@
//
// GVUserDefaults+Progress.m
// Progress
//
// Created by Kyle Fang on 2/25/13.
// Copyright (c) 2013 kylefang. All rights reserved.
//
#import "GVUserDefaults+Progress.h"
@implementation GVUserDefaults (Progress)
@dynamic firstTimeLaunchApp;
- (NSDictionary *)setupDefaults{
return @{@"firstTimeLaunchApp": @YES};
}
@end

View File

@@ -7,6 +7,8 @@
//
#import "PPAppDelegate.h"
#import "PPEvenKitManager.h"
#import <GAI.h>
@implementation PPAppDelegate
@@ -14,7 +16,27 @@
{
// Override point for customization after application launch.
//NUI
[NUIAppearance init];
//Google Analytics
// Optional: automatically send uncaught exceptions to Google Analytics.
[GAI sharedInstance].trackUncaughtExceptions = YES;
// Optional: set Google Analytics dispatch interval to e.g. 20 seconds.
[GAI sharedInstance].dispatchInterval = 20;
// Optional: set debug to YES for extra debugging information.
[GAI sharedInstance].debug = YES;
// Create tracker instance.
[[GAI sharedInstance] trackerWithTrackingId:@"UA-37324298-1"];
[[PPEvenKitManager sharedManager] setupEventManagerWithCompletionBlock:^(BOOL success) {
if (success) {
NSLog(@"success");
} else {
NSLog(@"failed");
}
}];
return YES;
}

View File

@@ -0,0 +1,18 @@
//
// PPEvenKitManager.h
// Progress
//
// Created by Kyle Fang on 2/25/13.
// Copyright (c) 2013 kylefang. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <EventKit/EventKit.h>
@interface PPEvenKitManager : NSObject
+ (PPEvenKitManager *)sharedManager;
- (void)setupEventManagerWithCompletionBlock:(void (^)(BOOL success))completionBlock;
@end

View File

@@ -0,0 +1,63 @@
//
// PPEvenKitManager.m
// Progress
//
// Created by Kyle Fang on 2/25/13.
// Copyright (c) 2013 kylefang. All rights reserved.
//
#import "PPEvenKitManager.h"
@interface PPEvenKitManager()
@property (nonatomic, strong) EKEventStore *defaultStore;
@end
@implementation PPEvenKitManager
#pragma mark -
#pragma mark - Set up the evenKitManager
static PPEvenKitManager *_sharedManager;
+ (PPEvenKitManager *)sharedManager{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_sharedManager = [[self alloc] init];
});
return _sharedManager;
}
- (id)init{
self = [super init];
if (self) {
self.defaultStore = [[EKEventStore alloc] init];
}
return self;
}
- (void)setupEventManagerWithCompletionBlock:(void (^)(BOOL))completionBlock{
if ([self haveAccessToReminder]) {
completionBlock(YES);
} else {
[self.defaultStore requestAccessToEntityType:EKEntityTypeReminder completion:^(BOOL granted, NSError *error) {
if (granted) {
completionBlock(YES);
} else {
completionBlock(NO);
}
}];
}
}
- (BOOL)haveAccessToReminder{
return [EKEventStore authorizationStatusForEntityType:EKEntityTypeReminder] == EKAuthorizationStatusAuthorized;
}
@end

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="2.0" toolsVersion="2844" systemVersion="12C60" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" initialViewController="2">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="2.0" toolsVersion="3084" systemVersion="12C60" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" initialViewController="2">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="1930"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="2083"/>
</dependencies>
<scenes>
<!--View Controller-->
@@ -16,7 +16,7 @@
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="4" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="6" y="78"/>
<point key="canvasLocation" x="276" y="121"/>
</scene>
</scenes>
<classes>