SlideShare a Scribd company logo
1 of 110
Download to read offline
Whatā€™s new in iOS4
    Paul Ardeleanu
       @pardel




                     SkillsMatter - August 12th 2010
SkillsMatter - August 12th 2010




What was missing?

Multitasking
Flash




                                   http://pardel.net
SkillsMatter - August 12th 2010




Whatā€™s new in iOS4?

Multitasking
Local Notiļ¬cations
iAd
Game Center
New Frameworks & APIs



                                       http://pardel.net
SkillsMatter - August 12th 2010




1. Multitasking



                                 http://pardel.net
SkillsMatter - August 12th 2010




1. Multitasking   ... of a different kind




                                                 http://pardel.net
SkillsMatter - August 12th 2010




Multitasking




                              http://pardel.net
SkillsMatter - August 12th 2010




Multitasking

 Fast app switching
 Task Completion
 Background Audio
 Navigation & Location tracking
 VoIP



                                                 http://pardel.net
SkillsMatter - August 12th 2010




Fast App Switching

    Running




    Not running


                                    http://pardel.net
SkillsMatter - August 12th 2010




Fast App Switching
                  Active
    Running
                  Inactive




    Not running


                                            http://pardel.net
SkillsMatter - August 12th 2010




Fast App Switching
                  Active
    Running                  Running
                  Inactive




                             Background




    Not running              Not running


                                                     http://pardel.net
SkillsMatter - August 12th 2010




Fast App Switching
                   Active
    Running                   Running
                   Inactive




                   Running
                              Background
                  Suspended




    Not running               Not running


                                                      http://pardel.net
SkillsMatter - August 12th 2010




App Life Cycle
     Active
                       Foreground



     Inactive




         Not running                               http://pardel.net
SkillsMatter - August 12th 2010




App Life Cycle
     Active
                       Foreground   didFinishLaunchingWithOptions:




     Inactive




         Not running                                      http://pardel.net
SkillsMatter - August 12th 2010




App Life Cycle
     Active
                       Foreground   didFinishLaunchingWithOptions:


                                    applicationDidBecomeActive:


     Inactive




         Not running                                      http://pardel.net
SkillsMatter - August 12th 2010




App Life Cycle
     Active
                       Foreground   didFinishLaunchingWithOptions:


                                    applicationDidBecomeActive:
                                    applicationDidResignActive:

     Inactive




         Not running                                      http://pardel.net
SkillsMatter - August 12th 2010




App Life Cycle
     Active
                       Foreground   didFinishLaunchingWithOptions:


                                    applicationDidBecomeActive:
                                    applicationDidResignActive:

     Inactive
                                    applicationDidTerminate:




         Not running                                      http://pardel.net
SkillsMatter - August 12th 2010




App Life Cycle
     Active
                       Foreground   didFinishLaunchingWithOptions:


                                    applicationDidBecomeActive:
                                    applicationDidResignActive:

     Inactive
                                    applicationDidTerminate:




         Not running                                      http://pardel.net
SkillsMatter - August 12th 2010




App Life Cycle
     Active
                       Foreground   didFinishLaunchingWithOptions:


                                    applicationDidBecomeActive:
                                    applicationDidResignActive:

     Inactive
                                    applicationDidTerminate:




         Not running                                      http://pardel.net
SkillsMatter - August 12th 2010




App Life Cycle
     Active
                       Foreground   didFinishLaunchingWithOptions:


                                    applicationDidBecomeActive:
                                    applicationDidResignActive:

     Inactive
                                    applicationDidTerminate:




                       Background
           Running



          Suspended




         Not running                                      http://pardel.net
SkillsMatter - August 12th 2010




App Life Cycle
     Active
                       Foreground   didFinishLaunchingWithOptions:


                                    applicationDidBecomeActive:
                                    applicationDidResignActive:

     Inactive
                                    applicationDidTerminate:




                                    applicationDidResignActive:
                       Background
           Running



          Suspended




         Not running                                      http://pardel.net
SkillsMatter - August 12th 2010




App Life Cycle
     Active
                       Foreground   didFinishLaunchingWithOptions:


                                    applicationDidBecomeActive:
                                    applicationDidResignActive:

     Inactive
                                    applicationDidTerminate:




                       Background   applicationDidEnterBackground:
           Running



          Suspended




         Not running                                      http://pardel.net
SkillsMatter - August 12th 2010




App Life Cycle
     Active
                       Foreground   didFinishLaunchingWithOptions:


                                    applicationDidBecomeActive:
                                    applicationDidResignActive:

     Inactive
                                    applicationDidTerminate:




                       Background   applicationDidEnterBackground:
           Running
                                    applicationDidEnterForeground:



          Suspended




         Not running                                      http://pardel.net
SkillsMatter - August 12th 2010




App Life Cycle
     Active
                       Foreground   didFinishLaunchingWithOptions:


                                    applicationDidBecomeActive:
                                    applicationDidResignActive:

     Inactive
                                    applicationDidTerminate:




                       Background   applicationDidEnterBackground:
           Running
                                    applicationDidEnterForeground:



          Suspended




         Not running                                      http://pardel.net
SkillsMatter - August 12th 2010




App Life Cycle
     Active
                       Foreground   didFinishLaunchingWithOptions:


                                    applicationDidBecomeActive:
                                    applicationDidResignActive:

     Inactive
                                    applicationDidTerminate:




                       Background   applicationDidEnterBackground:
           Running
                                    applicationDidEnterForeground:



          Suspended




         Not running                                      http://pardel.net
SkillsMatter - August 12th 2010




App Life Cycle
     Active
                       Foreground   didFinishLaunchingWithOptions:


                                    applicationDidBecomeActive:
                                    applicationDidResignActive:

     Inactive
                                    applicationDidTerminate:




                       Background   applicationDidEnterBackground:
           Running
                                    applicationDidEnterForeground:



          Suspended




         Not running                                      http://pardel.net
SkillsMatter - August 12th 2010




UIApplicationDelegate Callbacks
     //
     //   MyAppDelegate.m
     //


     - (void)applicationWillResignActive:(UIApplication *)application

     - (void)applicationDidEnterBackground:(UIApplication *)application




     - (void)applicationWillEnterForeground:(UIApplication *)application

     - (void)applicationDidBecomeActive:(UIApplication *)application


     - (void)applicationWillTerminate:(UIApplication *)application




                UIApplicationDidEnterBackgroundNotiļ¬cation
                UIApplicationDidEnterForegroundNotiļ¬cation


                                                                                       http://pardel.net
SkillsMatter - August 12th 2010




UIApplicationDelegate Callbacks
     //
     //   MyAppDelegate.m
     //


     - (void)applicationWillResignActive:(UIApplication *)application

     - (void)applicationDidEnterBackground:(UIApplication *)application




     - (void)applicationWillEnterForeground:(UIApplication *)application

     - (void)applicationDidBecomeActive:(UIApplication *)application


     - (void)applicationWillTerminate:(UIApplication *)application




                UIApplicationDidEnterBackgroundNotiļ¬cation
                UIApplicationDidEnterForegroundNotiļ¬cation


                               Demo                                                    http://pardel.net
SkillsMatter - August 12th 2010




UIApplication
typedef enum {
	 UIApplicationStateActive,
	 UIApplicationStateInactive,
	 UIApplicationStateBackground
} UIApplicationState;




@property(nonatomic,readonly) UIApplicationState applicationState




[[UIApplication sharedApplication] applicationState]




                                                                                   http://pardel.net
SkillsMatter - August 12th 2010




Best practices
     Active
                       Foreground



     Inactive                       applicationDidEnterForeground:




                       Background   applicationDidEnterBackground:
           Running



          Suspended




         Not running                                      http://pardel.net
SkillsMatter - August 12th 2010




Best practices
     Active
                       Foreground



     Inactive                       applicationDidEnterForeground:




                       Background   applicationDidEnterBackground:
           Running                    āœ¦   save state
                                      āœ¦   minimise memory usage
                                      āœ¦   change the UI accordingly
                                      āœ¦   stop Bonjour & networking
                                      āœ¦   stop shared system data
          Suspended                       access & GPU




         Not running                                         http://pardel.net
SkillsMatter - August 12th 2010




Best practices
     Active
                       Foreground



     Inactive                       applicationDidEnterForeground:




                       Background   applicationDidEnterBackground:
           Running                    āœ¦   save state
                                      āœ¦   minimise memory usage
                                      āœ¦   change the UI accordingly
                                      āœ¦   stop Bonjour & networking
                                      āœ¦   stop shared system data
          Suspended                       access & GPU



                                           your app can be
         Not running                       terminated at any time
                                                             http://pardel.net
SkillsMatter - August 12th 2010




No Multitasking




         UIApplicationExitsOnSuspend
                                                      http://pardel.net
SkillsMatter - August 12th 2010




App Life Cycle
     Active
                       Foreground



     Inactive




                       Background
           Running



          Suspended




         Not running                               http://pardel.net
SkillsMatter - August 12th 2010




App Life Cycle
     Active
                       Foreground



     Inactive




                       Background
           Running



          Suspended




         Not running                               http://pardel.net
SkillsMatter - August 12th 2010




App Life Cycle
     Active
                       Foreground



     Inactive




                       Background
           Running



          Suspended




         Not running                               http://pardel.net
SkillsMatter - August 12th 2010




App Life Cycle
     Active
                       Foreground



     Inactive




                       Background
           Running                  applicationDidEnterBackground:




          Suspended




         Not running                                     http://pardel.net
SkillsMatter - August 12th 2010




App Life Cycle
     Active
                       Foreground



     Inactive




                       Background
           Running                  applicationDidEnterBackground:

                                    applicationDidTerminate:


          Suspended




         Not running                                     http://pardel.net
SkillsMatter - August 12th 2010




Background Services

Task completion
Background Audio
VoIP
Background Location




                                     http://pardel.net
SkillsMatter - August 12th 2010




Task completion
    Active
             Foreground



  Inactive




                               Background




                 Not running
                                               http://pardel.net
SkillsMatter - August 12th 2010




Task completion
    Active
             Foreground



  Inactive




                               Background
                    Running




                 Not running
                                               http://pardel.net
SkillsMatter - August 12th 2010




Task completion
    Active
             Foreground



  Inactive




                               Background
                    Running




                 Not running
                                               http://pardel.net
SkillsMatter - August 12th 2010




Task completion
    Active
             Foreground



  Inactive




                               Background
                    Running




                               Suspended



                 Not running
                                                 http://pardel.net
SkillsMatter - August 12th 2010




Task completion
    Active
             Foreground



  Inactive




                               Background
                    Running




                 Not running
                                               http://pardel.net
SkillsMatter - August 12th 2010




Task completion
UIApplication
  - (UIBackgroundTaskIdentifier)beginBackgroundTaskWithExpirationHandler:
  (void(^)(void))handler;
  - (void)endBackgroundTask:(UIBackgroundTaskIdentifier)identifier;

  @property(nonatomic,readonly) NSTimeInterval backgroundTimeRemaining;




                                                                                http://pardel.net
SkillsMatter - August 12th 2010




Task completion
UIApplication
  - (UIBackgroundTaskIdentifier)beginBackgroundTaskWithExpirationHandler:
  (void(^)(void))handler;
  - (void)endBackgroundTask:(UIBackgroundTaskIdentifier)identifier;

  @property(nonatomic,readonly) NSTimeInterval backgroundTimeRemaining;


  typedef NSUInteger UIBackgroundTaskIdentiļ¬er;




                                                                                http://pardel.net
SkillsMatter - August 12th 2010




Task completion
UIApplication
  - (UIBackgroundTaskIdentifier)beginBackgroundTaskWithExpirationHandler:
  (void(^)(void))handler;
  - (void)endBackgroundTask:(UIBackgroundTaskIdentifier)identifier;

  @property(nonatomic,readonly) NSTimeInterval backgroundTimeRemaining;


  typedef NSUInteger UIBackgroundTaskIdentiļ¬er;




  self.bgTaskId = [app beginBackgroundTaskWithExpirationHandler: ^{
      [self stopLongTask];
  }];
  ...
  [[UIApplication sharedApplication] endBackgroundTask:self.bgTaskId];




                                                                                http://pardel.net
SkillsMatter - August 12th 2010




Background Services

Task completion
Background Audio
VoIP
Background Location




                                     http://pardel.net
SkillsMatter - August 12th 2010




Background Services




                                     http://pardel.net
SkillsMatter - August 12th 2010




App Life Cycle
    Active
             Foreground



  Inactive




                               Background




                 Not running
                                               http://pardel.net
SkillsMatter - August 12th 2010




App Life Cycle
    Active
             Foreground



  Inactive




                               Background
               Running




                 Not running
                                               http://pardel.net
SkillsMatter - August 12th 2010




App Life Cycle
                                  AVAudioSession


    Active
             Foreground



  Inactive                     AVAudioSessionDelegate




                                         Background
               Running




                 Not running
                                                            http://pardel.net
SkillsMatter - August 12th 2010




App Life Cycle
                                  AVAudioSession


    Active
             Foreground



  Inactive                     AVAudioSessionDelegate




                                         Background
               Running




                 Not running
                                                            http://pardel.net
SkillsMatter - August 12th 2010




App Life Cycle
                                            AVAudioSession


    Active
             Foreground



  Inactive                               AVAudioSessionDelegate



                beginInteruption

                                                   Background
               Running




                             Suspended



                 Not running
                                                                      http://pardel.net
SkillsMatter - August 12th 2010




App Life Cycle
                                            AVAudioSession


    Active
             Foreground



  Inactive                               AVAudioSessionDelegate



                beginInteruption

                                                   Background
               Running




                             Suspended



                 Not running
                                                                      http://pardel.net
SkillsMatter - August 12th 2010




App Life Cycle
                                             AVAudioSession


    Active
             Foreground

                                                            endInteruption


  Inactive                                AVAudioSessionDelegate



                beginInteruption

                                                    Background
               Running                   Running




                             Suspended



                 Not running
                                                                       http://pardel.net
SkillsMatter - August 12th 2010




App Life Cycle
                                                 AVAudioSession


    Active
             Foreground



  Inactive                                   AVAudioSessionDelegate



                beginInteruption   endInterruptionWithFlags:

                                                         Background
               Running                     Running




                             Suspended



                 Not running
                                                                              http://pardel.net
SkillsMatter - August 12th 2010




Background Location Services


Turn by turn directions

Location tracking
  āœ¦   Signiļ¬cant location changing
  āœ¦   Region monitoring (iPhone4 only)




                                                        http://pardel.net
SkillsMatter - August 12th 2010




Turn by turn directions
 locationManager = [[CLLocationManager alloc] init];
 locationManager.delegate = self;
 locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
 [locationManager startUpdatingLocation];




                                                                                http://pardel.net
SkillsMatter - August 12th 2010




Turn by turn directions
 locationManager = [[CLLocationManager alloc] init];
 locationManager.delegate = self;
 locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
 [locationManager startUpdatingLocation];




 extern   const   CLLocationAccuracy   kCLLocationAccuracyBestForNavigation;
 extern   const   CLLocationAccuracy   kCLLocationAccuracyBest;
 extern   const   CLLocationAccuracy   kCLLocationAccuracyNearestTenMeters;
 extern   const   CLLocationAccuracy   kCLLocationAccuracyHundredMeters;
 extern   const   CLLocationAccuracy   kCLLocationAccuracyKilometer;
 extern   const   CLLocationAccuracy   kCLLocationAccuracyThreeKilometers;




                                                                                      http://pardel.net
SkillsMatter - August 12th 2010




Turn by turn directions
 locationManager = [[CLLocationManager alloc] init];
 locationManager.delegate = self;
 locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
 [locationManager startUpdatingLocation];




 extern   const   CLLocationAccuracy    kCLLocationAccuracyBestForNavigation;
 extern   const   CLLocationAccuracy    kCLLocationAccuracyBest;
 extern   const   CLLocationAccuracy    kCLLocationAccuracyNearestTenMeters;
 extern   const   CLLocationAccuracy    kCLLocationAccuracyHundredMeters;
 extern   const   CLLocationAccuracy    kCLLocationAccuracyKilometer;
 extern   const   CLLocationAccuracy    kCLLocationAccuracyThreeKilometers;



 kCLLocationAccuracyBestForNavigation
 Use the highest possible accuracy and combine it with additional sensor data. This level of
 accuracy is intended for use in navigation applications that require precise position
 information at all times and are intended to be used only while the device is plugged in.



                                                                                               http://pardel.net
SkillsMatter - August 12th 2010




Location tracking
a) Signiļ¬cant location changing




                                                 http://pardel.net
SkillsMatter - August 12th 2010




Location tracking
a) Signiļ¬cant location changing




                                                 http://pardel.net
SkillsMatter - August 12th 2010




Location tracking
a) Signiļ¬cant location changing




                                                 http://pardel.net
SkillsMatter - August 12th 2010




Location tracking
a) Signiļ¬cant location changing




                                                 http://pardel.net
SkillsMatter - August 12th 2010




Location tracking
a) Signiļ¬cant location changing




   locationManager = [[CLLocationManager alloc] init];
   locationManager.delegate = self;
   [locationManager startMonitoringSignificantLocationChanges];




                                                                                 http://pardel.net
SkillsMatter - August 12th 2010




Location tracking
a) Signiļ¬cant location changing




   locationManager = [[CLLocationManager alloc] init];
   locationManager.delegate = self;
   [locationManager startMonitoringSignificantLocationChanges];




  - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:
  (CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
                                                                                 http://pardel.net
SkillsMatter - August 12th 2010




Location tracking
b) Region monitoring (iPhone4 only)




                                                     http://pardel.net
SkillsMatter - August 12th 2010




Location tracking
b) Region monitoring (iPhone4 only)




                                                     http://pardel.net
SkillsMatter - August 12th 2010




Location tracking
b) Region monitoring (iPhone4 only)




 - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:
 (CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation                http://pardel.net
SkillsMatter - August 12th 2010




Location tracking
b) Region monitoring (iPhone4 only)
locationManager = [[CLLocationManager alloc] init];
locationManager.delegate = self;
locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;
	
CLLocationCoordinate2D regionCenterCoordinate;
tempCoordinate.latitude = 51.5245;
tempCoordinate.longitude = -0.0995;

CLRegion *region = [[CLRegion alloc] initCircularRegionWithCenter:regionCenterCoordinate
	 	    	   	   	   	  	   	   	   	  	   	   	   	  	      radius:10.0
	 	    	   	   	   	  	   	   	   	  	   	   	   	     identifier:@"Skills Matter"];
	
[locationManager startMonitoringForRegion:region
	 	    	   	   	   	  	     desiredAccuracy:kCLLocationAccuracyNearestTenMeters];




- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:
(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation

                                                                                         http://pardel.net
SkillsMatter - August 12th 2010




Multitasking




                              http://pardel.net
SkillsMatter - August 12th 2010




Multitasking

 Fast app switching
 Task Completion
 Background Audio
 Navigation & Location tracking
 VoIP



                                                 http://pardel.net
SkillsMatter - August 12th 2010




2. Local Notiļ¬cations



                                       http://pardel.net
SkillsMatter - August 12th 2010




Local notiļ¬cations
// check if the local notification class exists
Class cls = NSClassFromString(@"UILocalNotification");
if (cls != nil) {

      // check if the device is supporting multitasking
	   UIDevice* device = [UIDevice currentDevice];
	   if ([device respondsToSelector:@selector(isMultitaskingSupported)]) {
	   	    UIApplication* app = [UIApplication sharedApplication];
	   	    UILocalNotification* alarm = [[[UILocalNotification alloc] init] autorelease];
	   	    if (alarm)
	   	    {
	   	    	   alarm.fireDate = [NSDate date];
	   	    	   alarm.timeZone = [NSTimeZone defaultTimeZone];
	   	    	   alarm.repeatInterval = 0;
	   	    	   alarm.soundName = @"alert.caf";
	   	    	   alarm.alertBody = @"Ha ha";
	   	    	   [app scheduleLocalNotification:alarm];
	   	    }
	   }

}




                                                                                             http://pardel.net
SkillsMatter - August 12th 2010




Local notiļ¬cations
// check if the local notification class exists
Class cls = NSClassFromString(@"UILocalNotification");
if (cls != nil) {

      // check if the device is supporting multitasking
	   UIDevice* device = [UIDevice currentDevice];
	   if ([device respondsToSelector:@selector(isMultitaskingSupported)]) {
	   	    UIApplication* app = [UIApplication sharedApplication];
	   	    UILocalNotification* alarm = [[[UILocalNotification alloc] init] autorelease];
	   	    if (alarm)
	   	    {
	   	    	   alarm.fireDate = [NSDate date];
	   	    	   alarm.timeZone = [NSTimeZone defaultTimeZone];
	   	    	   alarm.repeatInterval = 0;
	   	    	   alarm.soundName = @"alert.caf";
	   	    	   alarm.alertBody = @"Ha ha";
	   	    	   [app scheduleLocalNotification:alarm];
	   	    }
	   }

}




                                       Demo                                                  http://pardel.net
SkillsMatter - August 12th 2010




3. iAd



                        http://pardel.net
SkillsMatter - August 12th 2010




iAd


Nov 09 - Google acquires AdMob for $750 million in
stock
Jan 10 - Apple acquires Quattro Wireless for $275
million




                                                           http://pardel.net
SkillsMatter - August 12th 2010




iAd
      CPM + CPC = eCPM




                                        http://pardel.net
SkillsMatter - August 12th 2010




iAd
      CPM + CPC = eCPM




                                        http://pardel.net
SkillsMatter - August 12th 2010




iAd
      CPM + CPC = eCPM




         60% revenues
                                        http://pardel.net
SkillsMatter - August 12th 2010




iAd




                     http://pardel.net
SkillsMatter - August 12th 2010




iAd.framework
               @property(nonatomic, copy) NSSet *requiredContentSizeIdentifiers;

ADBannerView   @property (nonatomic, copy) NSString *currentContentSizeIdentifier;

               @property(nonatomic, readonly) BOOL bannerLoaded;
               @property(nonatomic, readonly) BOOL bannerViewActionInProgress;

               - (void)cancelBannerViewAction;


                            @property(nonatomic, assign) id<ADBannerViewDelegate> delegate;




                                                                                              http://pardel.net
SkillsMatter - August 12th 2010




iAd.framework
               @property(nonatomic, copy) NSSet *requiredContentSizeIdentifiers;

ADBannerView   @property (nonatomic, copy) NSString *currentContentSizeIdentifier;

               @property(nonatomic, readonly) BOOL bannerLoaded;
               @property(nonatomic, readonly) BOOL bannerViewActionInProgress;

               - (void)cancelBannerViewAction;


                            @property(nonatomic, assign) id<ADBannerViewDelegate> delegate;




                                                                                              http://pardel.net
SkillsMatter - August 12th 2010




iAd.framework
               @property(nonatomic, copy) NSSet *requiredContentSizeIdentifiers;

ADBannerView   @property (nonatomic, copy) NSString *currentContentSizeIdentifier;

               @property(nonatomic, readonly) BOOL bannerLoaded;
               @property(nonatomic, readonly) BOOL bannerViewActionInProgress;

               - (void)cancelBannerViewAction;


                            @property(nonatomic, assign) id<ADBannerViewDelegate> delegate;




                                                                                              http://pardel.net
SkillsMatter - August 12th 2010




iAd.framework
               @property(nonatomic, copy) NSSet *requiredContentSizeIdentifiers;

ADBannerView   @property (nonatomic, copy) NSString *currentContentSizeIdentifier;

               @property(nonatomic, readonly) BOOL bannerLoaded;
               @property(nonatomic, readonly) BOOL bannerViewActionInProgress;

               - (void)cancelBannerViewAction;


                            @property(nonatomic, assign) id<ADBannerViewDelegate> delegate;

               ADBannerContentSizeIdentiļ¬er320x50
               ADBannerContentSizeIdentiļ¬er480x32




                                                                                              http://pardel.net
SkillsMatter - August 12th 2010




  iAd.framework
   ADBannerView




                   ADBannerViewDelegate


- (void)bannerViewDidLoadAd:(ADBannerView *)banner;

- (BOOL)bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave;
- (void)bannerViewActionDidFinish:(ADBannerView *)banner;

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error;




                                                                                              http://pardel.net
SkillsMatter - August 12th 2010




  iAd.framework
   ADBannerView




                   ADBannerViewDelegate


- (void)bannerViewDidLoadAd:(ADBannerView *)banner;

- (BOOL)bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave;
- (void)bannerViewActionDidFinish:(ADBannerView *)banner;

- (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error;




                                        Demo                                                  http://pardel.net
SkillsMatter - August 12th 2010




iAd JS
         HTML5 + CSS3


         āœ¦   Banner
         āœ¦   Main advertising screen




                                                      http://pardel.net
SkillsMatter - August 12th 2010




4. Game Center



                                http://pardel.net
SkillsMatter - August 12th 2010




Game Center

       āœ¦ Beta

       āœ¦ Socialgaming network
       āœ¦ Leaderboards & Achievements




                                                http://pardel.net
SkillsMatter - August 12th 2010




5. New Frameworks & APIs



                                   http://pardel.net
SkillsMatter - August 12th 2010




Block Objects




                               http://pardel.net
SkillsMatter - August 12th 2010




Block Objects
 self.bgTaskId = [app beginBackgroundTaskWithExpirationHandler:^{
     [self stopLongTask];
 }];




                                                                              http://pardel.net
SkillsMatter - August 12th 2010




Block Objects
 self.bgTaskId = [app beginBackgroundTaskWithExpirationHandler:^{
     [self stopLongTask];
 }];




   an object with some code
   respond to NSObject methods
   available in C



                                                                              http://pardel.net
SkillsMatter - August 12th 2010




Blocks




                        http://pardel.net
SkillsMatter - August 12th 2010




Blocks
 returnType (^myBlockName) (argumentType) = ^(argumentType argumentName)
 {
     returnType x;
     ...
     return x;
 }




                                                                              http://pardel.net
SkillsMatter - August 12th 2010




Blocks
 returnType (^myBlockName) (argumentType) = ^(argumentType argumentName)
 {
     returnType x;
     ...
     return x;
 }




 int (^myBlock) (int) = ^(int num) { return num * multiplier; }




                                                                                 http://pardel.net
SkillsMatter - August 12th 2010




Blocks
 returnType (^myBlockName) (argumentType) = ^(argumentType argumentName)
 {
     returnType x;
     ...
     return x;
 }




 int multiplier = 5;


 int (^myBlock) (int) = ^(int num) { return num * multiplier; }




                                                                                 http://pardel.net
SkillsMatter - August 12th 2010




Blocks
 returnType (^myBlockName) (argumentType) = ^(argumentType argumentName)
 {
     returnType x;
     ...
     return x;
 }




 int multiplier = 5;


 int (^myBlock) (int) = ^(int num) { return num * multiplier; }


 myBlock(7);




                                                                                 http://pardel.net
SkillsMatter - August 12th 2010




New Frameworks

Quick Look
Event Kit
Core Motion
Core Telephony
Data Protection



                                 http://pardel.net
SkillsMatter - August 12th 2010




Event Kit




                           http://pardel.net
SkillsMatter - August 12th 2010




Event Kit
  EKEventStore
@property(nonatomic, readonly) NSArray *calendars
@property(nonatomic, readonly) EKCalendar *defaultCalendarForNewEvents




                                                                                http://pardel.net
SkillsMatter - August 12th 2010




Event Kit
  EKEventStore
@property(nonatomic, readonly) NSArray *calendars
@property(nonatomic, readonly) EKCalendar *defaultCalendarForNewEvents



  EKCalendar




                                                                                http://pardel.net
SkillsMatter - August 12th 2010




Event Kit
  EKEventStore
@property(nonatomic, readonly) NSArray *calendars
@property(nonatomic, readonly) EKCalendar *defaultCalendarForNewEvents



  EKCalendar
  typedef enum {
    EKCalendarTypeLocal,
    EKCalendarTypeCalDAV,
    EKCalendarTypeExchange,
    EKCalendarTypeSubscription,
    EKCalendarTypeBirthday,
  } EKCalendarType;


                                                                                http://pardel.net
SkillsMatter - August 12th 2010




Event Kit
  EKEventStore
@property(nonatomic, readonly) NSArray *calendars
@property(nonatomic, readonly) EKCalendar *defaultCalendarForNewEvents



  EKCalendar                             EKEvent
  typedef enum {
    EKCalendarTypeLocal,                 alarms -> EKAlarm
    EKCalendarTypeCalDAV,                organizer, attendees -> EKParticipant
    EKCalendarTypeExchange,              recurrenceRule -> EKRecurrenceRule
    EKCalendarTypeSubscription,
    EKCalendarTypeBirthday,
  } EKCalendarType;


                                                                                 http://pardel.net
SkillsMatter - August 12th 2010




New APIā€™s

Block related methods
  -Ā (void)enumerateObjectsUsingBlock:(void (^)(id obj, NSUInteger idx, BOOL *stop))
  block

Photo Library Access
MapKit improvements




                                                                                  http://pardel.net
SkillsMatter - August 12th 2010




iPhone & iPad Application
Development Course
 Sep 29th to Oct 1st
 http://skillsmatter.com/course/os-mobile-server/
 iphone-ipad-application-development




                                                             http://pardel.net
SkillsMatter - August 12th 2010




iPhone & iPad Application
Development Course
 Sep 29th to Oct 1st
 http://skillsmatter.com/course/os-mobile-server/
 iphone-ipad-application-development




                                                             http://pardel.net
SkillsMatter - August 12th 2010




PROGRAMME

Day 1: Introduction to iOS development I             Day 3: Advance Features I

   ā€¢
     The development environment               
   ā€¢
   Touch & Gestures

   ā€¢
     Objective C crash course                  
   ā€¢
   Camera & Photo Library access

   ā€¢
     Foundation framework                      
   ā€¢
   Core Location

   ā€¢
     Memory management                         
   ā€¢
   Event Kit

   ā€¢
     The iPhone Dev Center                     
   ā€¢
   Core Motion
                                                     
   ā€¢
   Web Services (inc. XML & JSON Parsers)
                                                     
   ā€¢
   Threading
                                                     
   ā€¢
   Localisation


Day 2: Introduction to iOS development II            Day 4: Advance Features II

   ā€¢
     Design patterns (MVC, Delegation, etc.)   
   ā€¢
   Documents Sharing

   ā€¢
     Table views, Navigation, Tab bar          
   ā€¢
   Multitasking

   ā€¢
     Data Persistence (Preferences, SQLite &   
   ā€¢
   Local notiļ¬cations
            Code Data)                               
   ā€¢
   iPad Speciļ¬c topics

   ā€¢
     Animation                                 
   ā€¢
   Testing and Optimisation (Instruments)

   ā€¢
     Core Graphics                             
   ā€¢
   Submitting your application to the App Store




                                                                                                   http://pardel.net
SkillsMatter - August 12th 2010




Thank you


       http://pardel.net
       http://twitter.com/pardel




                                                  http://pardel.net

More Related Content

Similar to IN The Brain Of Paul Ardeleanu

Ruby and iOS: An inside look
Ruby and iOS: An inside lookRuby and iOS: An inside look
Ruby and iOS: An inside lookJeanine Jue
Ā 
Bug sense droidcon-13
Bug sense droidcon-13Bug sense droidcon-13
Bug sense droidcon-13Droidcon Berlin
Ā 
Droid con bugsense
Droid con bugsenseDroid con bugsense
Droid con bugsenseBugSense
Ā 
Java Swing vs. Android App
Java Swing vs. Android AppJava Swing vs. Android App
Java Swing vs. Android AppJohnny Hujol
Ā 
Phone gap
Phone gapPhone gap
Phone gapcaviare
Ā 
Inside Dvm tools
Inside Dvm toolsInside Dvm tools
Inside Dvm toolsMykola Bova
Ā 
GDG Devfest 2016 session on Android N
GDG Devfest 2016 session on Android NGDG Devfest 2016 session on Android N
GDG Devfest 2016 session on Android NImam Raza
Ā 
RubyMotion恧iOS開ē™ŗ
RubyMotion恧iOS開ē™ŗRubyMotion恧iOS開ē™ŗ
RubyMotion恧iOS開ē™ŗMasakuni Kato
Ā 
Mobile is slow - Over the Air 2013
Mobile is slow - Over the Air 2013Mobile is slow - Over the Air 2013
Mobile is slow - Over the Air 2013Jon Arne SƦterƄs
Ā 
Rapid-ruby-api-on-grape
Rapid-ruby-api-on-grapeRapid-ruby-api-on-grape
Rapid-ruby-api-on-grapeAndy Wang
Ā 
Sst hackathon express
Sst hackathon expressSst hackathon express
Sst hackathon expressAeshan Wijetunge
Ā 
Ię™‚ä»£ēš„å·„ä½œč”“
Ię™‚ä»£ēš„å·„ä½œč”“Ię™‚ä»£ēš„å·„ä½œč”“
Ię™‚ä»£ēš„å·„ä½œč”“Vista Cheng
Ā 
[Phpcamp]Shindig An OpenSocial container
[Phpcamp]Shindig An OpenSocial container[Phpcamp]Shindig An OpenSocial container
[Phpcamp]Shindig An OpenSocial containerBipin Upadhyay
Ā 
SimpleK12 Webinar - You Got an iPad, Now What? 031312
SimpleK12 Webinar - You Got an iPad, Now What? 031312SimpleK12 Webinar - You Got an iPad, Now What? 031312
SimpleK12 Webinar - You Got an iPad, Now What? 031312Christopher Casal
Ā 
No internet!! Let your apps still work
No internet!! Let your apps still workNo internet!! Let your apps still work
No internet!! Let your apps still workSangharsh Boudhh
Ā 
Health Care Clipboard iPad Application
Health Care Clipboard iPad ApplicationHealth Care Clipboard iPad Application
Health Care Clipboard iPad ApplicationJose Ortega
Ā 
O sucesso do seu app estĆ” nos detalhes!
O sucesso do seu app estĆ” nos detalhes!O sucesso do seu app estĆ” nos detalhes!
O sucesso do seu app estĆ” nos detalhes!Suelen Carvalho
Ā 
The Web Performance Testing Toolbox (Jfokus 2013)
The Web Performance Testing Toolbox (Jfokus 2013)The Web Performance Testing Toolbox (Jfokus 2013)
The Web Performance Testing Toolbox (Jfokus 2013)Tobias JƤrlund
Ā 
Lecture #4 activities &amp; fragments
Lecture #4  activities &amp; fragmentsLecture #4  activities &amp; fragments
Lecture #4 activities &amp; fragmentsVitali Pekelis
Ā 

Similar to IN The Brain Of Paul Ardeleanu (20)

Ruby and iOS: An inside look
Ruby and iOS: An inside lookRuby and iOS: An inside look
Ruby and iOS: An inside look
Ā 
Ruby and iOS: An inside look
Ruby and iOS: An inside lookRuby and iOS: An inside look
Ruby and iOS: An inside look
Ā 
Bug sense droidcon-13
Bug sense droidcon-13Bug sense droidcon-13
Bug sense droidcon-13
Ā 
Droid con bugsense
Droid con bugsenseDroid con bugsense
Droid con bugsense
Ā 
Java Swing vs. Android App
Java Swing vs. Android AppJava Swing vs. Android App
Java Swing vs. Android App
Ā 
Phone gap
Phone gapPhone gap
Phone gap
Ā 
Inside Dvm tools
Inside Dvm toolsInside Dvm tools
Inside Dvm tools
Ā 
GDG Devfest 2016 session on Android N
GDG Devfest 2016 session on Android NGDG Devfest 2016 session on Android N
GDG Devfest 2016 session on Android N
Ā 
RubyMotion恧iOS開ē™ŗ
RubyMotion恧iOS開ē™ŗRubyMotion恧iOS開ē™ŗ
RubyMotion恧iOS開ē™ŗ
Ā 
Mobile is slow - Over the Air 2013
Mobile is slow - Over the Air 2013Mobile is slow - Over the Air 2013
Mobile is slow - Over the Air 2013
Ā 
Rapid-ruby-api-on-grape
Rapid-ruby-api-on-grapeRapid-ruby-api-on-grape
Rapid-ruby-api-on-grape
Ā 
Sst hackathon express
Sst hackathon expressSst hackathon express
Sst hackathon express
Ā 
Ię™‚ä»£ēš„å·„ä½œč”“
Ię™‚ä»£ēš„å·„ä½œč”“Ię™‚ä»£ēš„å·„ä½œč”“
Ię™‚ä»£ēš„å·„ä½œč”“
Ā 
[Phpcamp]Shindig An OpenSocial container
[Phpcamp]Shindig An OpenSocial container[Phpcamp]Shindig An OpenSocial container
[Phpcamp]Shindig An OpenSocial container
Ā 
SimpleK12 Webinar - You Got an iPad, Now What? 031312
SimpleK12 Webinar - You Got an iPad, Now What? 031312SimpleK12 Webinar - You Got an iPad, Now What? 031312
SimpleK12 Webinar - You Got an iPad, Now What? 031312
Ā 
No internet!! Let your apps still work
No internet!! Let your apps still workNo internet!! Let your apps still work
No internet!! Let your apps still work
Ā 
Health Care Clipboard iPad Application
Health Care Clipboard iPad ApplicationHealth Care Clipboard iPad Application
Health Care Clipboard iPad Application
Ā 
O sucesso do seu app estĆ” nos detalhes!
O sucesso do seu app estĆ” nos detalhes!O sucesso do seu app estĆ” nos detalhes!
O sucesso do seu app estĆ” nos detalhes!
Ā 
The Web Performance Testing Toolbox (Jfokus 2013)
The Web Performance Testing Toolbox (Jfokus 2013)The Web Performance Testing Toolbox (Jfokus 2013)
The Web Performance Testing Toolbox (Jfokus 2013)
Ā 
Lecture #4 activities &amp; fragments
Lecture #4  activities &amp; fragmentsLecture #4  activities &amp; fragments
Lecture #4 activities &amp; fragments
Ā 

More from Skills Matter

5 things cucumber is bad at by Richard Lawrence
5 things cucumber is bad at by Richard Lawrence5 things cucumber is bad at by Richard Lawrence
5 things cucumber is bad at by Richard LawrenceSkills Matter
Ā 
Patterns for slick database applications
Patterns for slick database applicationsPatterns for slick database applications
Patterns for slick database applicationsSkills Matter
Ā 
Scala e xchange 2013 haoyi li on metascala a tiny diy jvm
Scala e xchange 2013 haoyi li on metascala a tiny diy jvmScala e xchange 2013 haoyi li on metascala a tiny diy jvm
Scala e xchange 2013 haoyi li on metascala a tiny diy jvmSkills Matter
Ā 
Oscar reiken jr on our success at manheim
Oscar reiken jr on our success at manheimOscar reiken jr on our success at manheim
Oscar reiken jr on our success at manheimSkills Matter
Ā 
Progressive f# tutorials nyc dmitry mozorov & jack pappas on code quotations ...
Progressive f# tutorials nyc dmitry mozorov & jack pappas on code quotations ...Progressive f# tutorials nyc dmitry mozorov & jack pappas on code quotations ...
Progressive f# tutorials nyc dmitry mozorov & jack pappas on code quotations ...Skills Matter
Ā 
Cukeup nyc ian dees on elixir, erlang, and cucumberl
Cukeup nyc ian dees on elixir, erlang, and cucumberlCukeup nyc ian dees on elixir, erlang, and cucumberl
Cukeup nyc ian dees on elixir, erlang, and cucumberlSkills Matter
Ā 
Cukeup nyc peter bell on getting started with cucumber.js
Cukeup nyc peter bell on getting started with cucumber.jsCukeup nyc peter bell on getting started with cucumber.js
Cukeup nyc peter bell on getting started with cucumber.jsSkills Matter
Ā 
Agile testing & bdd e xchange nyc 2013 jeffrey davidson & lav pathak & sam ho...
Agile testing & bdd e xchange nyc 2013 jeffrey davidson & lav pathak & sam ho...Agile testing & bdd e xchange nyc 2013 jeffrey davidson & lav pathak & sam ho...
Agile testing & bdd e xchange nyc 2013 jeffrey davidson & lav pathak & sam ho...Skills Matter
Ā 
Progressive f# tutorials nyc rachel reese & phil trelford on try f# from zero...
Progressive f# tutorials nyc rachel reese & phil trelford on try f# from zero...Progressive f# tutorials nyc rachel reese & phil trelford on try f# from zero...
Progressive f# tutorials nyc rachel reese & phil trelford on try f# from zero...Skills Matter
Ā 
Progressive f# tutorials nyc don syme on keynote f# in the open source world
Progressive f# tutorials nyc don syme on keynote f# in the open source worldProgressive f# tutorials nyc don syme on keynote f# in the open source world
Progressive f# tutorials nyc don syme on keynote f# in the open source worldSkills Matter
Ā 
Agile testing & bdd e xchange nyc 2013 gojko adzic on bond villain guide to s...
Agile testing & bdd e xchange nyc 2013 gojko adzic on bond villain guide to s...Agile testing & bdd e xchange nyc 2013 gojko adzic on bond villain guide to s...
Agile testing & bdd e xchange nyc 2013 gojko adzic on bond villain guide to s...Skills Matter
Ā 
Dmitry mozorov on code quotations code as-data for f#
Dmitry mozorov on code quotations code as-data for f#Dmitry mozorov on code quotations code as-data for f#
Dmitry mozorov on code quotations code as-data for f#Skills Matter
Ā 
A poet's guide_to_acceptance_testing
A poet's guide_to_acceptance_testingA poet's guide_to_acceptance_testing
A poet's guide_to_acceptance_testingSkills Matter
Ā 
Russ miles-cloudfoundry-deep-dive
Russ miles-cloudfoundry-deep-diveRuss miles-cloudfoundry-deep-dive
Russ miles-cloudfoundry-deep-diveSkills Matter
Ā 
Serendipity-neo4j
Serendipity-neo4jSerendipity-neo4j
Serendipity-neo4jSkills Matter
Ā 
Simon Peyton Jones: Managing parallelism
Simon Peyton Jones: Managing parallelismSimon Peyton Jones: Managing parallelism
Simon Peyton Jones: Managing parallelismSkills Matter
Ā 
Lug presentation
Lug presentationLug presentation
Lug presentationSkills Matter
Ā 
I went to_a_communications_workshop_and_they_t
I went to_a_communications_workshop_and_they_tI went to_a_communications_workshop_and_they_t
I went to_a_communications_workshop_and_they_tSkills Matter
Ā 

More from Skills Matter (20)

5 things cucumber is bad at by Richard Lawrence
5 things cucumber is bad at by Richard Lawrence5 things cucumber is bad at by Richard Lawrence
5 things cucumber is bad at by Richard Lawrence
Ā 
Patterns for slick database applications
Patterns for slick database applicationsPatterns for slick database applications
Patterns for slick database applications
Ā 
Scala e xchange 2013 haoyi li on metascala a tiny diy jvm
Scala e xchange 2013 haoyi li on metascala a tiny diy jvmScala e xchange 2013 haoyi li on metascala a tiny diy jvm
Scala e xchange 2013 haoyi li on metascala a tiny diy jvm
Ā 
Oscar reiken jr on our success at manheim
Oscar reiken jr on our success at manheimOscar reiken jr on our success at manheim
Oscar reiken jr on our success at manheim
Ā 
Progressive f# tutorials nyc dmitry mozorov & jack pappas on code quotations ...
Progressive f# tutorials nyc dmitry mozorov & jack pappas on code quotations ...Progressive f# tutorials nyc dmitry mozorov & jack pappas on code quotations ...
Progressive f# tutorials nyc dmitry mozorov & jack pappas on code quotations ...
Ā 
Cukeup nyc ian dees on elixir, erlang, and cucumberl
Cukeup nyc ian dees on elixir, erlang, and cucumberlCukeup nyc ian dees on elixir, erlang, and cucumberl
Cukeup nyc ian dees on elixir, erlang, and cucumberl
Ā 
Cukeup nyc peter bell on getting started with cucumber.js
Cukeup nyc peter bell on getting started with cucumber.jsCukeup nyc peter bell on getting started with cucumber.js
Cukeup nyc peter bell on getting started with cucumber.js
Ā 
Agile testing & bdd e xchange nyc 2013 jeffrey davidson & lav pathak & sam ho...
Agile testing & bdd e xchange nyc 2013 jeffrey davidson & lav pathak & sam ho...Agile testing & bdd e xchange nyc 2013 jeffrey davidson & lav pathak & sam ho...
Agile testing & bdd e xchange nyc 2013 jeffrey davidson & lav pathak & sam ho...
Ā 
Progressive f# tutorials nyc rachel reese & phil trelford on try f# from zero...
Progressive f# tutorials nyc rachel reese & phil trelford on try f# from zero...Progressive f# tutorials nyc rachel reese & phil trelford on try f# from zero...
Progressive f# tutorials nyc rachel reese & phil trelford on try f# from zero...
Ā 
Progressive f# tutorials nyc don syme on keynote f# in the open source world
Progressive f# tutorials nyc don syme on keynote f# in the open source worldProgressive f# tutorials nyc don syme on keynote f# in the open source world
Progressive f# tutorials nyc don syme on keynote f# in the open source world
Ā 
Agile testing & bdd e xchange nyc 2013 gojko adzic on bond villain guide to s...
Agile testing & bdd e xchange nyc 2013 gojko adzic on bond villain guide to s...Agile testing & bdd e xchange nyc 2013 gojko adzic on bond villain guide to s...
Agile testing & bdd e xchange nyc 2013 gojko adzic on bond villain guide to s...
Ā 
Dmitry mozorov on code quotations code as-data for f#
Dmitry mozorov on code quotations code as-data for f#Dmitry mozorov on code quotations code as-data for f#
Dmitry mozorov on code quotations code as-data for f#
Ā 
A poet's guide_to_acceptance_testing
A poet's guide_to_acceptance_testingA poet's guide_to_acceptance_testing
A poet's guide_to_acceptance_testing
Ā 
Russ miles-cloudfoundry-deep-dive
Russ miles-cloudfoundry-deep-diveRuss miles-cloudfoundry-deep-dive
Russ miles-cloudfoundry-deep-dive
Ā 
Serendipity-neo4j
Serendipity-neo4jSerendipity-neo4j
Serendipity-neo4j
Ā 
Simon Peyton Jones: Managing parallelism
Simon Peyton Jones: Managing parallelismSimon Peyton Jones: Managing parallelism
Simon Peyton Jones: Managing parallelism
Ā 
Plug 20110217
Plug   20110217Plug   20110217
Plug 20110217
Ā 
Lug presentation
Lug presentationLug presentation
Lug presentation
Ā 
I went to_a_communications_workshop_and_they_t
I went to_a_communications_workshop_and_they_tI went to_a_communications_workshop_and_they_t
I went to_a_communications_workshop_and_they_t
Ā 
Plug saiku
Plug   saikuPlug   saiku
Plug saiku
Ā 

Recently uploaded

WhatsApp 9892124323 āœ“Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 āœ“Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 āœ“Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 āœ“Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
Ā 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
Ā 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
Ā 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel AraĆŗjo
Ā 
#StandardsGoals for 2024: Whatā€™s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: Whatā€™s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: Whatā€™s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: Whatā€™s new for BISAC - Tech Forum 2024BookNet Canada
Ā 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
Ā 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
Ā 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
Ā 
Scaling API-first ā€“ The story of a global engineering organization
Scaling API-first ā€“ The story of a global engineering organizationScaling API-first ā€“ The story of a global engineering organization
Scaling API-first ā€“ The story of a global engineering organizationRadu Cotescu
Ā 
FULL ENJOY šŸ” 8264348440 šŸ” Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY šŸ” 8264348440 šŸ” Call Girls in Diplomatic Enclave | DelhiFULL ENJOY šŸ” 8264348440 šŸ” Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY šŸ” 8264348440 šŸ” Call Girls in Diplomatic Enclave | Delhisoniya singh
Ā 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
Ā 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
Ā 
šŸ¬ The future of MySQL is Postgres šŸ˜
šŸ¬  The future of MySQL is Postgres   šŸ˜šŸ¬  The future of MySQL is Postgres   šŸ˜
šŸ¬ The future of MySQL is Postgres šŸ˜RTylerCroy
Ā 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
Ā 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
Ā 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
Ā 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
Ā 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
Ā 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
Ā 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
Ā 

Recently uploaded (20)

WhatsApp 9892124323 āœ“Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 āœ“Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 āœ“Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 āœ“Call Girls In Kalyan ( Mumbai ) secure service
Ā 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
Ā 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
Ā 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Ā 
#StandardsGoals for 2024: Whatā€™s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: Whatā€™s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: Whatā€™s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: Whatā€™s new for BISAC - Tech Forum 2024
Ā 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
Ā 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
Ā 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Ā 
Scaling API-first ā€“ The story of a global engineering organization
Scaling API-first ā€“ The story of a global engineering organizationScaling API-first ā€“ The story of a global engineering organization
Scaling API-first ā€“ The story of a global engineering organization
Ā 
FULL ENJOY šŸ” 8264348440 šŸ” Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY šŸ” 8264348440 šŸ” Call Girls in Diplomatic Enclave | DelhiFULL ENJOY šŸ” 8264348440 šŸ” Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY šŸ” 8264348440 šŸ” Call Girls in Diplomatic Enclave | Delhi
Ā 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
Ā 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
Ā 
šŸ¬ The future of MySQL is Postgres šŸ˜
šŸ¬  The future of MySQL is Postgres   šŸ˜šŸ¬  The future of MySQL is Postgres   šŸ˜
šŸ¬ The future of MySQL is Postgres šŸ˜
Ā 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
Ā 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
Ā 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Ā 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
Ā 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
Ā 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
Ā 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
Ā 

IN The Brain Of Paul Ardeleanu

  • 1. Whatā€™s new in iOS4 Paul Ardeleanu @pardel SkillsMatter - August 12th 2010
  • 2. SkillsMatter - August 12th 2010 What was missing? Multitasking Flash http://pardel.net
  • 3. SkillsMatter - August 12th 2010 Whatā€™s new in iOS4? Multitasking Local Notiļ¬cations iAd Game Center New Frameworks & APIs http://pardel.net
  • 4. SkillsMatter - August 12th 2010 1. Multitasking http://pardel.net
  • 5. SkillsMatter - August 12th 2010 1. Multitasking ... of a different kind http://pardel.net
  • 6. SkillsMatter - August 12th 2010 Multitasking http://pardel.net
  • 7. SkillsMatter - August 12th 2010 Multitasking Fast app switching Task Completion Background Audio Navigation & Location tracking VoIP http://pardel.net
  • 8. SkillsMatter - August 12th 2010 Fast App Switching Running Not running http://pardel.net
  • 9. SkillsMatter - August 12th 2010 Fast App Switching Active Running Inactive Not running http://pardel.net
  • 10. SkillsMatter - August 12th 2010 Fast App Switching Active Running Running Inactive Background Not running Not running http://pardel.net
  • 11. SkillsMatter - August 12th 2010 Fast App Switching Active Running Running Inactive Running Background Suspended Not running Not running http://pardel.net
  • 12. SkillsMatter - August 12th 2010 App Life Cycle Active Foreground Inactive Not running http://pardel.net
  • 13. SkillsMatter - August 12th 2010 App Life Cycle Active Foreground didFinishLaunchingWithOptions: Inactive Not running http://pardel.net
  • 14. SkillsMatter - August 12th 2010 App Life Cycle Active Foreground didFinishLaunchingWithOptions: applicationDidBecomeActive: Inactive Not running http://pardel.net
  • 15. SkillsMatter - August 12th 2010 App Life Cycle Active Foreground didFinishLaunchingWithOptions: applicationDidBecomeActive: applicationDidResignActive: Inactive Not running http://pardel.net
  • 16. SkillsMatter - August 12th 2010 App Life Cycle Active Foreground didFinishLaunchingWithOptions: applicationDidBecomeActive: applicationDidResignActive: Inactive applicationDidTerminate: Not running http://pardel.net
  • 17. SkillsMatter - August 12th 2010 App Life Cycle Active Foreground didFinishLaunchingWithOptions: applicationDidBecomeActive: applicationDidResignActive: Inactive applicationDidTerminate: Not running http://pardel.net
  • 18. SkillsMatter - August 12th 2010 App Life Cycle Active Foreground didFinishLaunchingWithOptions: applicationDidBecomeActive: applicationDidResignActive: Inactive applicationDidTerminate: Not running http://pardel.net
  • 19. SkillsMatter - August 12th 2010 App Life Cycle Active Foreground didFinishLaunchingWithOptions: applicationDidBecomeActive: applicationDidResignActive: Inactive applicationDidTerminate: Background Running Suspended Not running http://pardel.net
  • 20. SkillsMatter - August 12th 2010 App Life Cycle Active Foreground didFinishLaunchingWithOptions: applicationDidBecomeActive: applicationDidResignActive: Inactive applicationDidTerminate: applicationDidResignActive: Background Running Suspended Not running http://pardel.net
  • 21. SkillsMatter - August 12th 2010 App Life Cycle Active Foreground didFinishLaunchingWithOptions: applicationDidBecomeActive: applicationDidResignActive: Inactive applicationDidTerminate: Background applicationDidEnterBackground: Running Suspended Not running http://pardel.net
  • 22. SkillsMatter - August 12th 2010 App Life Cycle Active Foreground didFinishLaunchingWithOptions: applicationDidBecomeActive: applicationDidResignActive: Inactive applicationDidTerminate: Background applicationDidEnterBackground: Running applicationDidEnterForeground: Suspended Not running http://pardel.net
  • 23. SkillsMatter - August 12th 2010 App Life Cycle Active Foreground didFinishLaunchingWithOptions: applicationDidBecomeActive: applicationDidResignActive: Inactive applicationDidTerminate: Background applicationDidEnterBackground: Running applicationDidEnterForeground: Suspended Not running http://pardel.net
  • 24. SkillsMatter - August 12th 2010 App Life Cycle Active Foreground didFinishLaunchingWithOptions: applicationDidBecomeActive: applicationDidResignActive: Inactive applicationDidTerminate: Background applicationDidEnterBackground: Running applicationDidEnterForeground: Suspended Not running http://pardel.net
  • 25. SkillsMatter - August 12th 2010 App Life Cycle Active Foreground didFinishLaunchingWithOptions: applicationDidBecomeActive: applicationDidResignActive: Inactive applicationDidTerminate: Background applicationDidEnterBackground: Running applicationDidEnterForeground: Suspended Not running http://pardel.net
  • 26. SkillsMatter - August 12th 2010 UIApplicationDelegate Callbacks // // MyAppDelegate.m // - (void)applicationWillResignActive:(UIApplication *)application - (void)applicationDidEnterBackground:(UIApplication *)application - (void)applicationWillEnterForeground:(UIApplication *)application - (void)applicationDidBecomeActive:(UIApplication *)application - (void)applicationWillTerminate:(UIApplication *)application UIApplicationDidEnterBackgroundNotiļ¬cation UIApplicationDidEnterForegroundNotiļ¬cation http://pardel.net
  • 27. SkillsMatter - August 12th 2010 UIApplicationDelegate Callbacks // // MyAppDelegate.m // - (void)applicationWillResignActive:(UIApplication *)application - (void)applicationDidEnterBackground:(UIApplication *)application - (void)applicationWillEnterForeground:(UIApplication *)application - (void)applicationDidBecomeActive:(UIApplication *)application - (void)applicationWillTerminate:(UIApplication *)application UIApplicationDidEnterBackgroundNotiļ¬cation UIApplicationDidEnterForegroundNotiļ¬cation Demo http://pardel.net
  • 28. SkillsMatter - August 12th 2010 UIApplication typedef enum { UIApplicationStateActive, UIApplicationStateInactive, UIApplicationStateBackground } UIApplicationState; @property(nonatomic,readonly) UIApplicationState applicationState [[UIApplication sharedApplication] applicationState] http://pardel.net
  • 29. SkillsMatter - August 12th 2010 Best practices Active Foreground Inactive applicationDidEnterForeground: Background applicationDidEnterBackground: Running Suspended Not running http://pardel.net
  • 30. SkillsMatter - August 12th 2010 Best practices Active Foreground Inactive applicationDidEnterForeground: Background applicationDidEnterBackground: Running āœ¦ save state āœ¦ minimise memory usage āœ¦ change the UI accordingly āœ¦ stop Bonjour & networking āœ¦ stop shared system data Suspended access & GPU Not running http://pardel.net
  • 31. SkillsMatter - August 12th 2010 Best practices Active Foreground Inactive applicationDidEnterForeground: Background applicationDidEnterBackground: Running āœ¦ save state āœ¦ minimise memory usage āœ¦ change the UI accordingly āœ¦ stop Bonjour & networking āœ¦ stop shared system data Suspended access & GPU your app can be Not running terminated at any time http://pardel.net
  • 32. SkillsMatter - August 12th 2010 No Multitasking UIApplicationExitsOnSuspend http://pardel.net
  • 33. SkillsMatter - August 12th 2010 App Life Cycle Active Foreground Inactive Background Running Suspended Not running http://pardel.net
  • 34. SkillsMatter - August 12th 2010 App Life Cycle Active Foreground Inactive Background Running Suspended Not running http://pardel.net
  • 35. SkillsMatter - August 12th 2010 App Life Cycle Active Foreground Inactive Background Running Suspended Not running http://pardel.net
  • 36. SkillsMatter - August 12th 2010 App Life Cycle Active Foreground Inactive Background Running applicationDidEnterBackground: Suspended Not running http://pardel.net
  • 37. SkillsMatter - August 12th 2010 App Life Cycle Active Foreground Inactive Background Running applicationDidEnterBackground: applicationDidTerminate: Suspended Not running http://pardel.net
  • 38. SkillsMatter - August 12th 2010 Background Services Task completion Background Audio VoIP Background Location http://pardel.net
  • 39. SkillsMatter - August 12th 2010 Task completion Active Foreground Inactive Background Not running http://pardel.net
  • 40. SkillsMatter - August 12th 2010 Task completion Active Foreground Inactive Background Running Not running http://pardel.net
  • 41. SkillsMatter - August 12th 2010 Task completion Active Foreground Inactive Background Running Not running http://pardel.net
  • 42. SkillsMatter - August 12th 2010 Task completion Active Foreground Inactive Background Running Suspended Not running http://pardel.net
  • 43. SkillsMatter - August 12th 2010 Task completion Active Foreground Inactive Background Running Not running http://pardel.net
  • 44. SkillsMatter - August 12th 2010 Task completion UIApplication - (UIBackgroundTaskIdentifier)beginBackgroundTaskWithExpirationHandler: (void(^)(void))handler; - (void)endBackgroundTask:(UIBackgroundTaskIdentifier)identifier; @property(nonatomic,readonly) NSTimeInterval backgroundTimeRemaining; http://pardel.net
  • 45. SkillsMatter - August 12th 2010 Task completion UIApplication - (UIBackgroundTaskIdentifier)beginBackgroundTaskWithExpirationHandler: (void(^)(void))handler; - (void)endBackgroundTask:(UIBackgroundTaskIdentifier)identifier; @property(nonatomic,readonly) NSTimeInterval backgroundTimeRemaining; typedef NSUInteger UIBackgroundTaskIdentiļ¬er; http://pardel.net
  • 46. SkillsMatter - August 12th 2010 Task completion UIApplication - (UIBackgroundTaskIdentifier)beginBackgroundTaskWithExpirationHandler: (void(^)(void))handler; - (void)endBackgroundTask:(UIBackgroundTaskIdentifier)identifier; @property(nonatomic,readonly) NSTimeInterval backgroundTimeRemaining; typedef NSUInteger UIBackgroundTaskIdentiļ¬er; self.bgTaskId = [app beginBackgroundTaskWithExpirationHandler: ^{ [self stopLongTask]; }]; ... [[UIApplication sharedApplication] endBackgroundTask:self.bgTaskId]; http://pardel.net
  • 47. SkillsMatter - August 12th 2010 Background Services Task completion Background Audio VoIP Background Location http://pardel.net
  • 48. SkillsMatter - August 12th 2010 Background Services http://pardel.net
  • 49. SkillsMatter - August 12th 2010 App Life Cycle Active Foreground Inactive Background Not running http://pardel.net
  • 50. SkillsMatter - August 12th 2010 App Life Cycle Active Foreground Inactive Background Running Not running http://pardel.net
  • 51. SkillsMatter - August 12th 2010 App Life Cycle AVAudioSession Active Foreground Inactive AVAudioSessionDelegate Background Running Not running http://pardel.net
  • 52. SkillsMatter - August 12th 2010 App Life Cycle AVAudioSession Active Foreground Inactive AVAudioSessionDelegate Background Running Not running http://pardel.net
  • 53. SkillsMatter - August 12th 2010 App Life Cycle AVAudioSession Active Foreground Inactive AVAudioSessionDelegate beginInteruption Background Running Suspended Not running http://pardel.net
  • 54. SkillsMatter - August 12th 2010 App Life Cycle AVAudioSession Active Foreground Inactive AVAudioSessionDelegate beginInteruption Background Running Suspended Not running http://pardel.net
  • 55. SkillsMatter - August 12th 2010 App Life Cycle AVAudioSession Active Foreground endInteruption Inactive AVAudioSessionDelegate beginInteruption Background Running Running Suspended Not running http://pardel.net
  • 56. SkillsMatter - August 12th 2010 App Life Cycle AVAudioSession Active Foreground Inactive AVAudioSessionDelegate beginInteruption endInterruptionWithFlags: Background Running Running Suspended Not running http://pardel.net
  • 57. SkillsMatter - August 12th 2010 Background Location Services Turn by turn directions Location tracking āœ¦ Signiļ¬cant location changing āœ¦ Region monitoring (iPhone4 only) http://pardel.net
  • 58. SkillsMatter - August 12th 2010 Turn by turn directions locationManager = [[CLLocationManager alloc] init]; locationManager.delegate = self; locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation; [locationManager startUpdatingLocation]; http://pardel.net
  • 59. SkillsMatter - August 12th 2010 Turn by turn directions locationManager = [[CLLocationManager alloc] init]; locationManager.delegate = self; locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation; [locationManager startUpdatingLocation]; extern const CLLocationAccuracy kCLLocationAccuracyBestForNavigation; extern const CLLocationAccuracy kCLLocationAccuracyBest; extern const CLLocationAccuracy kCLLocationAccuracyNearestTenMeters; extern const CLLocationAccuracy kCLLocationAccuracyHundredMeters; extern const CLLocationAccuracy kCLLocationAccuracyKilometer; extern const CLLocationAccuracy kCLLocationAccuracyThreeKilometers; http://pardel.net
  • 60. SkillsMatter - August 12th 2010 Turn by turn directions locationManager = [[CLLocationManager alloc] init]; locationManager.delegate = self; locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation; [locationManager startUpdatingLocation]; extern const CLLocationAccuracy kCLLocationAccuracyBestForNavigation; extern const CLLocationAccuracy kCLLocationAccuracyBest; extern const CLLocationAccuracy kCLLocationAccuracyNearestTenMeters; extern const CLLocationAccuracy kCLLocationAccuracyHundredMeters; extern const CLLocationAccuracy kCLLocationAccuracyKilometer; extern const CLLocationAccuracy kCLLocationAccuracyThreeKilometers; kCLLocationAccuracyBestForNavigation Use the highest possible accuracy and combine it with additional sensor data. This level of accuracy is intended for use in navigation applications that require precise position information at all times and are intended to be used only while the device is plugged in. http://pardel.net
  • 61. SkillsMatter - August 12th 2010 Location tracking a) Signiļ¬cant location changing http://pardel.net
  • 62. SkillsMatter - August 12th 2010 Location tracking a) Signiļ¬cant location changing http://pardel.net
  • 63. SkillsMatter - August 12th 2010 Location tracking a) Signiļ¬cant location changing http://pardel.net
  • 64. SkillsMatter - August 12th 2010 Location tracking a) Signiļ¬cant location changing http://pardel.net
  • 65. SkillsMatter - August 12th 2010 Location tracking a) Signiļ¬cant location changing locationManager = [[CLLocationManager alloc] init]; locationManager.delegate = self; [locationManager startMonitoringSignificantLocationChanges]; http://pardel.net
  • 66. SkillsMatter - August 12th 2010 Location tracking a) Signiļ¬cant location changing locationManager = [[CLLocationManager alloc] init]; locationManager.delegate = self; [locationManager startMonitoringSignificantLocationChanges]; - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation: (CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation http://pardel.net
  • 67. SkillsMatter - August 12th 2010 Location tracking b) Region monitoring (iPhone4 only) http://pardel.net
  • 68. SkillsMatter - August 12th 2010 Location tracking b) Region monitoring (iPhone4 only) http://pardel.net
  • 69. SkillsMatter - August 12th 2010 Location tracking b) Region monitoring (iPhone4 only) - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation: (CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation http://pardel.net
  • 70. SkillsMatter - August 12th 2010 Location tracking b) Region monitoring (iPhone4 only) locationManager = [[CLLocationManager alloc] init]; locationManager.delegate = self; locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters; CLLocationCoordinate2D regionCenterCoordinate; tempCoordinate.latitude = 51.5245; tempCoordinate.longitude = -0.0995; CLRegion *region = [[CLRegion alloc] initCircularRegionWithCenter:regionCenterCoordinate radius:10.0 identifier:@"Skills Matter"]; [locationManager startMonitoringForRegion:region desiredAccuracy:kCLLocationAccuracyNearestTenMeters]; - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation: (CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation http://pardel.net
  • 71. SkillsMatter - August 12th 2010 Multitasking http://pardel.net
  • 72. SkillsMatter - August 12th 2010 Multitasking Fast app switching Task Completion Background Audio Navigation & Location tracking VoIP http://pardel.net
  • 73. SkillsMatter - August 12th 2010 2. Local Notiļ¬cations http://pardel.net
  • 74. SkillsMatter - August 12th 2010 Local notiļ¬cations // check if the local notification class exists Class cls = NSClassFromString(@"UILocalNotification"); if (cls != nil) { // check if the device is supporting multitasking UIDevice* device = [UIDevice currentDevice]; if ([device respondsToSelector:@selector(isMultitaskingSupported)]) { UIApplication* app = [UIApplication sharedApplication]; UILocalNotification* alarm = [[[UILocalNotification alloc] init] autorelease]; if (alarm) { alarm.fireDate = [NSDate date]; alarm.timeZone = [NSTimeZone defaultTimeZone]; alarm.repeatInterval = 0; alarm.soundName = @"alert.caf"; alarm.alertBody = @"Ha ha"; [app scheduleLocalNotification:alarm]; } } } http://pardel.net
  • 75. SkillsMatter - August 12th 2010 Local notiļ¬cations // check if the local notification class exists Class cls = NSClassFromString(@"UILocalNotification"); if (cls != nil) { // check if the device is supporting multitasking UIDevice* device = [UIDevice currentDevice]; if ([device respondsToSelector:@selector(isMultitaskingSupported)]) { UIApplication* app = [UIApplication sharedApplication]; UILocalNotification* alarm = [[[UILocalNotification alloc] init] autorelease]; if (alarm) { alarm.fireDate = [NSDate date]; alarm.timeZone = [NSTimeZone defaultTimeZone]; alarm.repeatInterval = 0; alarm.soundName = @"alert.caf"; alarm.alertBody = @"Ha ha"; [app scheduleLocalNotification:alarm]; } } } Demo http://pardel.net
  • 76. SkillsMatter - August 12th 2010 3. iAd http://pardel.net
  • 77. SkillsMatter - August 12th 2010 iAd Nov 09 - Google acquires AdMob for $750 million in stock Jan 10 - Apple acquires Quattro Wireless for $275 million http://pardel.net
  • 78. SkillsMatter - August 12th 2010 iAd CPM + CPC = eCPM http://pardel.net
  • 79. SkillsMatter - August 12th 2010 iAd CPM + CPC = eCPM http://pardel.net
  • 80. SkillsMatter - August 12th 2010 iAd CPM + CPC = eCPM 60% revenues http://pardel.net
  • 81. SkillsMatter - August 12th 2010 iAd http://pardel.net
  • 82. SkillsMatter - August 12th 2010 iAd.framework @property(nonatomic, copy) NSSet *requiredContentSizeIdentifiers; ADBannerView @property (nonatomic, copy) NSString *currentContentSizeIdentifier; @property(nonatomic, readonly) BOOL bannerLoaded; @property(nonatomic, readonly) BOOL bannerViewActionInProgress; - (void)cancelBannerViewAction; @property(nonatomic, assign) id<ADBannerViewDelegate> delegate; http://pardel.net
  • 83. SkillsMatter - August 12th 2010 iAd.framework @property(nonatomic, copy) NSSet *requiredContentSizeIdentifiers; ADBannerView @property (nonatomic, copy) NSString *currentContentSizeIdentifier; @property(nonatomic, readonly) BOOL bannerLoaded; @property(nonatomic, readonly) BOOL bannerViewActionInProgress; - (void)cancelBannerViewAction; @property(nonatomic, assign) id<ADBannerViewDelegate> delegate; http://pardel.net
  • 84. SkillsMatter - August 12th 2010 iAd.framework @property(nonatomic, copy) NSSet *requiredContentSizeIdentifiers; ADBannerView @property (nonatomic, copy) NSString *currentContentSizeIdentifier; @property(nonatomic, readonly) BOOL bannerLoaded; @property(nonatomic, readonly) BOOL bannerViewActionInProgress; - (void)cancelBannerViewAction; @property(nonatomic, assign) id<ADBannerViewDelegate> delegate; http://pardel.net
  • 85. SkillsMatter - August 12th 2010 iAd.framework @property(nonatomic, copy) NSSet *requiredContentSizeIdentifiers; ADBannerView @property (nonatomic, copy) NSString *currentContentSizeIdentifier; @property(nonatomic, readonly) BOOL bannerLoaded; @property(nonatomic, readonly) BOOL bannerViewActionInProgress; - (void)cancelBannerViewAction; @property(nonatomic, assign) id<ADBannerViewDelegate> delegate; ADBannerContentSizeIdentiļ¬er320x50 ADBannerContentSizeIdentiļ¬er480x32 http://pardel.net
  • 86. SkillsMatter - August 12th 2010 iAd.framework ADBannerView ADBannerViewDelegate - (void)bannerViewDidLoadAd:(ADBannerView *)banner; - (BOOL)bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave; - (void)bannerViewActionDidFinish:(ADBannerView *)banner; - (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error; http://pardel.net
  • 87. SkillsMatter - August 12th 2010 iAd.framework ADBannerView ADBannerViewDelegate - (void)bannerViewDidLoadAd:(ADBannerView *)banner; - (BOOL)bannerViewActionShouldBegin:(ADBannerView *)banner willLeaveApplication:(BOOL)willLeave; - (void)bannerViewActionDidFinish:(ADBannerView *)banner; - (void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error; Demo http://pardel.net
  • 88. SkillsMatter - August 12th 2010 iAd JS HTML5 + CSS3 āœ¦ Banner āœ¦ Main advertising screen http://pardel.net
  • 89. SkillsMatter - August 12th 2010 4. Game Center http://pardel.net
  • 90. SkillsMatter - August 12th 2010 Game Center āœ¦ Beta āœ¦ Socialgaming network āœ¦ Leaderboards & Achievements http://pardel.net
  • 91. SkillsMatter - August 12th 2010 5. New Frameworks & APIs http://pardel.net
  • 92. SkillsMatter - August 12th 2010 Block Objects http://pardel.net
  • 93. SkillsMatter - August 12th 2010 Block Objects self.bgTaskId = [app beginBackgroundTaskWithExpirationHandler:^{ [self stopLongTask]; }]; http://pardel.net
  • 94. SkillsMatter - August 12th 2010 Block Objects self.bgTaskId = [app beginBackgroundTaskWithExpirationHandler:^{ [self stopLongTask]; }]; an object with some code respond to NSObject methods available in C http://pardel.net
  • 95. SkillsMatter - August 12th 2010 Blocks http://pardel.net
  • 96. SkillsMatter - August 12th 2010 Blocks returnType (^myBlockName) (argumentType) = ^(argumentType argumentName) { returnType x; ... return x; } http://pardel.net
  • 97. SkillsMatter - August 12th 2010 Blocks returnType (^myBlockName) (argumentType) = ^(argumentType argumentName) { returnType x; ... return x; } int (^myBlock) (int) = ^(int num) { return num * multiplier; } http://pardel.net
  • 98. SkillsMatter - August 12th 2010 Blocks returnType (^myBlockName) (argumentType) = ^(argumentType argumentName) { returnType x; ... return x; } int multiplier = 5; int (^myBlock) (int) = ^(int num) { return num * multiplier; } http://pardel.net
  • 99. SkillsMatter - August 12th 2010 Blocks returnType (^myBlockName) (argumentType) = ^(argumentType argumentName) { returnType x; ... return x; } int multiplier = 5; int (^myBlock) (int) = ^(int num) { return num * multiplier; } myBlock(7); http://pardel.net
  • 100. SkillsMatter - August 12th 2010 New Frameworks Quick Look Event Kit Core Motion Core Telephony Data Protection http://pardel.net
  • 101. SkillsMatter - August 12th 2010 Event Kit http://pardel.net
  • 102. SkillsMatter - August 12th 2010 Event Kit EKEventStore @property(nonatomic, readonly) NSArray *calendars @property(nonatomic, readonly) EKCalendar *defaultCalendarForNewEvents http://pardel.net
  • 103. SkillsMatter - August 12th 2010 Event Kit EKEventStore @property(nonatomic, readonly) NSArray *calendars @property(nonatomic, readonly) EKCalendar *defaultCalendarForNewEvents EKCalendar http://pardel.net
  • 104. SkillsMatter - August 12th 2010 Event Kit EKEventStore @property(nonatomic, readonly) NSArray *calendars @property(nonatomic, readonly) EKCalendar *defaultCalendarForNewEvents EKCalendar typedef enum { EKCalendarTypeLocal, EKCalendarTypeCalDAV, EKCalendarTypeExchange, EKCalendarTypeSubscription, EKCalendarTypeBirthday, } EKCalendarType; http://pardel.net
  • 105. SkillsMatter - August 12th 2010 Event Kit EKEventStore @property(nonatomic, readonly) NSArray *calendars @property(nonatomic, readonly) EKCalendar *defaultCalendarForNewEvents EKCalendar EKEvent typedef enum { EKCalendarTypeLocal, alarms -> EKAlarm EKCalendarTypeCalDAV, organizer, attendees -> EKParticipant EKCalendarTypeExchange, recurrenceRule -> EKRecurrenceRule EKCalendarTypeSubscription, EKCalendarTypeBirthday, } EKCalendarType; http://pardel.net
  • 106. SkillsMatter - August 12th 2010 New APIā€™s Block related methods -Ā (void)enumerateObjectsUsingBlock:(void (^)(id obj, NSUInteger idx, BOOL *stop)) block Photo Library Access MapKit improvements http://pardel.net
  • 107. SkillsMatter - August 12th 2010 iPhone & iPad Application Development Course Sep 29th to Oct 1st http://skillsmatter.com/course/os-mobile-server/ iphone-ipad-application-development http://pardel.net
  • 108. SkillsMatter - August 12th 2010 iPhone & iPad Application Development Course Sep 29th to Oct 1st http://skillsmatter.com/course/os-mobile-server/ iphone-ipad-application-development http://pardel.net
  • 109. SkillsMatter - August 12th 2010 PROGRAMME Day 1: Introduction to iOS development I Day 3: Advance Features I ā€¢ The development environment ā€¢ Touch & Gestures ā€¢ Objective C crash course ā€¢ Camera & Photo Library access ā€¢ Foundation framework ā€¢ Core Location ā€¢ Memory management ā€¢ Event Kit ā€¢ The iPhone Dev Center ā€¢ Core Motion ā€¢ Web Services (inc. XML & JSON Parsers) ā€¢ Threading ā€¢ Localisation Day 2: Introduction to iOS development II Day 4: Advance Features II ā€¢ Design patterns (MVC, Delegation, etc.) ā€¢ Documents Sharing ā€¢ Table views, Navigation, Tab bar ā€¢ Multitasking ā€¢ Data Persistence (Preferences, SQLite & ā€¢ Local notiļ¬cations Code Data) ā€¢ iPad Speciļ¬c topics ā€¢ Animation ā€¢ Testing and Optimisation (Instruments) ā€¢ Core Graphics ā€¢ Submitting your application to the App Store http://pardel.net
  • 110. SkillsMatter - August 12th 2010 Thank you http://pardel.net http://twitter.com/pardel http://pardel.net