From 8daf434dc16a6feb7f91de6c33699139e94f73fe Mon Sep 17 00:00:00 2001 From: Kashif Rasul Date: Sat, 29 Aug 2015 21:01:49 +0200 Subject: [PATCH 1/4] initial AppExtensions project --- Parse.xcworkspace/contents.xcworkspacedata | 3 + .../project.pbxproj | 462 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcschemes/ParseStarterProject.xcscheme | 116 +++++ ...seAppExtensionsStarterProjectAppDelegate.h | 20 + ...seAppExtensionsStarterProjectAppDelegate.m | 146 ++++++ ...ppExtensionsStarterProjectViewController.h | 14 + ...ppExtensionsStarterProjectViewController.m | 36 ++ .../ParseAppExtensionsStarterProject/main.m | 20 + .../Resources/Default-568h@2x.png | Bin 0 -> 17091 bytes .../Resources/Default.png | Bin 0 -> 5761 bytes .../Resources/Default@2x.png | Bin 0 -> 12280 bytes .../Resources/Info.plist | 38 ++ .../Resources/en.lproj/InfoPlist.strings | 1 + .../Resources/en.lproj/MainWindow.xib | 274 +++++++++++ ...ExtensionsStarterProjectViewController.xib | 227 +++++++++ 16 files changed, 1364 insertions(+) create mode 100644 ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProject.xcodeproj/project.pbxproj create mode 100644 ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProject.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProject.xcodeproj/xcshareddata/xcschemes/ParseStarterProject.xcscheme create mode 100644 ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProjectAppDelegate.h create mode 100644 ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProjectAppDelegate.m create mode 100644 ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProjectViewController.h create mode 100644 ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProjectViewController.m create mode 100644 ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProject/main.m create mode 100644 ParseStarterProject/iOS/ParseAppExtensionsStarterProject/Resources/Default-568h@2x.png create mode 100644 ParseStarterProject/iOS/ParseAppExtensionsStarterProject/Resources/Default.png create mode 100644 ParseStarterProject/iOS/ParseAppExtensionsStarterProject/Resources/Default@2x.png create mode 100644 ParseStarterProject/iOS/ParseAppExtensionsStarterProject/Resources/Info.plist create mode 100644 ParseStarterProject/iOS/ParseAppExtensionsStarterProject/Resources/en.lproj/InfoPlist.strings create mode 100644 ParseStarterProject/iOS/ParseAppExtensionsStarterProject/Resources/en.lproj/MainWindow.xib create mode 100644 ParseStarterProject/iOS/ParseAppExtensionsStarterProject/Resources/en.lproj/ParseAppExtensionsStarterProjectViewController.xib diff --git a/Parse.xcworkspace/contents.xcworkspacedata b/Parse.xcworkspace/contents.xcworkspacedata index 49104e367..2e4a3c177 100644 --- a/Parse.xcworkspace/contents.xcworkspacedata +++ b/Parse.xcworkspace/contents.xcworkspacedata @@ -17,6 +17,9 @@ + + diff --git a/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProject.xcodeproj/project.pbxproj b/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProject.xcodeproj/project.pbxproj new file mode 100644 index 000000000..14a34681d --- /dev/null +++ b/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProject.xcodeproj/project.pbxproj @@ -0,0 +1,462 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXAggregateTarget section */ + 814C3AE61B69A87F00E307BB /* Bootstrap */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 814C3AE91B69A87F00E307BB /* Build configuration list for PBXAggregateTarget "Bootstrap" */; + buildPhases = ( + 814C3AEA1B69A88300E307BB /* ShellScript */, + ); + dependencies = ( + ); + name = Bootstrap; + productName = Bootstrap; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + 092354B313A1D7EB00DA740F /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 092354B213A1D7EB00DA740F /* CFNetwork.framework */; }; + 092354B513A1D7F000DA740F /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 092354B413A1D7F000DA740F /* SystemConfiguration.framework */; }; + 095ACE8613C68EA300566243 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 095ACE8513C68EA300566243 /* AudioToolbox.framework */; }; + 099CCEAD13F9E3760039A464 /* libz.1.1.3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 099CCEAC13F9E3760039A464 /* libz.1.1.3.dylib */; }; + 09ABC07213A1D52D009C3FCF /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 09ABC07113A1D52D009C3FCF /* UIKit.framework */; }; + 09ABC07413A1D52D009C3FCF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 09ABC07313A1D52D009C3FCF /* Foundation.framework */; }; + 09BEF34C13D51C3F001BBCDB /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 09BEF34B13D51C3F001BBCDB /* Security.framework */; }; + 2FCDD6B014A573F500295AAC /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2FCDD6AF14A573F500295AAC /* QuartzCore.framework */; }; + 4998650515BF305000803E05 /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4998650415BF305000803E05 /* StoreKit.framework */; }; + 4BE2434D1B9233CC007AC875 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BE243481B9233CC007AC875 /* main.m */; }; + 4BE2434E1B9233CC007AC875 /* ParseAppExtensionsStarterProjectAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BE2434A1B9233CC007AC875 /* ParseAppExtensionsStarterProjectAppDelegate.m */; }; + 4BE2434F1B9233CC007AC875 /* ParseAppExtensionsStarterProjectViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BE2434C1B9233CC007AC875 /* ParseAppExtensionsStarterProjectViewController.m */; }; + 4BE243521B923416007AC875 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4BE243501B923416007AC875 /* MainWindow.xib */; }; + 4BE243551B923426007AC875 /* ParseAppExtensionsStarterProjectViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4BE243531B923426007AC875 /* ParseAppExtensionsStarterProjectViewController.xib */; }; + 743D7B6D157DA60100084B67 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 743D7B6C157DA60100084B67 /* CoreGraphics.framework */; }; + 814C3ABD1B69864600E307BB /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 814C3AB21B69864600E307BB /* Default-568h@2x.png */; }; + 814C3ABE1B69864600E307BB /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = 814C3AB31B69864600E307BB /* Default.png */; }; + 814C3ABF1B69864600E307BB /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 814C3AB41B69864600E307BB /* Default@2x.png */; }; + 814C3AC01B69864600E307BB /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 814C3AB51B69864600E307BB /* InfoPlist.strings */; }; + 817AD67C196B009E0014C796 /* Bolts.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 817AD67B196B009E0014C796 /* Bolts.framework */; }; + 81A6CA611A2EA82800297C39 /* libstdc++.6.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 81A6CA601A2EA82800297C39 /* libstdc++.6.dylib */; }; + 81AFA6791B0EDD12000763C0 /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 6332375315E438E900AE2736 /* libsqlite3.dylib */; }; + 81DDFD1919B4A60300BE649C /* Parse.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 81DDFD1719B4A60300BE649C /* Parse.framework */; }; + DD952FCB16E7F5CF00470144 /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 97E18B1E1624CB5700B17A67 /* CoreLocation.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 814C3AEB1B69A8B000E307BB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 09ABC06413A1D52D009C3FCF /* Project object */; + proxyType = 1; + remoteGlobalIDString = 814C3AE61B69A87F00E307BB; + remoteInfo = Bootstrap; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 092354B213A1D7EB00DA740F /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = System/Library/Frameworks/CFNetwork.framework; sourceTree = SDKROOT; }; + 092354B413A1D7F000DA740F /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; }; + 095ACE8513C68EA300566243 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; + 099CCEAC13F9E3760039A464 /* libz.1.1.3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.1.1.3.dylib; path = usr/lib/libz.1.1.3.dylib; sourceTree = SDKROOT; }; + 09ABC06D13A1D52D009C3FCF /* ParseAppExteStarterProject.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ParseAppExtensionsStarterProject.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 09ABC07113A1D52D009C3FCF /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + 09ABC07313A1D52D009C3FCF /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + 09BEF34B13D51C3F001BBCDB /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; }; + 2FCDD6AF14A573F500295AAC /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; + 4998650415BF305000803E05 /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = System/Library/Frameworks/StoreKit.framework; sourceTree = SDKROOT; }; + 4BE243481B9233CC007AC875 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = ParseAppExtensionsStarterProject/main.m; sourceTree = SOURCE_ROOT; }; + 4BE243491B9233CC007AC875 /* ParseAppExtensionsStarterProjectAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ParseAppExtensionsStarterProjectAppDelegate.h; path = ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProjectAppDelegate.h; sourceTree = SOURCE_ROOT; }; + 4BE2434A1B9233CC007AC875 /* ParseAppExtensionsStarterProjectAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ParseAppExtensionsStarterProjectAppDelegate.m; path = ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProjectAppDelegate.m; sourceTree = SOURCE_ROOT; }; + 4BE2434B1B9233CC007AC875 /* ParseAppExtensionsStarterProjectViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ParseAppExtensionsStarterProjectViewController.h; path = ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProjectViewController.h; sourceTree = SOURCE_ROOT; }; + 4BE2434C1B9233CC007AC875 /* ParseAppExtensionsStarterProjectViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ParseAppExtensionsStarterProjectViewController.m; path = ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProjectViewController.m; sourceTree = SOURCE_ROOT; }; + 4BE243511B923416007AC875 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = Resources/en.lproj/MainWindow.xib; sourceTree = SOURCE_ROOT; }; + 4BE243541B923426007AC875 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = Resources/en.lproj/ParseAppExtensionsStarterProjectViewController.xib; sourceTree = SOURCE_ROOT; }; + 6332375315E438E900AE2736 /* libsqlite3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libsqlite3.dylib; path = usr/lib/libsqlite3.dylib; sourceTree = SDKROOT; }; + 6372FF521613CC3C002132AF /* Accounts.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accounts.framework; path = System/Library/Frameworks/Accounts.framework; sourceTree = SDKROOT; }; + 6372FF551613CC42002132AF /* Social.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Social.framework; path = System/Library/Frameworks/Social.framework; sourceTree = SDKROOT; }; + 6372FF571613CC47002132AF /* AdSupport.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AdSupport.framework; path = System/Library/Frameworks/AdSupport.framework; sourceTree = SDKROOT; }; + 743D7B6C157DA60100084B67 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; + 814C3AB21B69864600E307BB /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; }; + 814C3AB31B69864600E307BB /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Default.png; sourceTree = ""; }; + 814C3AB41B69864600E307BB /* Default@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default@2x.png"; sourceTree = ""; }; + 814C3AB61B69864600E307BB /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + 814C3ABC1B69864600E307BB /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 817AD67B196B009E0014C796 /* Bolts.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Bolts.framework; sourceTree = ""; }; + 81A6CA601A2EA82800297C39 /* libstdc++.6.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libstdc++.6.dylib"; path = "usr/lib/libstdc++.6.dylib"; sourceTree = SDKROOT; }; + 81DDFD1719B4A60300BE649C /* Parse.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Parse.framework; sourceTree = ""; }; + 97E18B1E1624CB5700B17A67 /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = System/Library/Frameworks/CoreLocation.framework; sourceTree = SDKROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 09ABC06A13A1D52D009C3FCF /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 81A6CA611A2EA82800297C39 /* libstdc++.6.dylib in Frameworks */, + DD952FCB16E7F5CF00470144 /* CoreLocation.framework in Frameworks */, + 4998650515BF305000803E05 /* StoreKit.framework in Frameworks */, + 743D7B6D157DA60100084B67 /* CoreGraphics.framework in Frameworks */, + 81AFA6791B0EDD12000763C0 /* libsqlite3.dylib in Frameworks */, + 2FCDD6B014A573F500295AAC /* QuartzCore.framework in Frameworks */, + 099CCEAD13F9E3760039A464 /* libz.1.1.3.dylib in Frameworks */, + 09BEF34C13D51C3F001BBCDB /* Security.framework in Frameworks */, + 095ACE8613C68EA300566243 /* AudioToolbox.framework in Frameworks */, + 092354B513A1D7F000DA740F /* SystemConfiguration.framework in Frameworks */, + 092354B313A1D7EB00DA740F /* CFNetwork.framework in Frameworks */, + 81DDFD1919B4A60300BE649C /* Parse.framework in Frameworks */, + 09ABC07213A1D52D009C3FCF /* UIKit.framework in Frameworks */, + 09ABC07413A1D52D009C3FCF /* Foundation.framework in Frameworks */, + 817AD67C196B009E0014C796 /* Bolts.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 09ABC06213A1D52D009C3FCF = { + isa = PBXGroup; + children = ( + 09ABC07713A1D52D009C3FCF /* ParseAppExtensionsStarterProject */, + 814C3AB11B69864600E307BB /* Resources */, + 09ABC07013A1D52D009C3FCF /* Frameworks */, + 09ABC06E13A1D52D009C3FCF /* Products */, + ); + sourceTree = ""; + }; + 09ABC06E13A1D52D009C3FCF /* Products */ = { + isa = PBXGroup; + children = ( + 09ABC06D13A1D52D009C3FCF /* ParseAppExtensionsStarterProject.app */, + ); + name = Products; + sourceTree = ""; + }; + 09ABC07013A1D52D009C3FCF /* Frameworks */ = { + isa = PBXGroup; + children = ( + 81DDFD1719B4A60300BE649C /* Parse.framework */, + 817AD67B196B009E0014C796 /* Bolts.framework */, + 81A6CA5E1A2EA0B800297C39 /* System Frameworks */, + ); + name = Frameworks; + sourceTree = ""; + }; + 09ABC07713A1D52D009C3FCF /* ParseAppExtensionsStarterProject */ = { + isa = PBXGroup; + children = ( + 4BE243491B9233CC007AC875 /* ParseAppExtensionsStarterProjectAppDelegate.h */, + 4BE2434A1B9233CC007AC875 /* ParseAppExtensionsStarterProjectAppDelegate.m */, + 4BE243501B923416007AC875 /* MainWindow.xib */, + 4BE2434B1B9233CC007AC875 /* ParseAppExtensionsStarterProjectViewController.h */, + 4BE2434C1B9233CC007AC875 /* ParseAppExtensionsStarterProjectViewController.m */, + 4BE243531B923426007AC875 /* ParseAppExtensionsStarterProjectViewController.xib */, + 09ABC07813A1D52D009C3FCF /* Other Sources */, + ); + name = ParseAppExtensionsStarterProject; + path = ParseAppExtensionsStarterProject; + sourceTree = ""; + }; + 09ABC07813A1D52D009C3FCF /* Other Sources */ = { + isa = PBXGroup; + children = ( + 4BE243481B9233CC007AC875 /* main.m */, + ); + name = "Other Sources"; + sourceTree = ""; + }; + 814C3AB11B69864600E307BB /* Resources */ = { + isa = PBXGroup; + children = ( + 814C3AB21B69864600E307BB /* Default-568h@2x.png */, + 814C3AB31B69864600E307BB /* Default.png */, + 814C3AB41B69864600E307BB /* Default@2x.png */, + 814C3AB51B69864600E307BB /* InfoPlist.strings */, + 814C3ABC1B69864600E307BB /* Info.plist */, + ); + path = Resources; + sourceTree = ""; + }; + 81A6CA5E1A2EA0B800297C39 /* System Frameworks */ = { + isa = PBXGroup; + children = ( + 6372FF571613CC47002132AF /* AdSupport.framework */, + 6372FF551613CC42002132AF /* Social.framework */, + 6372FF521613CC3C002132AF /* Accounts.framework */, + 095ACE8513C68EA300566243 /* AudioToolbox.framework */, + 092354B213A1D7EB00DA740F /* CFNetwork.framework */, + 743D7B6C157DA60100084B67 /* CoreGraphics.framework */, + 97E18B1E1624CB5700B17A67 /* CoreLocation.framework */, + 09ABC07313A1D52D009C3FCF /* Foundation.framework */, + 6332375315E438E900AE2736 /* libsqlite3.dylib */, + 099CCEAC13F9E3760039A464 /* libz.1.1.3.dylib */, + 81A6CA601A2EA82800297C39 /* libstdc++.6.dylib */, + 2FCDD6AF14A573F500295AAC /* QuartzCore.framework */, + 09BEF34B13D51C3F001BBCDB /* Security.framework */, + 4998650415BF305000803E05 /* StoreKit.framework */, + 092354B413A1D7F000DA740F /* SystemConfiguration.framework */, + 09ABC07113A1D52D009C3FCF /* UIKit.framework */, + ); + name = "System Frameworks"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 09ABC06C13A1D52D009C3FCF /* ParseAppExtensionsStarterProject */ = { + isa = PBXNativeTarget; + buildConfigurationList = 09ABC08E13A1D52E009C3FCF /* Build configuration list for PBXNativeTarget "ParseAppExtensionsStarterProject" */; + buildPhases = ( + 09ABC06913A1D52D009C3FCF /* Sources */, + 09ABC06A13A1D52D009C3FCF /* Frameworks */, + 09ABC06B13A1D52D009C3FCF /* Resources */, + 81A6CA5F1A2EA3D600297C39 /* Upload Symbol Files */, + ); + buildRules = ( + ); + dependencies = ( + 814C3AEC1B69A8B000E307BB /* PBXTargetDependency */, + ); + name = ParseAppExtensionsStarterProject; + productName = ParseAppExtensionsStarterProject; + productReference = 09ABC06D13A1D52D009C3FCF /* ParseAppExtensionsStarterProject.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 09ABC06413A1D52D009C3FCF /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0510; + TargetAttributes = { + 814C3AE61B69A87F00E307BB = { + CreatedOnToolsVersion = 6.4; + }; + }; + }; + buildConfigurationList = 09ABC06713A1D52D009C3FCF /* Build configuration list for PBXProject "ParseAppExtensionsStarterProject" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 09ABC06213A1D52D009C3FCF; + productRefGroup = 09ABC06E13A1D52D009C3FCF /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 09ABC06C13A1D52D009C3FCF /* ParseAppExtensionsStarterProject */, + 814C3AE61B69A87F00E307BB /* Bootstrap */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 09ABC06B13A1D52D009C3FCF /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 814C3ABE1B69864600E307BB /* Default.png in Resources */, + 4BE243521B923416007AC875 /* MainWindow.xib in Resources */, + 814C3ABF1B69864600E307BB /* Default@2x.png in Resources */, + 814C3ABD1B69864600E307BB /* Default-568h@2x.png in Resources */, + 4BE243551B923426007AC875 /* ParseAppExtensionsStarterProjectViewController.xib in Resources */, + 814C3AC01B69864600E307BB /* InfoPlist.strings in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 814C3AEA1B69A88300E307BB /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [[ ! -d \"Bolts.framework\" ]]; then\n cp -R ../../../Vendor/Bolts-ObjC/build/ios/Bolts.framework .\nfi\n"; + }; + 81A6CA5F1A2EA3D600297C39 /* Upload Symbol Files */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Upload Symbol Files"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "# This script will upload symbol files for your application,\n# so all your crash reports are going to be symbolicated\n\n# Important!\n# Before using the script, please initialize CloudCode folder and replace with the path to it\n#\n# Read more on Parse.com - https://parse.com/apps/quickstart#analytics/crashreporting/ios/\n############################################################\n\n\n# export PATH=/usr/local/bin:$PATH\n# cd \n\n# parse symbols -p \"${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}\"\n"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 09ABC06913A1D52D009C3FCF /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4BE2434F1B9233CC007AC875 /* ParseAppExtensionsStarterProjectViewController.m in Sources */, + 4BE2434D1B9233CC007AC875 /* main.m in Sources */, + 4BE2434E1B9233CC007AC875 /* ParseAppExtensionsStarterProjectAppDelegate.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 814C3AEC1B69A8B000E307BB /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 814C3AE61B69A87F00E307BB /* Bootstrap */; + targetProxy = 814C3AEB1B69A8B000E307BB /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 4BE243501B923416007AC875 /* MainWindow.xib */ = { + isa = PBXVariantGroup; + children = ( + 4BE243511B923416007AC875 /* en */, + ); + name = MainWindow.xib; + sourceTree = ""; + }; + 4BE243531B923426007AC875 /* ParseAppExtensionsStarterProjectViewController.xib */ = { + isa = PBXVariantGroup; + children = ( + 4BE243541B923426007AC875 /* en */, + ); + name = ParseAppExtensionsStarterProjectViewController.xib; + sourceTree = ""; + }; + 814C3AB51B69864600E307BB /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 814C3AB61B69864600E307BB /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 09ABC08C13A1D52E009C3FCF /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = DEBUG; + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + }; + name = Debug; + }; + 09ABC08D13A1D52E009C3FCF /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; + SDKROOT = iphoneos; + }; + name = Release; + }; + 09ABC08F13A1D52E009C3FCF /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_ARC = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(SRCROOT)", + "$(PROJECT_DIR)", + ); + GCC_DYNAMIC_NO_PIC = NO; + INFOPLIST_FILE = Resources/Info.plist; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Debug; + }; + 09ABC09013A1D52E009C3FCF /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_ARC = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(SRCROOT)", + "$(PROJECT_DIR)", + ); + INFOPLIST_FILE = Resources/Info.plist; + PRODUCT_NAME = "$(TARGET_NAME)"; + VALIDATE_PRODUCT = YES; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; + 814C3AE71B69A87F00E307BB /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 814C3AE81B69A87F00E307BB /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 09ABC06713A1D52D009C3FCF /* Build configuration list for PBXProject "ParseAppExtensionsStarterProject" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 09ABC08C13A1D52E009C3FCF /* Debug */, + 09ABC08D13A1D52E009C3FCF /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 09ABC08E13A1D52E009C3FCF /* Build configuration list for PBXNativeTarget "ParseAppExtensionsStarterProject" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 09ABC08F13A1D52E009C3FCF /* Debug */, + 09ABC09013A1D52E009C3FCF /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 814C3AE91B69A87F00E307BB /* Build configuration list for PBXAggregateTarget "Bootstrap" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 814C3AE71B69A87F00E307BB /* Debug */, + 814C3AE81B69A87F00E307BB /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 09ABC06413A1D52D009C3FCF /* Project object */; +} diff --git a/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProject.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProject.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..abf453ba4 --- /dev/null +++ b/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProject.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProject.xcodeproj/xcshareddata/xcschemes/ParseStarterProject.xcscheme b/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProject.xcodeproj/xcshareddata/xcschemes/ParseStarterProject.xcscheme new file mode 100644 index 000000000..b4da06c33 --- /dev/null +++ b/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProject.xcodeproj/xcshareddata/xcschemes/ParseStarterProject.xcscheme @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProjectAppDelegate.h b/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProjectAppDelegate.h new file mode 100644 index 000000000..9d5d6c06d --- /dev/null +++ b/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProjectAppDelegate.h @@ -0,0 +1,20 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +@class ParseAppExtensionsStarterProjectViewController; + +@interface ParseAppExtensionsStarterProjectAppDelegate : NSObject + +@property (nonatomic, strong) IBOutlet UIWindow *window; + +@property (nonatomic, strong) IBOutlet ParseAppExtensionsStarterProjectViewController *viewController; + +@end diff --git a/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProjectAppDelegate.m b/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProjectAppDelegate.m new file mode 100644 index 000000000..4820cbaab --- /dev/null +++ b/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProjectAppDelegate.m @@ -0,0 +1,146 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +// If you want to use any of the UI components, uncomment this line +// #import + +// If you are using Facebook, uncomment this line +// #import + +// If you want to use Crash Reporting - uncomment this line +// #import + +#import "ParseAppExtensionsStarterProjectAppDelegate.h" +#import "ParseAppExtensionsStarterProjectViewController.h" + +@implementation ParseAppExtensionsStarterProjectAppDelegate + +#pragma mark - +#pragma mark UIApplicationDelegate + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { + // Enable storing and querying data from Local Datastore. Remove this line if you don't want to + // use Local Datastore features or want to use cachePolicy. + [Parse enableLocalDatastore]; + + // **************************************************************************** + // Uncomment this line if you want to enable Crash Reporting + // [ParseCrashReporting enable]; + // + // Uncomment and fill in with your Parse credentials: + // [Parse setApplicationId:@"your_application_id" clientKey:@"your_client_key"]; + // + // If you are using Facebook, uncomment and add your FacebookAppID to your bundle's plist as + // described here: https://developers.facebook.com/docs/getting-started/facebook-sdk-for-ios/ + // [PFFacebookUtils initializeFacebook]; + // **************************************************************************** + + [PFUser enableAutomaticUser]; + + PFACL *defaultACL = [PFACL ACL]; + + // If you would like all objects to be private by default, remove this line. + [defaultACL setPublicReadAccess:YES]; + + [PFACL setDefaultACL:defaultACL withAccessForCurrentUser:YES]; + + // Override point for customization after application launch. + + self.window.rootViewController = self.viewController; + [self.window makeKeyAndVisible]; + + if (application.applicationState != UIApplicationStateBackground) { + // Track an app open here if we launch with a push, unless + // "content_available" was used to trigger a background push (introduced in iOS 7). + // In that case, we skip tracking here to avoid double counting the app-open. + BOOL preBackgroundPush = ![application respondsToSelector:@selector(backgroundRefreshStatus)]; + BOOL oldPushHandlerOnly = ![self respondsToSelector:@selector(application:didReceiveRemoteNotification:fetchCompletionHandler:)]; + BOOL noPushPayload = ![launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]; + if (preBackgroundPush || oldPushHandlerOnly || noPushPayload) { + [PFAnalytics trackAppOpenedWithLaunchOptions:launchOptions]; + } + } + +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000 + if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]) { + UIUserNotificationType userNotificationTypes = (UIUserNotificationTypeAlert | + UIUserNotificationTypeBadge | + UIUserNotificationTypeSound); + UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:userNotificationTypes + categories:nil]; + [application registerUserNotificationSettings:settings]; + [application registerForRemoteNotifications]; + } else +#endif + { + [application registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | + UIRemoteNotificationTypeAlert | + UIRemoteNotificationTypeSound)]; + } + + return YES; +} + +#pragma mark Push Notifications + +- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { + PFInstallation *currentInstallation = [PFInstallation currentInstallation]; + [currentInstallation setDeviceTokenFromData:deviceToken]; + [currentInstallation saveInBackground]; + + [PFPush subscribeToChannelInBackground:@"" block:^(BOOL succeeded, NSError *error) { + if (succeeded) { + NSLog(@"ParseAppExtensionsStarterProject successfully subscribed to push notifications on the broadcast channel."); + } else { + NSLog(@"ParseAppExtensionsStarterProject failed to subscribe to push notifications on the broadcast channel."); + } + }]; +} + +- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error { + if (error.code == 3010) { + NSLog(@"Push notifications are not supported in the iOS Simulator."); + } else { + // show some alert or otherwise handle the failure to register. + NSLog(@"application:didFailToRegisterForRemoteNotificationsWithError: %@", error); + } +} + +- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { + [PFPush handlePush:userInfo]; + + if (application.applicationState == UIApplicationStateInactive) { + [PFAnalytics trackAppOpenedWithRemoteNotificationPayload:userInfo]; + } +} + +/////////////////////////////////////////////////////////// +// Uncomment this method if you want to use Push Notifications with Background App Refresh +/////////////////////////////////////////////////////////// +//- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { +// if (application.applicationState == UIApplicationStateInactive) { +// [PFAnalytics trackAppOpenedWithRemoteNotificationPayload:userInfo]; +// } +//} + +#pragma mark Facebook SDK Integration + +/////////////////////////////////////////////////////////// +// Uncomment this method if you are using Facebook +/////////////////////////////////////////////////////////// +//- (BOOL)application:(UIApplication *)application +// openURL:(NSURL *)url +// sourceApplication:(NSString *)sourceApplication +// annotation:(id)annotation { +// return [PFFacebookUtils handleOpenURL:url]; +//} + +@end diff --git a/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProjectViewController.h b/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProjectViewController.h new file mode 100644 index 000000000..a462b9e37 --- /dev/null +++ b/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProjectViewController.h @@ -0,0 +1,14 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +@interface ParseAppExtensionsStarterProjectViewController : UIViewController + +@end diff --git a/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProjectViewController.m b/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProjectViewController.m new file mode 100644 index 000000000..5a106b1cf --- /dev/null +++ b/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProjectViewController.m @@ -0,0 +1,36 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "ParseAppExtensionsStarterProjectViewController.h" + +#import + +@implementation ParseAppExtensionsStarterProjectViewController + +#pragma mark - +#pragma mark UIViewController + +// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. +- (void)viewDidLoad { + [super viewDidLoad]; +} + +- (void)didReceiveMemoryWarning { + // Releases the view if it doesn't have a superview. + [super didReceiveMemoryWarning]; + + // Release any cached data, images, etc that aren't in use. +} + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { + // Return YES for supported orientations + return (interfaceOrientation == UIInterfaceOrientationPortrait); +} + +@end diff --git a/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProject/main.m b/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProject/main.m new file mode 100644 index 000000000..3b72b6a4c --- /dev/null +++ b/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProject/main.m @@ -0,0 +1,20 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + + +#import + +#import "ParseAppExtensionsStarterProjectAppDelegate.h" + +int main(int argc, char *argv[]) +{ + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([ParseAppExtensionsStarterProjectAppDelegate class])); + } +} diff --git a/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/Resources/Default-568h@2x.png b/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/Resources/Default-568h@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..f17cfa3980ac8595fb8aef0b710219afbafa9ffe GIT binary patch literal 17091 zcmeHOXc<5Cz1_A|MnM2B=O2%gAD17J=f-v>)c<!AxbJ`8z4zP% z4>!m4Dtamq1g&>=qIp3OS_DDzTqO*`IiCC!`IR?dIyiVZJ2+rHc${!%Bm;tWZ#?Zg z%o*_6WShY8%G9>Q`a7OUyi?@seV|fbub>&@oSHSgPdjU(*Ti59wn)g;R~(oq%X5!E zX@OZl+4sq*IazOCj|q+MdtHCi+53!1p0iW@c$3<8qiF@-k*e5GWACQG**EQ$!Z zpHBI4$?Y}1?s(GUt^}NWJzHz5aPyq1=iQ!&GM7ztit}^Ka?ImbTV6gemq+KLzY$*6 z5OlQ|+qiAFQ~t8kWKyd@sTyNl-5X9Srw7aFwx*8wvh{D{!c$5MzNYi;kC2k1$|-Nv zh?in!rh-26pTC?{8CIc|Fl74Lr#8Xv(XE*+FI|d*iz=PzpD4^Fzv(`K7HspJ$^BZ$ zAA0T>99*zz2s5M*-^I;d=Q@8hh7!L;x1?*7M7p4Vxu3MyDv^tpF`T?uzeB-%o?Hg{#ez&<@dtYgr(k6d$8|tkJ7Q;oYv^y5h2EQv2hv5J~UVl29Cvm+wxrZ!l&VXEftP1i<5@E4+9{bewT)nZ=EZZ2z_>n$oFEU>)L zRw2g|FMQYbGPY4!fZu8phUEJo?ED1xM8hdys0wy52@K>H7}=>Uw5c3ZmrSftCSvfy%kUR zm%Q#yHABo5%%f(XJE!vb+5rPsQ?GlOw>J0A;Im@`FF(DID1g%wjhzx+B)K=WjGCd# z)2rtW&KVV7mz!Nm)g;646V@O18@8H_UV)?h_RgsAFLibVeT*62kl~yk`@MOa)<=Cs zc|{*6pJ=O~20e5;BUn=5ZA@jY-!GYCpq$IlgCTzIJcypepOf1GF=58?7e& zjvUC*6i%zp*6HtrISzgZ%O?f#_%7`^Ge@ zZ5DcO3oZ1lf^l!PyBM$R0-z{Cq`s*p0vO6%r+{b(T8BKZ(?mgOmvto|;^WWvcij(% zaact9Ax{zG+^Xe%qHQm5*2=g4bI=y1M9%y zF|fOc6e1O8tAfR1t$BySVK3T;GINBo!5!iAxiED#mcI6ymh99HR`3zesnL;IyEeTX}ABs6lwuE<)tx0QiR(wjV z9e4~npTqOva3XCzm;y#5OH5*^M2ggMwOnRuO%lhjDke$7#NAoL|E*a0%UW{l?WQ;`Lf+{mu&0K5Xz+rKDjOb{wgIzNH z)x5R(EA9KTnf&EGtzoaV@?VkLE_Z7+Q)cjgOEyEm{4dECOWsemmAA!Im!A&0yO;2jb} z695GSQUNFcP>{}_02BZy$iD3WC;(6Zpa7N+V1b7PD^_Gq084Q3h6UJDK;{In>w|1D z0Z;&-Alpv_pa4KYx-$(x0e}Jk1#mtjuLKUfkZ&Y#f``B%IFb}EoWP+m@{I&Q0f2(E z907m=00mGQ18RLh@e*1dl$RlM0;rcm*3F;*5L7fGD<*OMCjbQi3exfe015yU04RXU zdQi75**X9vn&J-xP`3^0wx!pEz-10_nL~Et3xEOu1po@aX-wqM6>&y>YB4)1;;ojbLbbV-W^iFB1wa3^zCog^LCAReC4K0-?R_2{6 zrP*)4+_uWUy3w5N52M3PW_}MFMP9a~>YLvVZ1D_k*IMQ2QT^fwzoOb(*3gH$%aYWC zkHmcab=va2<#X%jakpJ;<1@F;k__#bwtC&%^D0v(FBh9K&$sK+<}2RJS609D)17$w ztdQP8(eLM8Ka}m_IQ@3wyMKP)l=oM4-?`YS_*P?4V_ORLPxsj&7Ju#kH;>6^Kp?T7~ zl+q?{UOOqV==?+d{=)5s|M~T1mwtH@+Z^$G&eEO9JNP^AX@3jZ*J*!!>lc|1-W%fA z@AOQpXZ_Lt>rxFXrGp*zLPiW@uo_c7C{As>j zWeX)wi+LTp_)@KYZCX{j;H?|1yXT4DnlS(Fr8gyP5|uaX_gLvaW0ScZdnG7o+u{T6 zFI-%d{ls*WuCDa5UJ@|RXv&ejZe}*BMkiWY51&pnRPw(hlykSzvj6e%mYz-GdvzBD zF10?szF_~!jS=?2HyQuPCvARXAe}C}WP|yQ*>5~~=*Nxq8+HHW1~FMDRCP^TcacKuk$ z(U#REVv)D!PhJ*ecH-ELFUrfyV&*)Z)>UCOuS?yd^L@Afk>ihynYPc{^CRwu+JHX+#$@YsC4c|l0tGigsn@jy) zXD($Ouk>H+V(Mr6NQT0S9BFM~V6nkj;1OBOz`zY;a|<&v%$g$sE<{2iN+NuHtdjF{ z^%7I^lT!66atnZ}85nFTtboki)RIJnirk#MVyg;UC9n!BAR8pCucQE0Qj%?}6yY17 z;GAESs$i;TsAr^P$EBd4U{jQmW)z9|8>y;bpKhp88yV>WRp=I1=9MH?=;jqGLkxkL znOgw2D6bgmE1>`MD-sLz4fPE4;U)t$+5r7%<(r?9nO5nNSdwaIWMF8dYhbBsWENs* zW@TV$WolrfkERA;Cs?<0QEFmIeo;t%evVy0W<_dFE{LmOq-O}xi7XG*YNHSG1CpP> z0S0monm8f9mSmGf<&$Si!xJzp$rO3JD?je#E|?4mWvEZEzZv=1*Dpa=tbRDkF3+1fMgw2d^{1RZT`k9I4tcA$3f9%0{ev_H`pH0a~$>gTe~DWM4f D>S|f?5q$_l%JNF zlghwgA=nyvKmT@!h+SuX&=N6wg$VcduA}QigQIs!ORYV|<~e!kTQ9MtFK=k6Jh3wG zTq(_d`{lM({?(11++CKW z9(*L`>#x(6_bs1WKaacZVjG{ib(Umk$F$Y!=AKuXI(fO+lzF~gmo{JVX1=oerJwG^ z(`SYB4vKz1_xho17su(h6W{&w`=-3Vs{78xP9^^Xd7`qll0SF?&s@pg<}I?H{r8W| z?QC~G%Y3+O#=^9kX?pD(p^A&g)ouM0?K%4{XuTF)%dv;eX3vc@{q2eI%n~OiKMc*2 z-ldc_ar4?qiACoh>h~9JH~i19H@o!9o7m=v-*cAkOy0rYc~ARW$i7bd>s!CbeDK~7 zzka7@Vm<4R{$H1Bm@4E0zpR{8TXOHYdwl#_k$Y_SSgS71Zm zFF*UFfxW?g%i29FSkGRvGB;i%_Q^XuJ8#`e$6M=WMFw*JHJWK1*MCAYclXpoQ{+$c z?J8R+d0Nct*u|G>^=s3r(gknbVBI}W{MLl|cQ3suVUwu5VZX;p{~4Ri?bs_pN!u15 zaDUc}7!?>~%AxVFh;Kj8gMUcFVJ~?cea( zoMPMkwnIN|tly~nCpU=6I-#m-+QL&G$_{Z>D9hT$ zFkV*WeVzXx^1`j4TN@WIef6{Pg0k8{`xAC&F714HVb#Ay|5oO$h+iRo<-T=Ri=_23 zm0GP@?Y|ne>b3fReY#2_cPaftu^DB;?i<-4_7_alph3BM}aT(;}S zLXNhqE)k2oJ%94DAhQ$4ZhTQ*UKTUw>9np2t9f1O9-Z&I{f``fWX!aE-ku+EKh!oX zWB&SYvao@b)q`9eAJr4akLFqxhPi&>Dw%!ZY-}CdeZEDWtIMvLoe~Ydxqj7pP0pHA zJB(tly0?p-H4#1kRKu)%$KFHTi&geDEA_o_y!U&bYuR0%+;`C~?f(y1zYfcYULjoj zR^aP?satIy{A!*VFY0Fhx@+&F=Zig_uuTlM+Hn83>`U)QcT2WktZ4WidS2bdTHajh z|2lIi>v*OAVi!|C+eb1KR^&))3j>P{&H|6fVg?3oAe&p5kzv*x31A^|FEb>fB*NFn zDmgz_FEJ%QDOIl`w*aV`fx)K23dqb&ElE_U$j!+swyLmI0;{kBvO&W7N(x{lCE2!0 z5xxNm&iO^D3Z{C7dPYiiTnY*bHbp6ERzWUqQ0+jTtx`rwNr9EVetCJhUb(Seeo?x< zp{1pzzJZaxk&!M?g>G?WUP)qwZeFo6#1NP{E~&-IMVSR9nfZANAafIw@=Hr>m6Sjh z!2!gbC7EdmoAQdG-U511A0(r1sAr%LHyfzc1|(_~lv&|7+n}) z8$_3Ler`cgYH=}8o1H0C3$hrx`Ur$IcIHM<4akD%8vKhgQ-J{jau?i9$YSW~Be7Y4 zEC|(LqYny1q(BA77$`K*#0dp5WH7CL)GdDF49CT(T1~&Rw zWsv*_mUqt2$u9~nNK8%z1qZqix@xdJkqCP%%~0$?lA(66q$I=BdO>MX4mhQ!BJXdjti(0R(9EOCG0%l%)p>F!PCVtq=ND7)q|W2 z3Op>1TmR2fHhWm7#w)|qc-MHd3?mZ@hk(L|@CSe9Zgy*60C8;?8NacEL>&|a1RgNl zRROCJNU(PR%QG=D@?G#1QULK7zcG(091R{OmeE8pniWP%iqZ0Mv{o3cGzCVR3Zo6A z(PrUjvv9OoINC!R?Ldxpn@0x=M#oZs?Sau|;b^mPv{^XXEF5hXjy4NNn}wsz!qH~o zXtQv%SvWd#Hac@QI&(HUb2d72Hac@QIz%$Mv}l+wsM?{(#8unBtmQput*xi4pUXO@ GgeCxlsfZW= literal 0 HcmV?d00001 diff --git a/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/Resources/Info.plist b/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/Resources/Info.plist new file mode 100644 index 000000000..a1e0395bc --- /dev/null +++ b/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/Resources/Info.plist @@ -0,0 +1,38 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + ${PRODUCT_NAME} + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIconFile + + CFBundleIdentifier + com.parse.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.8.0 + CFBundleSignature + ???? + CFBundleVersion + 1.8.0 + LSRequiresIPhoneOS + + NSMainNibFile + MainWindow + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/Resources/en.lproj/InfoPlist.strings b/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/Resources/en.lproj/InfoPlist.strings new file mode 100644 index 000000000..b92732c79 --- /dev/null +++ b/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/Resources/en.lproj/InfoPlist.strings @@ -0,0 +1 @@ +/* Localized versions of Info.plist keys */ diff --git a/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/Resources/en.lproj/MainWindow.xib b/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/Resources/en.lproj/MainWindow.xib new file mode 100644 index 000000000..83e77925d --- /dev/null +++ b/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/Resources/en.lproj/MainWindow.xib @@ -0,0 +1,274 @@ + + + + 1792 + 14F27 + 7706 + 1348.17 + 758.70 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 7703 + + + IBProxyObject + IBUICustomObject + IBUIViewController + IBUIWindow + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + IBCocoaTouchFramework + + + ParseAppExtensionsStarterProjectViewController + + + 1 + 1 + + + IBUIScreenMetrics + IBCocoaTouchFramework + iPhone 4-inch + + YES + + + + + + {320, 568} + {568, 320} + + + 2 + + IBCocoaTouchFramework + NO + + + + 292 + {{0, 20}, {320, 480}} + + + + 1 + MSAxIDEAA + + NO + NO + + + IBUISimulatedFreeformSizeMetricsSentinel + Freeform + + IBCocoaTouchFramework + YES + + + + + + + delegate + + + + 4 + + + + viewController + + + + 11 + + + + window + + + + 16 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + 3 + + + ParseAppExtensionsStarterProject App Delegate + + + -2 + + + + + 10 + + + + + 12 + + + + + + + UIApplication + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + ParseAppExtensionsStarterProjectViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + ParseAppExtensionsStarterProjectAppDelegate + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 16 + + + + + ParseAppExtensionsStarterProjectAppDelegate + NSObject + + ParseAppExtensionsStarterProjectViewController + UIWindow + + + + viewController + ParseAppExtensionsStarterProjectViewController + + + window + UIWindow + + + + IBProjectSource + ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProjectAppDelegate.h + + + + ParseAppExtensionsStarterProjectViewController + UIViewController + + IBProjectSource + ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProjectViewController.h + + + + + + UIApplication + UIResponder + + IBFrameworkSource + UIKit.framework/Headers/UIApplication.h + + + + UIGestureRecognizer + NSObject + + IBFrameworkSource + UIKit.framework/Headers/UIGestureRecognizer.h + + + + UIResponder + NSObject + + IBFrameworkSource + UIKit.framework/Headers/UIResponder.h + + + + UISearchBar + UIView + + IBFrameworkSource + UIKit.framework/Headers/UISearchBar.h + + + + UISearchDisplayController + NSObject + + IBFrameworkSource + UIKit.framework/Headers/UISearchDisplayController.h + + + + UIView + UIResponder + + IBFrameworkSource + UIKit.framework/Headers/UIView.h + + + + UIViewController + UIResponder + + IBFrameworkSource + UIKit.framework/Headers/UIViewController.h + + + + UIWindow + UIView + + IBFrameworkSource + UIKit.framework/Headers/UIWindow.h + + + + + 0 + IBCocoaTouchFramework + NO + + com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 + + + YES + 3 + + diff --git a/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/Resources/en.lproj/ParseAppExtensionsStarterProjectViewController.xib b/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/Resources/en.lproj/ParseAppExtensionsStarterProjectViewController.xib new file mode 100644 index 000000000..ce7ce0726 --- /dev/null +++ b/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/Resources/en.lproj/ParseAppExtensionsStarterProjectViewController.xib @@ -0,0 +1,227 @@ + + + + 1792 + 14F27 + 7706 + 1348.17 + 758.70 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 7703 + + + IBProxyObject + IBUILabel + IBUIView + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 274 + + + + 292 + {{65, 159}, {191, 21}} + + + NO + YES + 7 + NO + IBCocoaTouchFramework + You're all set with Parse! + + 1 + MCAwIDAAA + darkTextColor + + + 1 + 10 + + Helvetica + Helvetica + 0 + 17 + + + Helvetica + 17 + 16 + + YES + + + {{0, 20}, {320, 460}} + + + + 3 + MC43NQA + + 2 + + + NO + + + IBUISimulatedFreeformSizeMetricsSentinel + Freeform + + IBCocoaTouchFramework + + + + + + + view + + + + 7 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 6 + + + + + + + + 8 + + + + + + + ParseAppExtensionsStarterProjectViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 8 + + + + + ParseAppExtensionsStarterProjectViewController + UIViewController + + IBProjectSource + ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProjectViewController.h + + + + + + UIGestureRecognizer + NSObject + + IBFrameworkSource + UIKit.framework/Headers/UIGestureRecognizer.h + + + + UILabel + UIView + + IBFrameworkSource + UIKit.framework/Headers/UILabel.h + + + + UIResponder + NSObject + + IBFrameworkSource + UIKit.framework/Headers/UIResponder.h + + + + UISearchBar + UIView + + IBFrameworkSource + UIKit.framework/Headers/UISearchBar.h + + + + UISearchDisplayController + NSObject + + IBFrameworkSource + UIKit.framework/Headers/UISearchDisplayController.h + + + + UIView + UIResponder + + IBFrameworkSource + UIKit.framework/Headers/UIView.h + + + + UIViewController + UIResponder + + IBFrameworkSource + UIKit.framework/Headers/UIViewController.h + + + + + 0 + IBCocoaTouchFramework + NO + + com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 + + + YES + 3 + + From acb90b955fc60799f859be3384aced89df452f88 Mon Sep 17 00:00:00 2001 From: Kashif Rasul Date: Sat, 29 Aug 2015 21:19:32 +0200 Subject: [PATCH 2/4] added initial project to rakefile --- Rakefile | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Rakefile b/Rakefile index 6b427e428..1d20ef9ca 100644 --- a/Rakefile +++ b/Rakefile @@ -27,7 +27,8 @@ module Constants File.join(script_folder, 'ParseStarterProject', 'iOS', 'ParseStarterProject', 'Resources', 'Info.plist'), File.join(script_folder, 'ParseStarterProject', 'iOS', 'ParseStarterProject-Swift', 'Resources', 'Info.plist'), File.join(script_folder, 'ParseStarterProject', 'OSX', 'ParseOSXStarterProject', 'Resources', 'Info.plist'), - File.join(script_folder, 'ParseStarterProject', 'OSX', 'ParseOSXStarterProject-Swift', 'Resources', 'Info.plist') + File.join(script_folder, 'ParseStarterProject', 'OSX', 'ParseOSXStarterProject-Swift', 'Resources', 'Info.plist'), + File.join(script_folder, 'ParseStarterProject', 'iOS', 'ParseAppExtensionsStarterProject', 'Resources', 'Info.plist') ] def self.current_version @@ -136,7 +137,8 @@ namespace :package do ios_starters = [ File.join(script_folder, 'ParseStarterProject', 'iOS', 'ParseStarterProject'), - File.join(script_folder, 'ParseStarterProject', 'iOS', 'ParseStarterProject-Swift') + File.join(script_folder, 'ParseStarterProject', 'iOS', 'ParseStarterProject-Swift'), + File.join(script_folder, 'ParseStarterProject', 'iOS', 'ParseAppExtensionsStarterProject') ] ios_framework_archive = File.join(release_folder, package_ios_name) make_starter_package(release_folder, ios_starters, ios_framework_archive, package_starter_ios_name) @@ -254,7 +256,8 @@ namespace :test do task :starters do |_| results = [] ios_schemes = ['ParseStarterProject', - 'ParseStarterProject-Swift'] + 'ParseStarterProject-Swift', + 'ParseAppExtensionsStarterProject'] osx_schemes = ['ParseOSXStarterProject', 'ParseOSXStarterProject-Swift'] From 44e2cd38bad771159743e736b4f8db38b419a76f Mon Sep 17 00:00:00 2001 From: Kashif Rasul Date: Sat, 29 Aug 2015 22:01:48 +0200 Subject: [PATCH 3/4] fixed scheme not found error --- ...Project.xcscheme => ParseAppExtensionsStarterProject.xcscheme} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProject.xcodeproj/xcshareddata/xcschemes/{ParseStarterProject.xcscheme => ParseAppExtensionsStarterProject.xcscheme} (100%) diff --git a/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProject.xcodeproj/xcshareddata/xcschemes/ParseStarterProject.xcscheme b/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProject.xcodeproj/xcshareddata/xcschemes/ParseAppExtensionsStarterProject.xcscheme similarity index 100% rename from ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProject.xcodeproj/xcshareddata/xcschemes/ParseStarterProject.xcscheme rename to ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProject.xcodeproj/xcshareddata/xcschemes/ParseAppExtensionsStarterProject.xcscheme From ba5619022adbaa23957e8e20f36d0d0a0dc0a85b Mon Sep 17 00:00:00 2001 From: Kashif Rasul Date: Sun, 30 Aug 2015 21:38:07 +0200 Subject: [PATCH 4/4] Added ParseTodayStarterProject extension --- .../project.pbxproj | 197 +++++++++++++++++- .../ParseTodayStarterProject/Info.plist | 33 +++ .../MainInterface.storyboard | 50 +++++ .../TodayViewController.h | 14 ++ .../TodayViewController.m | 39 ++++ 5 files changed, 331 insertions(+), 2 deletions(-) create mode 100644 ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseTodayStarterProject/Info.plist create mode 100644 ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseTodayStarterProject/MainInterface.storyboard create mode 100644 ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseTodayStarterProject/TodayViewController.h create mode 100644 ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseTodayStarterProject/TodayViewController.m diff --git a/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProject.xcodeproj/project.pbxproj b/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProject.xcodeproj/project.pbxproj index 14a34681d..a029b372f 100644 --- a/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProject.xcodeproj/project.pbxproj +++ b/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProject.xcodeproj/project.pbxproj @@ -35,6 +35,10 @@ 4BE2434F1B9233CC007AC875 /* ParseAppExtensionsStarterProjectViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BE2434C1B9233CC007AC875 /* ParseAppExtensionsStarterProjectViewController.m */; }; 4BE243521B923416007AC875 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4BE243501B923416007AC875 /* MainWindow.xib */; }; 4BE243551B923426007AC875 /* ParseAppExtensionsStarterProjectViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4BE243531B923426007AC875 /* ParseAppExtensionsStarterProjectViewController.xib */; }; + 4BFAF88B1B938FD500E66E3D /* NotificationCenter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4BFAF88A1B938FD500E66E3D /* NotificationCenter.framework */; }; + 4BFAF8911B938FD500E66E3D /* TodayViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BFAF8901B938FD500E66E3D /* TodayViewController.m */; }; + 4BFAF8931B938FD500E66E3D /* MainInterface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4BFAF8921B938FD500E66E3D /* MainInterface.storyboard */; }; + 4BFAF8961B938FD500E66E3D /* ParseTodayStarterProject.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 4BFAF8891B938FD500E66E3D /* ParseTodayStarterProject.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; 743D7B6D157DA60100084B67 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 743D7B6C157DA60100084B67 /* CoreGraphics.framework */; }; 814C3ABD1B69864600E307BB /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 814C3AB21B69864600E307BB /* Default-568h@2x.png */; }; 814C3ABE1B69864600E307BB /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = 814C3AB31B69864600E307BB /* Default.png */; }; @@ -48,6 +52,13 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ + 4BFAF8941B938FD500E66E3D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 09ABC06413A1D52D009C3FCF /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4BFAF8881B938FD500E66E3D; + remoteInfo = ParseTodayStarterProject; + }; 814C3AEB1B69A8B000E307BB /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 09ABC06413A1D52D009C3FCF /* Project object */; @@ -57,12 +68,26 @@ }; /* End PBXContainerItemProxy section */ +/* Begin PBXCopyFilesBuildPhase section */ + 4BFAF89A1B938FD500E66E3D /* Embed App Extensions */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 13; + files = ( + 4BFAF8961B938FD500E66E3D /* ParseTodayStarterProject.appex in Embed App Extensions */, + ); + name = "Embed App Extensions"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + /* Begin PBXFileReference section */ 092354B213A1D7EB00DA740F /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = System/Library/Frameworks/CFNetwork.framework; sourceTree = SDKROOT; }; 092354B413A1D7F000DA740F /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; }; 095ACE8513C68EA300566243 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; 099CCEAC13F9E3760039A464 /* libz.1.1.3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.1.1.3.dylib; path = usr/lib/libz.1.1.3.dylib; sourceTree = SDKROOT; }; - 09ABC06D13A1D52D009C3FCF /* ParseAppExteStarterProject.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ParseAppExtensionsStarterProject.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 09ABC06D13A1D52D009C3FCF /* ParseAppExtensionsStarterProject.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ParseAppExtensionsStarterProject.app; sourceTree = BUILT_PRODUCTS_DIR; }; 09ABC07113A1D52D009C3FCF /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 09ABC07313A1D52D009C3FCF /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 09BEF34B13D51C3F001BBCDB /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; }; @@ -75,6 +100,12 @@ 4BE2434C1B9233CC007AC875 /* ParseAppExtensionsStarterProjectViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ParseAppExtensionsStarterProjectViewController.m; path = ParseAppExtensionsStarterProject/ParseAppExtensionsStarterProjectViewController.m; sourceTree = SOURCE_ROOT; }; 4BE243511B923416007AC875 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = Resources/en.lproj/MainWindow.xib; sourceTree = SOURCE_ROOT; }; 4BE243541B923426007AC875 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = Resources/en.lproj/ParseAppExtensionsStarterProjectViewController.xib; sourceTree = SOURCE_ROOT; }; + 4BFAF8891B938FD500E66E3D /* ParseTodayStarterProject.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = ParseTodayStarterProject.appex; sourceTree = BUILT_PRODUCTS_DIR; }; + 4BFAF88A1B938FD500E66E3D /* NotificationCenter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = NotificationCenter.framework; path = System/Library/Frameworks/NotificationCenter.framework; sourceTree = SDKROOT; }; + 4BFAF88E1B938FD500E66E3D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 4BFAF88F1B938FD500E66E3D /* TodayViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TodayViewController.h; sourceTree = ""; }; + 4BFAF8901B938FD500E66E3D /* TodayViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TodayViewController.m; sourceTree = ""; }; + 4BFAF8921B938FD500E66E3D /* MainInterface.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = MainInterface.storyboard; sourceTree = ""; }; 6332375315E438E900AE2736 /* libsqlite3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libsqlite3.dylib; path = usr/lib/libsqlite3.dylib; sourceTree = SDKROOT; }; 6372FF521613CC3C002132AF /* Accounts.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Accounts.framework; path = System/Library/Frameworks/Accounts.framework; sourceTree = SDKROOT; }; 6372FF551613CC42002132AF /* Social.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Social.framework; path = System/Library/Frameworks/Social.framework; sourceTree = SDKROOT; }; @@ -114,6 +145,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 4BFAF8861B938FD500E66E3D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 4BFAF88B1B938FD500E66E3D /* NotificationCenter.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -122,6 +161,7 @@ children = ( 09ABC07713A1D52D009C3FCF /* ParseAppExtensionsStarterProject */, 814C3AB11B69864600E307BB /* Resources */, + 4BFAF88C1B938FD500E66E3D /* ParseTodayStarterProject */, 09ABC07013A1D52D009C3FCF /* Frameworks */, 09ABC06E13A1D52D009C3FCF /* Products */, ); @@ -131,6 +171,7 @@ isa = PBXGroup; children = ( 09ABC06D13A1D52D009C3FCF /* ParseAppExtensionsStarterProject.app */, + 4BFAF8891B938FD500E66E3D /* ParseTodayStarterProject.appex */, ); name = Products; sourceTree = ""; @@ -141,6 +182,7 @@ 81DDFD1719B4A60300BE649C /* Parse.framework */, 817AD67B196B009E0014C796 /* Bolts.framework */, 81A6CA5E1A2EA0B800297C39 /* System Frameworks */, + 4BFAF88A1B938FD500E66E3D /* NotificationCenter.framework */, ); name = Frameworks; sourceTree = ""; @@ -156,7 +198,6 @@ 4BE243531B923426007AC875 /* ParseAppExtensionsStarterProjectViewController.xib */, 09ABC07813A1D52D009C3FCF /* Other Sources */, ); - name = ParseAppExtensionsStarterProject; path = ParseAppExtensionsStarterProject; sourceTree = ""; }; @@ -168,6 +209,25 @@ name = "Other Sources"; sourceTree = ""; }; + 4BFAF88C1B938FD500E66E3D /* ParseTodayStarterProject */ = { + isa = PBXGroup; + children = ( + 4BFAF88F1B938FD500E66E3D /* TodayViewController.h */, + 4BFAF8901B938FD500E66E3D /* TodayViewController.m */, + 4BFAF8921B938FD500E66E3D /* MainInterface.storyboard */, + 4BFAF88D1B938FD500E66E3D /* Supporting Files */, + ); + path = ParseTodayStarterProject; + sourceTree = ""; + }; + 4BFAF88D1B938FD500E66E3D /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 4BFAF88E1B938FD500E66E3D /* Info.plist */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; 814C3AB11B69864600E307BB /* Resources */ = { isa = PBXGroup; children = ( @@ -214,17 +274,36 @@ 09ABC06A13A1D52D009C3FCF /* Frameworks */, 09ABC06B13A1D52D009C3FCF /* Resources */, 81A6CA5F1A2EA3D600297C39 /* Upload Symbol Files */, + 4BFAF89A1B938FD500E66E3D /* Embed App Extensions */, ); buildRules = ( ); dependencies = ( 814C3AEC1B69A8B000E307BB /* PBXTargetDependency */, + 4BFAF8951B938FD500E66E3D /* PBXTargetDependency */, ); name = ParseAppExtensionsStarterProject; productName = ParseAppExtensionsStarterProject; productReference = 09ABC06D13A1D52D009C3FCF /* ParseAppExtensionsStarterProject.app */; productType = "com.apple.product-type.application"; }; + 4BFAF8881B938FD500E66E3D /* ParseTodayStarterProject */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4BFAF8991B938FD500E66E3D /* Build configuration list for PBXNativeTarget "ParseTodayStarterProject" */; + buildPhases = ( + 4BFAF8851B938FD500E66E3D /* Sources */, + 4BFAF8861B938FD500E66E3D /* Frameworks */, + 4BFAF8871B938FD500E66E3D /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = ParseTodayStarterProject; + productName = ParseTodayStarterProject; + productReference = 4BFAF8891B938FD500E66E3D /* ParseTodayStarterProject.appex */; + productType = "com.apple.product-type.app-extension"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -233,6 +312,9 @@ attributes = { LastUpgradeCheck = 0510; TargetAttributes = { + 4BFAF8881B938FD500E66E3D = { + CreatedOnToolsVersion = 6.4; + }; 814C3AE61B69A87F00E307BB = { CreatedOnToolsVersion = 6.4; }; @@ -252,6 +334,7 @@ targets = ( 09ABC06C13A1D52D009C3FCF /* ParseAppExtensionsStarterProject */, 814C3AE61B69A87F00E307BB /* Bootstrap */, + 4BFAF8881B938FD500E66E3D /* ParseTodayStarterProject */, ); }; /* End PBXProject section */ @@ -270,6 +353,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 4BFAF8871B938FD500E66E3D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4BFAF8931B938FD500E66E3D /* MainInterface.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ @@ -313,9 +404,22 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 4BFAF8851B938FD500E66E3D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4BFAF8911B938FD500E66E3D /* TodayViewController.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ + 4BFAF8951B938FD500E66E3D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 4BFAF8881B938FD500E66E3D /* ParseTodayStarterProject */; + targetProxy = 4BFAF8941B938FD500E66E3D /* PBXContainerItemProxy */; + }; 814C3AEC1B69A8B000E307BB /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 814C3AE61B69A87F00E307BB /* Bootstrap */; @@ -412,6 +516,87 @@ }; name = Release; }; + 4BFAF8971B938FD500E66E3D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + INFOPLIST_FILE = ParseTodayStarterProject/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.4; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; + MTL_ENABLE_DEBUG_INFO = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + 4BFAF8981B938FD500E66E3D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + INFOPLIST_FILE = ParseTodayStarterProject/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.4; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; 814C3AE71B69A87F00E307BB /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -447,6 +632,14 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 4BFAF8991B938FD500E66E3D /* Build configuration list for PBXNativeTarget "ParseTodayStarterProject" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4BFAF8971B938FD500E66E3D /* Debug */, + 4BFAF8981B938FD500E66E3D /* Release */, + ); + defaultConfigurationIsVisible = 0; + }; 814C3AE91B69A87F00E307BB /* Build configuration list for PBXAggregateTarget "Bootstrap" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseTodayStarterProject/Info.plist b/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseTodayStarterProject/Info.plist new file mode 100644 index 000000000..c985b89c5 --- /dev/null +++ b/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseTodayStarterProject/Info.plist @@ -0,0 +1,33 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + ParseTodayStarterProject + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + com.parse.ParseAppExtensionsStarterProject.$(PRODUCT_NAME:rfc1034identifier) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + XPC! + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + NSExtension + + NSExtensionMainStoryboard + MainInterface + NSExtensionPointIdentifier + com.apple.widget-extension + + + diff --git a/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseTodayStarterProject/MainInterface.storyboard b/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseTodayStarterProject/MainInterface.storyboard new file mode 100644 index 000000000..1c9c06280 --- /dev/null +++ b/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseTodayStarterProject/MainInterface.storyboard @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseTodayStarterProject/TodayViewController.h b/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseTodayStarterProject/TodayViewController.h new file mode 100644 index 000000000..330d21375 --- /dev/null +++ b/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseTodayStarterProject/TodayViewController.h @@ -0,0 +1,14 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import + +@interface TodayViewController : UIViewController + +@end diff --git a/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseTodayStarterProject/TodayViewController.m b/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseTodayStarterProject/TodayViewController.m new file mode 100644 index 000000000..c47226c66 --- /dev/null +++ b/ParseStarterProject/iOS/ParseAppExtensionsStarterProject/ParseTodayStarterProject/TodayViewController.m @@ -0,0 +1,39 @@ +/** + * Copyright (c) 2015-present, Parse, LLC. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ + +#import "TodayViewController.h" +#import + +@interface TodayViewController () + +@end + +@implementation TodayViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + // Do any additional setup after loading the view from its nib. +} + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +- (void)widgetPerformUpdateWithCompletionHandler:(void (^)(NCUpdateResult))completionHandler { + // Perform any setup necessary in order to update the view. + + // If an error is encountered, use NCUpdateResultFailed + // If there's no update required, use NCUpdateResultNoData + // If there's an update, use NCUpdateResultNewData + + completionHandler(NCUpdateResultNewData); +} + +@end