Download iOS 4.2 beta for iPad, iPhone and iPod Touch [Devs Only]

Apple has pushed the iOS 4.2 Beta for iPad, iPhone 4, 3GS, 3G and iPod Touch 4G, 3G and 2G to developers. You can download iOS 4.2 beta for iPad, iPhone and iPod Touch from the iOS Dev Center if you’re a registered Apple developer.

iOS 4.2 is destined to bring all iOS 4 features to the iPad in November this year when iOS will become a universal firmware for all iDevices (iPhone, iPad and iPod Touch). During the last musical even, Steve Jobs mentioned the following features of iOS 4.2 for iPad, iPhone and iPod Touch:

functions

  • Multitasking
  • Folders
  • Game Centre
  • Wireless printing
  • AirPlay feature to stream video, music, and photos over Wi-Fi

WARNING: Avoid the iOS 4.2 beta firmware if you depend on jailbreak and unlock until further notice.

Download iOS 4.2 Beta 8c5091e

iOS 4.2 beta is available to developers only. Developers can download iOS 4.2 from the iOS Dev Center. However, if you still want to give it a shot, Google the queries listed below. (Please don’t ask for the links)

Download IOS 4.2 Beta For IPad

  • iPad1,1_4.2_8c5091e_Restore.ipsw
  • ios_4.2_beta__ipad__8c5091e.dmg

Download IOS 4.2 Beta For IPhone 4

  • iPhone3,1_4.2_8c5091e_Restore.ipsw
  • ios_4.2_beta__iphone_4__8c5091e.dmg

Download IOS 4.2 Beta For IPhone 3GS

  • iPhone2,1_4.2_8c5091e_Restore.ipsw
  • ios_4.2_beta__iphone_3gs__8c5091e.dmg

Download IOS 4.2 For IPhone 3G

  • iPhone1,2_4.2_8c5091e_Restore.ipsw
  • ios_4.2_beta__iphone_3g__8c5091e.dmg

Download IOS 4.2 Beta For IPod Touch 4G

  • iPod4,1_4.2_8c5091e_Restore.ipsw
  • ios_4.2_beta__ipod_touch__4th_generation__8c5091e.dmg

Download IOS 4.2 Beta For IPod Touch 3G

  • iPod3,1_4.2_8c5091e_Restore.ipsw
  • ios_4.2_beta__ipod_touch__3rd_generation__8c5091e.dmg

Download IOS 4.2 Beta For IPod Touch 2G

  • iPod2,1_4.2_8c5091e_Restore.ipsw
  • ios_4.2_beta__ipod_touch__2nd_generation__8c5091e.dmg

Related Posts

  1. Download iPad Firmware 3.2.0
  2. iPhone OS 4.0 Beta 3 Available for Developers
  3. Spirit Untethered Jailbreak 3.1.2 – 3.1.3 iPad, iPhone, iPod is Released

iPhone Game Friday: New Releases

This week’s Game Friday once again brings a roundup of the some of the best new games for the iPhone. We will be taking a look at a couple of retro-inspired time killers as well as some impressive modern games.
Like always, if you have a game you want reviewed, please let us know!

Pizza Boy

Pizza Boy

Pizza Boy

If you miss ridiculously silly and outrageously fun side-scrolling NES platform jumpers such as Kirby or Rescue Rangers, you’ll love Pizza Boy.

A thief has stolen the pizza present! Oh no! You are forced to chase it through levels filled with threats and dangers but to your advantage you can throw bottles of soda. Watch out for evil birds and furious dogs while you collect pizza slices and strawberries in a yummy mix.

The old school graphics are pixel perfect and really set the stage for nostalgic gaming.

Price: $1.99
Developer: ACNE Play 
Download: App Store

Virtual City

Virtual City

Virtual City

While we’re on the subject of retro gaming, remember the old SimCity games? Nearly two decades after the debut of that classic, the same basic idea is still the foundation for countless other games.

In Virtual City you build the city of your dreams – a residential paradise or an industrial center. Build dwelling houses and industrial buildings. Produce goods and deliver them to the shopping malls. Setup mass-transit system to take your citizens to places like parks, cinemas and stadiums.

Perfect for the relaxed but dedicated gamer who needs a new hobby.

Price: $2.99
Developer: G5 Entertainment 
Download: App Store

HYBRID 2: Saga of Nostalgia

HYBRID 2: Saga of Nostalgia

HYBRID 2: Saga of Nostalgia

The epic journey of our hero Grey continues in HYBRID 2: Saga of Nostalgia, where he starts on a new adventure in search of his beloved Fairy. Experience the visually impressive combo attacks, hundreds of unique items, revamped quest system and story development of our hero.

Definitely a great looking RPG with lots of beautiful artwork and a deep gameplay experience.

Price: $4.99
Developer: GAMEVIL Inc. 
Download: App Store

Rimelands: Hammer of Thor

Rimelands: Hammer of Thor

Rimelands: Hammer of Thor

Enter the frostbitten realm of Rimelands, where mankind with fantastic technology powered by an enigmatic substance called Steam is forever at odds with the magical creatures of legend called the Fair Folk.

Rimelands is an RPG like Hybrid but is a completely different experience. This game utilizes more modern 3D graphics and contains plenty of puzzles to keep you thinking. The gameplay is refreshingly unique and perfectly designed for the touch screen interface.

Price: $4.99
Developer: Crescent Moon Games 
Download: App Store

Assault Commando

Assault Commando

Assault Commando

A 3D shooter game, set in the south American jungle. You have to help Jack Gunfire, a cynic war hero to stop Albrecht Braun from taking over the world.

Assault Commando is a realistic war game with great graphics, mountable vehicles, tons of weapons and Open Feint integration. It’s not perfect but for $0.99 it’s definitely a great buy. Give it a shot if you’re feeling particularly violent.

Price: $0.99
Developer: 3D Magic Kft. 
Download: App Store

What Have You Been Playing?

We always appreciate your feedback and suggestions for other games so please let us know what you have been playing in the comments below.

Weekly Poll: When Will We See an iPad With a Camera?

We’re kicking off a new weekly poll today, getting our readers opinion on a different topic each week. Hopefully this will give us all a chance to talk about a relevant issue, share our thoughts, and generally have a chat in the comments!

Today I’m asking the question many people are wondering. When will we see an iPad with a camera? It’s obviously going to be the next hardware feature to be added to the iPad lineup, but will we be seeing it materialise in time for the holidays?

Traditionally, Apple have a yearly hardware upgrade cycle. This would mean we wouldn’t expect to see a new iPad released until April 2011. With all the hype about FaceTime being added to the new iPod touch, wouldn’t it make sense to add a camera to the iPad in time for the holiday season?

Personally, I think we’ll be waiting until April next year, so I wouldn’t get your hopes up. Do you agree? Let us know – and do share your thoughts in the comments!

Multi Platform Blogging with BlogPress

Almost all the major blogging platforms have their own native app and most of them support multiple blogs from the same platform. But what about all the users out there using multiple platforms?

For those of us dabbling with multiple blogs across multiple platforms, we need a better solution than juggling multiple apps. BlogPress is an app that supports eight of the popular blogging platforms. Now, if you are willing to let go of $2.99 from your pocket for a carefree blogging experience, follow me after the fold.

Setting Up Blog Accounts

Blogs from eight of the prominent blogging platforms namely, Blogger, MSN Live Spaces, WordPress, Movable Type, TypePad, Live Journal, Drupal and Joomla can be managed using BlogPress. That is an impressive list which conspicuously is missing the rage of the day – Tumblr. Maybe they counted it out as a microblogging?

Selecting a Blogging Platform

Selecting a Blogging Platform

We cannot start exploring or using the app without adding a new blog account, which the prompt on launch makes abundantly clear. For this review, I chose WordPress, a platform I am comfortable with. Depending on whether a blogging platform offers self-hosting, you will be asked for a blog URL on top of the regular login credentials.

WordPress users be sure to enable XML-RPC from Setting->Writing.

Adding Albums

After adding the blog, we have the option to make it the default blog for posting articles from the Settings page that follows. If your blog carries articles with images, BlogPress offers three solutions: use your Picasa or Flickr album or store it in the BlogPress album which uploads images to its servers.

Adding a WordPress Blog & Choosing an Album

Adding a WordPress Blog & Choosing an Album

Adding the Picasa and Flickr albums follows the same simple steps of selecting the service and adding the login credentials. Once the album is added, you can use the images from there in the article directly or you can store the images you have added from the Camera roll while uploading it to the article.

Adding a Picasa Album

Adding a Picasa Album

One feature that sets BlogPress apart is the ability to add multiple images to an article. Once uploaded, you can also move the image around in the blog for perfect placement.

Blog Settings

Planning to add videos to the article? You can with BlogPress. The video is uploaded to your YouTube account. From the settings page you can specify the location from where you are publishing the article and once published you can post the link automatically to your Twitter & Facebook accounts. Like in Mail.app, you can also append a custom signature to every article you publish.

Blog Settings & Article Options

Blog Settings & Article Options

Writing an Article

The Writing interface is free of clutter and helps to avoid distractions while composing an article. It just has four sections – blogs, title, location and the writing space. Once you select the blog by tapping on Blogs, you can go ahead and give the article a title. Tapping on the title brings up the article options page from where you tag and categorize the article.

BlogPress allows you to schedule a post to be published at a later date. Even though there are fields for tags and categories, they are not supported in all blogging platforms, so be sure to read the fine print at the end of the page.

Publishing an Article & Managing Articles

Publishing an Article & Managing Articles

Now that we have added categories, let’s go back to actual writing. The app is very light when it comes to features that can enhance the article being written. Tapping on the writing area brings the image upload icon on the far right corner… and that’s pretty much it. There are no styling options, even basic features like bold, italics and underline are absent. The absence of a hyplerlinking option is a serious matter of concern in these days of inbound and outbound links.

Hitting Save lets you publish the article right away or you can save it to the drafts for further editing. Publishing an article happened pretty fast and once it’s done, you can view the article in its full glory on Mobile Safari.

All the posts composed from BlogPress, both published ones and drafts, are listed in the Manage section of the app. Tapping on them brings up the editor and swiping across them allows you to delete them from your blog.

Final Thoughts

I tried to logging into two of my self hosted WordPress blogs to no avail. I was shown an error stating that either the network is down or the password is wrong (which they weren’t). I even tried to append the blog URL with wp-admin to no avail. After a long time chasing my tail I finally remembered the XML RPC option from the WordPress control panel. If only BlogPress displayed a more relevant error message, a lot of time could have been saved. I am pretty sure this oversight will cause serious confusion among casual, non-geek bloggers.

Multiple blog management via BlogPress is a complete mess. You cannot delete the blogs from the Manage page using the edit option. Interestingly, if you have added only one blog to the app, there is no option to delete it. The only way to delete a blog is by adding another blog. Even then, you cannot delete the last blog in the list (ie. there will always be a blog that cannot be deleted from the app). Weird!

On the flip side, BlogPress has a nice feature set and handles images better than many other apps in this category. There are not a lot of multiple blog handling apps in the appstore and BlogPress definitely has a competitive edge. However, unless the developers cut short the time it takes to figure how to manage the app, even all the competitive edge in the world will be meaningless.

Read the News In Style with Times for iPad

If you read RSS feeds, chances are that you have downloaded at least one or two different iOS apps of this type. I’ve tried at least ten of them, and every time I see a review of a new app, I’m inclined to check it out just to see if it does a better job than any of the others. Until very recently, I’ve been using Reeder on both iPhone and iPad, and have been very satisfied with both versions of the app.

What’s changed recently is not my choice of app, but rather my behaviour: I’ve come to question how many short-form articles I’ve been reading – I think my attention span has shrunk! Consequently, I’ve actually stopped reading my RSS feeds this week to see how it feels. I just opened up Google Reader and saw that I have a little over 800 unread items since Monday – that’s a lot of information my brain has not needed to process!

While running this personal experiment, I thought it might be a good time to check out Times from Acrylic Apps. After the jump, I’ll talk you through the app’s features…

First Things First

I’m going to begin by saying the obvious thing, so that it’s out of the way: Times operates by a different model than many other feed readers. Because of Google Reader’s dominance in this field, many of us are interested in finding an app that will work perfectly with Reader. Times is not that app. In a FAQ on the developer’s site, he’s pretty clear that he isn’t planning to add syncing with Google Reader, so if that’s what you’re looking for, just walk on by, there’s nothing to see here.

That’s what I have been after, and that’s why I’ve not so far taken Times very seriously, either in the first few weeks it was available on the iPad, or in the two-and-a-half years it’s been around on the Mac desktop. But my experiment is getting me wondering about whether I actually want to continue to have the added pressure of reading all those hundreds of RSS articles that show up in Google Reader every day, or whether I want to cut back quite drastically, and trim my feeds down to a few well chosen sites, rather than my current very broad range of sources.

Okay, now that I’ve covered what Times for iPad isn’t, let’s turn to what it is.

What It Looks Like

In a word, Times looks gorgeous. It’s excellently designed, with good attention paid to the look and feel of the app. The metaphor is a self-curated newspaper, and Times is designed to look the part:

The Times Interface

The Times Interface

To read an article, you simply tap on the headline or summary, and the main window rolls down to show the full article:

Viewing a Full Article

Viewing a Full Article

Times has a number of similarly elegant animations: tap on ‘View on Web’ at the top-right of the article view, and the article flips over to show its web version; and when you’ve finished reading, tap the rolled-down page at the bottom of the screen, and it unfolds to show the headline view again.

From the reading view, you can also share articles via email, Twitter, or Facebook:

Sharing an Article

Sharing an Article

The third option up in that right corner is to add an article to your “Shelf.” This is a way of saving items to read later – the Shelf is styled as a wooden bookshelf, which contains miniature versions of all the articles you save to it.

Your Feed Shelf

Your Feed Shelf

Now, while this is a useful feature, it also points to another way in which Times for iPad differs from other RSS apps. Many of us have come to rely on services like Instapaper and Read It Later to save articles that we plan to come back to, and many apps now include ways of sending articles across to these services. Times doesn’t have this ability, and many will see this as a serious downfall.

However, the Shelf is designed to serve a very similar purpose, and it’s easy to see that relying on it could make things simpler – for one thing, all your reading would be done within a single app, rather than needing to exit your RSS app and then fire up Instapaper or Read It Later. But of course this leaves out the very attractive features those services offer – their well-designed apps, their focus on the text itself, and their ubiquity Both Instapaper and Read It Later have universal iOS apps, so you can read your saved items on your iPhone on the go, both have online versions, so your items are available anywhere – and both also have easy ways to pipe your reading list over to a Kindle.

Times In Use

You will see across the top of the previous screenshots that I have three pages set up: Science, Technology, and Arts & Entertainment. To add a new page, one simply taps on ‘Edit’ and then on the ‘+’ that appears alongside the list of pages, and enters a page title:

Adding a Page

Adding a Page

Adding new feeds is straightforward: just tap on edit and then on the ‘+’ at the top corner of the column you want it added to, then type in the site address and Times will check for available feeds:

Adding a Feed

Adding a Feed

Once your feed is found and subscribed to, there are a few options available for how it’s displayed. Tap on ‘Settings’ at the top of the feed and there you can control options like the priority given to updating and whether items are displayed inline or in the web view. You can also change a few specifics about how items are displayed:

View Settings

View Settings

And this is where you can enter authentication details for any feeds that require logging in.

The number of columns and how they’re laid out is flexible so you can add, remove (just tap on the gear symbol at the head of the column when you’re in edit mode), shrink or widen columns at will.

Some Final Thoughts

Acrylic Apps are promising that Times 2 for Mac will be able to sync feeds between your desktop and Times for iPad. As things stand, if you want to read the same feeds on both machines, you need to add them to both versions independently and, in the case of the iPad version, manually, feed-by-feed. Not being able to import a bunch of feeds in one go is likely to put off some people right away – it’s certainly one of the reasons that I’ve not spent more time using Times for iPad before now. Even the ability to do a one-off import from Google Reader or any other app or service that could export your feeds to OPML would make Times more useful and easier to get started with.

Where Times for iPad really stands out is in its fine design – it’s elegant and easy to use. If I were 100% committed to Google Reader and my long list of feeds, I don’t think this would be enough to tempt me away, though. But, given my current experiment with reducing RSS input, I’m planning to stick with Times for now: using it is certainly a very pleasant experience, and it has all the features it needs to be a more-than-capable and extremely attractive feed reader.

Meet Your New Editor: Josh Johnson!

We’re going to be making a few changes at iPhone.AppStorm over the coming weeks, including some new types of post, a more frequent publishing schedule, and generally much more app awesomeness! There’s a lot to look forward to, and I’m really excited about what we have planned.

Part of this change involves taking on a brand new site editor for iPhone.AppStorm. I’d like to introduce the multi-talented Josh Johnson, who will be taking over the day-to-day running of this site from now on. Josh is an avid iPhone fan, Mac user, general Apple extraordinaire, and the perfect person to take up the iPhone.AppStorm torch!

You can catch Josh on Twitter, read some of the articles he’s contributed previously to Mac and iPhone.AppStorm, or just leave a comment to say Hi!

Thank you to every one of our amazing visitors who takes time out of their day to read AppStorm, and I hope you’ll join me in giving Josh a warm welcome to the team!

Dealing with the Twitter Oauth-Apocalypse

As many of you may have seen in recent weeks, Twitter changed its access policies and now requires OAuth from all third party applications that access Twitter user accounts. This is a large change from how many iPhone developers having been incorporating Twitter into their applications. What is OAuth exactly? How can iPhone developers get their apps up to date so they don’t break their Twitter incorporation? Well we have all the info you need to know about the OAuth-Apocalypse.

What is Oauth?

Twitter has a brief explanation of the difference between Basic Authentication and OAuth. They use the example of a letter and how it is addressed as their metaphor, and I think this gets the idea across clearly. You can see their entire explanation along with pros and cons here.

TL;DR With Basic Auth you would make every request and would include a username and password with each. This method is very insecure because it allows applications to actively hold user’s credentials and does not have any accountability for which application is performing what action on who’s account. If you imagine your Twitter account as a room, this is like having access to the room be granted based on a single key that many people have copies of. OAuth makes access to your room be granted by a key pad. And everyone that has access to the room has a different code they input into the keypad. You can see who came in and when and revoke anyone’s code at any time.

Twitter is evolving and now requiring that applications register. As a result, user’s gain more control over what services have access to their account. Additionally, Twitter can be more effective at targeting malicious applications, and developers can get more accurate feedback on the frequency of their app’s use throughout Twitter. With all this said, OAuth is tough to implement from scratch. So today we are going to go through the installation and use of a collection of classes that takes care of the dirty work for us, and let developers update the Twitter functionality of their application easily.

Required Classes

Today we are going to be building off a collection of classes that were created by several different people. The main portion of the class is the MGTwitterEngine which was created by Matt Legend Gemmell who’s website can be found here. From here, Ben Gottlieb took the classes and added his own drop in view controller to them. With all this together we have a simple view controller that will perform login and OAuth, and from there an engine that will perform any type of Twitter request we are looking to do. You can get a zip file of the root folder that contains all of these files here.

Installation

We are going to start out with a blank, view based iPhone project called iCodeOAuth. Once the project has come up, take the folder you downloaded called “Twitter+OAuth” and drag it into the “Other Sources” folder within Xcode. Make sure you check the box to copy the sources into the project folder. If we do a build now, you will get a ton of errors. That is because these classes require that libXML be a target of the project build as well. This can be accomplished by clicking the arrow next to Targets in the left column of the Xcode project. Here there will be an application called iCodeOAuth. If we right click on this and select Get Info we will see the info about our target. From here we click the build tab and search for the field “Header Search Paths”. You need to add the following into the Header Search Paths:

$(SDKROOT)/usr/include/libxml2

If you build again, you should see no errors and we can move forward with using this awesome set of classes.

Getting your Creds from Twitter

Now that we have these classes properly installed, it is time to take care of some registration requirements for OAuth. In order to use OAuth you must identify your app to Twitter. Once you do so, Twitter will provide you with an OAuthConsumerKey and an OAuthConsumerSecretKey. These are going to need to be provided to the classes we have just added into our project in order to talk with Twitter’s OAuth system. To register your application and get these creds go to http://dev.twitter.com/apps/new. I have created a application called the iCodeBlog OAuth Demo, whose credentials are included in the sample app which I have provided. For your own personal app you will need to go create your own Twitter Application and get your own keys.

Using SA_OAuthTwitter Engine

Ben Gottlieb used a great design pattern to create a very easy to use access point for the more complex MGTwitterEngine which lies underneath. In order to use these classes we will go into out view controller and add the following code to the header:

#import "SA_OAuthTwitterEngine.h"
#import "SA_OAuthTwitterController.h"
 
@interface iCodeOauthViewController : UIViewController  {
 
	IBOutlet UITableView *tableView;
	IBOutlet UITextField *textfield;
 
	SA_OAuthTwitterEngine *_engine;
	NSMutableArray *tweets;
}
 
@property (nonatomic, retain) IBOutlet UITableView *tableView;
@property (nonatomic, retain) IBOutlet UITextField *textfield;
 
-(IBAction)updateStream:(id)sender;
-(IBAction)tweet:(id)sender;
 
@end

And add the following into the Main

- (void)viewDidAppear:(BOOL)animated {
 
	if(_engine) return;
 
	_engine = [[SA_OAuthTwitterEngine alloc] initOAuthWithDelegate:self];
	_engine.consumerKey = @"PzkZj9g57ah2bcB58mD4Q";
	_engine.consumerSecret = @"OvogWpara8xybjMUDGcLklOeZSF12xnYHLE37rel2g";
 
	UIViewController *controller = [SA_OAuthTwitterController controllerToEnterCredentialsWithTwitterEngine: _engine delegate: self];
 
	if (controller)
		[self presentModalViewController: controller animated: YES];
	else {
		tweets = [[NSMutableArray alloc] init];
		[self updateStream:nil];
	}
}

This will instantiate our engine with the appropriate consumer and consumer secret keys. With this done we will create a controller. If you run the app now you will see a modal web view come up and lead to a sign in page for Twitter. This is a web view, but the great classes written by Ben are set up to programmatically handle the progression of these web views as the user signs in.

Scrolling to the bottom of this page there will be a username and password field to fill out. Don’t put in your Twitter credentials yet. We need to fill out a few delegate methods to handle the callback from SA_OAuthTwitterEngine.

Handling Login Callbacks

Insert the following into your main class.

#pragma mark IBActions
 
-(IBAction)updateStream:(id)sender {
 
}
 
-(IBAction)tweet:(id)sender {
 
}
 
#pragma mark SA_OAuthTwitterEngineDelegate
 
- (void) storeCachedTwitterOAuthData: (NSString *) data forUsername: (NSString *) username {
 
	NSUserDefaults	*defaults = [NSUserDefaults standardUserDefaults];
 
	[defaults setObject: data forKey: @"authData"];
	[defaults synchronize];
}
 
- (NSString *) cachedTwitterOAuthDataForUsername: (NSString *) username {
 
	return [[NSUserDefaults standardUserDefaults] objectForKey: @"authData"];
}
 
#pragma mark SA_OAuthTwitterController Delegate
 
- (void) OAuthTwitterController: (SA_OAuthTwitterController *) controller authenticatedWithUsername: (NSString *) username {
 
	NSLog(@"Authenticated with user %@", username);
 
	tweets = [[NSMutableArray alloc] init];
	[self updateStream:nil];
}
 
- (void) OAuthTwitterControllerFailed: (SA_OAuthTwitterController *) controller {
 
	NSLog(@"Authentication Failure");
}
 
- (void) OAuthTwitterControllerCanceled: (SA_OAuthTwitterController *) controller {
 
	NSLog(@"Authentication Canceled");
}

We just implemented the SA_OAuthTwitterControllerDelegate and the SA_OAuthTwitterEngineDelegate. The SA_OAuthTwitterEngineDelegate methods take care of storing the OAuth data string in a plist so that when the app is launched again the user will not have to sign in. SA_OAuthTwitterControllerDelegate methods are callbacks depending on what happens upon sign in. In this case when sign in is successful another method in our class called updateTweets will fire. For now we have those methods defined but we don’t have them filled in. We will get to that in a few steps. If you run the application and login using some Twitter credentials, you should see a successful authentication message appear in your debug screen. With this done, let’s add some interface elements to our view controller XIB so that we can start interacting with Twitter. Our final product is going to look like this:

Building the Interface

To Build the interface open up the XIB for your view controller. We are going to be putting in 2 buttons, a UITextField and a UITableView. Lay the elements out like so.

Make sure to connect the delegate and data source of the table view to the file owner. Also connect the “Tweet This” button to the tweet method and the Update Tweets method to the updateStream method. Finally, make sure the IBOutlets for the UITextField and the UITableView are set. With these in place we can fill in the final methods to take advantage of our Twitter engine.

Filling in our IBActions

Put the following code in for the IBActions which we defied before.

#pragma mark IBActions
 
-(IBAction)updateStream:(id)sender {
 
	[_engine getFollowedTimelineSinceID:1 startingAtPage:1 count:100];
}
 
-(IBAction)tweet:(id)sender {
 
	[textfield resignFirstResponder];
	[_engine sendUpdate:[textfield text]];
	[self updateStream:nil];
}

The update stream method will ask our engine to get the Twitter timeline of the people you follow. It will retrieve the first page of the first 100 tweets. There is a delegate method that fires off on this request completing that we will fill out in a moment. The tweet method dismisses the keyboard and then uses our engine to send an update. Once the update is send we update the tweet view below.

Making a really simple Tweet Object

To help us with displaying tweets we are going to make a very quick Tweet object. This will be a simple NSObject subclass. Use this code for the header:

@interface Tweet : NSObject {
 
	NSDictionary *contents;
}
 
-(NSString*)tweet;
-(NSString*)author;
 
@end

And this code for the main

@implementation Tweet
 
-(id)initWithTweetDictionary:(NSDictionary*)_contents {
 
	if(self = [super init]) {
 
		contents = _contents;
		[contents retain];
	}
 
	return self;
}
 
-(NSString*)tweet {
 
	return [contents objectForKey:@"text"];
}
 
-(NSString*)author {
 
	return [[contents objectForKey:@"user"] objectForKey:@"screen_name"];
}
@end

Finally make sure to import the class within the main of your view controller class. These will simply give easy methods to get the info we want out of each tweet dictionary that the MGTwitterEngine will return to us.

Filling in our MGTwitterEngineDelegate Methods

The MGTwitterEngine is doing most of the heavy lifting here when it comes to interacting with Twitter. The methods we are using to get tweets and to send tweets are all defined within the MGTwitterEngine. There is also a defined MGTwtterEngineDelegate which defines the callback methods that fire upon these requests finishing. For the sake of completeness, I have filled out all the methods, although only a few of them will be called in the case of our application working properly. Insert the following code into your main.

#pragma mark MGTwitterEngineDelegate Methods
 
- (void)requestSucceeded:(NSString *)connectionIdentifier {
 
	NSLog(@"Request Suceeded: %@", connectionIdentifier);
}
 
- (void)statusesReceived:(NSArray *)statuses forRequest:(NSString *)connectionIdentifier {
 
	tweets = [[NSMutableArray alloc] init];
 
	for(NSDictionary *d in statuses) {
 
		NSLog(@"See dictionary: %@", d);
 
		Tweet *tweet = [[Tweet alloc] initWithTweetDictionary:d];
		[tweets addObject:tweet];
		[tweet release];
	}
 
	[self.tableView reloadData];
}
 
- (void)receivedObject:(NSDictionary *)dictionary forRequest:(NSString *)connectionIdentifier {
 
	NSLog(@"Recieved Object: %@", dictionary);
}
 
- (void)directMessagesReceived:(NSArray *)messages forRequest:(NSString *)connectionIdentifier {
 
	NSLog(@"Direct Messages Received: %@", messages);
}
 
- (void)userInfoReceived:(NSArray *)userInfo forRequest:(NSString *)connectionIdentifier {
 
	NSLog(@"User Info Received: %@", userInfo);
}
 
- (void)miscInfoReceived:(NSArray *)miscInfo forRequest:(NSString *)connectionIdentifier {
 
	NSLog(@"Misc Info Received: %@", miscInfo);
}

These methods are all very straightforward in their naming. The only one we fill out significantly is the statusesReceived:forRequest method. Here is where tweets will be returned to us, each as a separate dictionary when we request the timeline for a user. We will clear the tweets array that we have defined for our class and create a Tweet object for each of the dictionaries we have representing a tweet. From there we will ask our table view to reload. The only task we have left to perform is to fill in our table view data source methods to show all the tweets.

Table View Data Source and Delegate Methods

Now we have everything in place. We just need to create a UITableViewCell for every tweet we have. We will also do some tweaking of the size of each cell and the number of lines of each UITextField within each table view cell. These methods are very common so I wont go into much detail on them. Here are the necessary Data Source and Delegate Methods.

#pragma mark UITableViewDataSource Methods 
 
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
 
	return [tweets count];
}
 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
 
	NSString *identifier = @"cell";
	UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
 
	if(!cell) {
 
		cell = [[UITableViewCell alloc] initWithStyle:UITableViewStyleGrouped reuseIdentifier:identifier];
		//[cell setBackgroundColor:[UIColor clearColor]];
	}
 
	[cell.textLabel setNumberOfLines:7];
	[cell.textLabel setText:[(Tweet*)[tweets objectAtIndex:indexPath.row] tweet]];
 
	return cell;
}
 
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
 
	return 150;
}

With this in place you will have an OAuth twitter client that is capable of doing any type of interaction with Twitter. You can find the source for the project here. Please post any questions you have and happy coding!

Follow me on Twitter at @cruffenach

Video demo of ABC’s My Generation synchronized app

As Dave reported earlier, ABC and Nielsen have teamed up to develop an iPad app that supports the new series My Generation. Users run the app while watching the show — either live or recorded — and it will stay synced with the section of the episode you’re watching by “listening” to the audio from your television, using the built-in microphone.

From there the app will present you with polls and quizzes related to what you’re watching, along with other interactive elements. You can get a sense of how this new form of interactivity will play out by watching the video above. [Yes, it’s Flash; sorry, but ABC’s hosting it and that’s the only way to get at it. -Ed.]

While you’re watching TV, the iPad is actually watching you, in a manner of speaking; the app serves as a tool for Nielsen to understand viewing habits, as they will use digital watermarking to track user behavior. With such a small percentage of viewers likely to be using the app during the show, it’s hard to tell just what kind of data they’ll get. But it is an interesting experiment.

My Generation doesn’t premiere until September 23. I tried it out on the screener (preview copies available to media and reviewers) of the pilot, and it wasn’t able to sync, so hopefully that just means the app’s just not ready to go live yet; either that, or the Nielsen audio encoding wasn’t embedded on the screener but has been added to the broadcast version.

TUAWVideo demo of ABC’s My Generation synchronized app originally appeared on The Unofficial Apple Weblog (TUAW) on Thu, 16 Sep 2010 20:30:00 EST. Please see our terms for use of feeds.

Read | Permalink | Email this | Comments

Android is taking the smartphone market, but don’t panic just yet

To read all the latest internet posts, the iPhone is all but dead, succumbing to the onslaught of Android phones being bought by customers in massive numbers. ComScore, who watches mobile use very carefully, pretty much says Android is rapidly eating away at the iPhone market share.

It’s enough to make an Apple stockholder or fan weep, or at least get a bit nervous. The problem is, it’s all a bit over-hyped. In a Fortune column today, the numbers get a bit of welcome perspective. While Android phones are doing very well, with market share up 5% in the three month period ending July 31 from the previous three months. Meanwhile Apple is down 1.3%, but the numbers don’t tell the whole story.

First, the iPhone sold out on the U.S. launch day on June 24, and has been in short supply ever since. Of course that means that the iPhone wasn’t even on sale for all of May and most of June. Further, since everyone and their cousin Clem knew a that a fresh iPhone model was coming out, it also likely suppressed sales.

Will Android eventually be the number one smartphone? Good chance. Suppliers and carriers get the OS for free, it’s a good phone with a vibrant app store and an increasing loyal user base. It’s not such good news for RIM and Microsoft, but who knows what the future might bring. It’s just that the shovels are getting deployed just a bit early to bury the iPhone, and Apple continues to be innovative and responsive to the competition, which is good for all smartphone users.

TUAWAndroid is taking the smartphone market, but don’t panic just yet originally appeared on The Unofficial Apple Weblog (TUAW) on Thu, 16 Sep 2010 17:00:00 EST. Please see our terms for use of feeds.

Read | Permalink | Email this | Comments

TUAW App Shootout: Comparing Quickoffice and Documents To Go

Although the iPad was never designed to be a laptop replacement, iWork for iPad was featured as one of the platform’s star programs. If you’re happy with the simplistic iWork format — and want to pay $9.99 each for Pages, Keynote and Numbers — then stick with it. However, for a few dollars more than the cost of just one iWork for iPad app, you can purchase either Documents To Go or Quickoffice and get all of the apps rolled into one.

TUAWTUAW App Shootout: Comparing Quickoffice and Documents To Go originally appeared on The Unofficial Apple Weblog (TUAW) on Thu, 16 Sep 2010 18:00:00 EST. Please see our terms for use of feeds.

Permalink | Email this | Comments

Release of Apple’s 27" LED Cinema Display appears to be imminent

If you’re holding out for Apple’s new 27″ LED Cinema Display, the wait might not be all that much longer. Back in July, the 27″ model was announced with a September release date. Being that it’s mid September, folks have been getting a little anxious with no sign of the new model, until now.

9to5Mac
is reporting that a few days ago, on the customization page for Mac Pro orders placed on Apple’s online store, the 27″ display was being advertised for purchase on an updated description, although the 24″ and 30″ models were only available for selection. As it stands now, that description has been removed, but with reports of 24″ and 30″ Cinema Display stock beginning to dwindle, it’s clear that some preparation for the release of the 27″ display is underway.

Apple’s official display page still lists the 27″ Cinema Display as “Coming September.” For all you 27″ Cinema Display loving people, you’ll have to hold on and place some faith in Apple’s word.

[Via MacRumors]

TUAWRelease of Apple’s 27″ LED Cinema Display appears to be imminent originally appeared on The Unofficial Apple Weblog (TUAW) on Thu, 16 Sep 2010 13:00:00 EST. Please see our terms for use of feeds.

Read | Permalink | Email this | Comments

ABC iPad app syncs with My Generation via audio cues

The merger of iPad and television took another step forward with the release of ABC’s My Generation Sync, which is the first iOS app to synchronize live with a TV show — specifically, My Generation, coming this fall from the network that’s owned by the company with Steve Jobs as its biggest shareholder.

If you’ve ever been a “Nielsen Family,” you’ve had a box installed in your house that sends data on your viewing habits back to the Nielsen corporation. It works by monitoring a program’s unique “audio watermark” emitted by your TV; human ears can’t detect the sounds.

The My Generation Sync app uses the iPad microphone to check for these same audio signals during episodes of My Generation, and syncs the app content to the program segment. This approach lets it work (theoretically) with programs played back in ‘timeshifted’ DVR mode, as well.

Once synchronized, the app will display polls, trivia, games and more in real time, all related to the show, without providing spoilers. It sounds like a lot of fun and we’ll have a full review soon. Imagine what this sort of technology could do paired up with Monday Night Football or election returns. The future is now!

[via Electronista]

TUAWABC iPad app syncs with My Generation via audio cues originally appeared on The Unofficial Apple Weblog (TUAW) on Thu, 16 Sep 2010 13:30:00 EST. Please see our terms for use of feeds.

Read | Permalink | Email this | Comments

Where are the iPad refurbs?

So it’s almost six months after the iPad’s US release — and there are still no iPad refurbs in the Apple Store. At a time when AT&T is already selling refurb iPhone 4’s, which just debuted this Summer, iPad refurbs are noticeably absent from normal retail channels.

The iPad, in fact, remains in a launch phase. It will only start hitting major US retailers like Target in October and is continuing to roll out overseas. The iPad launches tomorrow in China, with prices starting at CNY 3988.

Although Apple is certain to be already working on the next generation of iPad, it’s clear that its high demand continues to produce limited availability. We may not be seeing refurbished units for some time yet.

TUAWWhere are the iPad refurbs? originally appeared on The Unofficial Apple Weblog (TUAW) on Thu, 16 Sep 2010 14:00:00 EST. Please see our terms for use of feeds.

Read | Permalink | Email this | Comments

Dear Aunt TUAW: Burn baby burn

Dear Aunt TUAW,

Is iTunes slowly encouraging the death of CDs? The burn icon at the bottom of the interface has disappeared as you can see in this screen shot.

Concerned,

Your nephew Sean

TUAWDear Aunt TUAW: Burn baby burn originally appeared on The Unofficial Apple Weblog (TUAW) on Thu, 16 Sep 2010 15:00:00 EST. Please see our terms for use of feeds.

Read | Permalink | Email this | Comments