Tip: iPhone apps bouwen met HTML/CSS/JavaScript
Oké, het is geen Obj-C. Maar toch bijzonder interessant:
iPhone’s Safari webbrowser ondersteunt HTML5, en biedt daardoor veel meer mogelijkheden dan wat je van Microsoft’s Internet Explorer gewend bent. Denk bijvoorbeeld aan CSS animaties, 3D weergave-mogelijkheden en client side databases.
In Jonathan Stark’s boek Building iPhone Apps with HTML, CSS and JavaScript lees je er vanalles over. Compleet met voorbeelden.
Tip: Google Analytics in je iPhone app
Je kent ongetwijfeld Google Analytics voor websites. Maar wist je ook dat je precies diezelfde analytics tegenwoordig ook bijzonder eenvoudig in je iPhone apps kunt integreren?
- //=== Initialiseer Google Analytics in je AppDelegate:
-
- #import "GANTracker.h"
-
- - (void)applicationDidFinishLaunching:(UIApplication *)application
- {
- //--- Google Analytics
-
- [[GANTracker sharedTracker] startTrackerWithAccountID:@"UA-12345678-1"
- dispatchPeriod:10
- delegate:nil];
- ...
- }
-
- //=== En track de pageviews in je ViewControllers:
-
- - (void)viewDidAppear:(BOOL)animated
- {
- //--- Google Analytics
-
- NSError *error;
- [[GANTracker sharedTracker] trackPageview:@"NaamVanPagina" withError:&error];
-
- ...
- }
Meer info: Google Analytics voor iPhone apps
Tip: UINavigationBar met achtergrondafbeelding
Als je de navigatiebalk bovenin je app wilt ‘branden’ met een eigen achtergrond, kun je dat ‘t handigst met een categorie-extensie op de UINavigationBar doen:
- // UINavigationBarBackgroundImage.h
-
- @interface UINavigationBar (BackgroundImage)
- @end
-
- // UINavigationBarBackgroundImage.m
-
- #import "UINavigationBarBackgroundImage.h"
-
- @implementation UINavigationBar (BackgroundImage)
-
- - (void)drawRect:(CGRect)rect
- {
- [[UIImage imageNamed:@"navBarBackground.png"] drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
- }
-
- @end
Tip: Gegarandeerd verbinding
Op het Vodafone 3G netwerk krijg je vaak pas verbinding nadat je je app een keertje uit en terug aan hebt gezet. En dat is natuurlijk bijzonder vervelend.
Met een Auto Retry los je dit probleem doeltreffend op:
- - (void)verversGegevens
- {
- self.navigationItem.rightBarButtonItem = _reloadButtonItemWithActivity;
- [self.view addSubview:_propellortje];
- [_propellortje startAnimating];
- [self.tableView setAlpha:.5];
-
- _retryCount = 0;
- [_connection cancel];
- self.request = [NSURLRequest requestWithURL:[NSURL URLWithString:_remotePath] cachePolicy:0 timeoutInterval:5];
- }
-
- #pragma mark --- NSURLConnection delegate methods ---
-
- {
- if (_retryCount++ < 2)
- {
- [_connection cancel];
- self.request = [NSURLRequest requestWithURL:[NSURL URLWithString:_remotePath] cachePolicy:0 timeoutInterval:15];
- NSLog(@"Connection error -> RETRY");
- }
- else
- {
- self.navigationItem.rightBarButtonItem = _reloadButtonItem;
- [_propellortje stopAnimating];
- [_propellortje removeFromSuperview];
- NSLog(@"Connection error %@", error);
-
- //TODO: foutmelding naar gebruiker
- }
- }