Under the Bridge

Tutorial: MessageUI

My, those bright sparks over at MobileOrchard are just outdoing themselves; the second in their OS 3.0 tutorial series — In App Email, MessageUI — is now up, and you should definitely read it:

This time, we’ll add in-app email to a simple iPhone application using the new-in-3.0 MessageUI framework … with 3.0 and MessageUI, sending messages is straightforward and full featured.

We’ll start with working code for a simple app with a UI containing a single button. We’ll add code that shows the compose-an-email message UI and pre-fills the subject and content when the button is pressed.

We’re going to make a very distinct point of including this in all our app releases from now on — at the very least, an angry user that finds it easy to vent at you directly is much less of a problem than an angry user that gives you a ranting 1-star rating on the App Store, yes? And looking at all the low star reviews that we’ve gotten for any reason other than price, every single one of them is a complete misunderstanding that could have been corrected in seconds had we had the chance to do so, so anything that even might help avoid more of those is completely worth the effort to implement, wethinks!

Continue Reading →
2

Code: TouchSampleCode

Here’s a post with some useful code for detecting higher level touch events that’ll no doubt be useful if you haven’t gotten around to implementing that yourself:

Currently, I’ve coded examples for the following cases (along with the implicit intention to add more):

  • Tap and Hold
  • Tap and Hold with delay
  • DoubleTap and Hold
  • Multi-touch (two fingers) with simple stretch and pinch for zoom and unzoom

The source and example project is up on github; grab and enjoy!

Continue Reading →
0

Library: Core Plot

Here’s an up-and-coming project to keep an eye on: Core Plot, which is — as you could probably guess –

Core Plot is a plotting framework for Mac OS X and iPhone OS. It provides 2D visualization of data, and is tightly integrated with Apple technologies like Core Animation, Core Data, and Cocoa Bindings.

Whilst still a work in progress, it’s good enough to make pretty screenshots with:

DarkGraph

Nicer than you could do yourself in short order, yes? Well, nicer than we could do, definitely. The project is up on Google Code, and there’s a wiki to peruse as well as a discussion group. So if you’ve got some time on your hands to devote to an open source project, we definitely recommend you consider this one!

Continue Reading →
1

Web monetization

So do you have a blog that consistently attracts multiple hundreds of daily viewers, and feel like monetizing it? Yeah, the thought kinda crossed our minds once or twice too, fancy that. And here is an article which provides a decent summary of your options:

In this article, we will present you with all the unbiased and useful links, information and updates about the ins and outs of Web monetization; how intrusive Web 2.0 system monetization methods are, the most common utilized monetization methods and how successful are they. All you need to know about Website, Web application and Blog monetization is summarized with loads of links.

The six main monetization methods are listed in our humongous table below. In this table, we will be discussing, in details and with examples, how intrusive, successful and viable each of the monetization methods is in order to help companies, and start-ups in specific, develop an overall concept of what works most and why…

Indeed. And here is that “humongous” table:

monetizationtable

Nothing there so compelling we plan to inflict it upon you immediately, Dear Readers … but if you do have any thoughts on what you find the least offensive and/or most effective in a web traffic monetization kind of way, feel free to leave your thoughts!

Continue Reading →
1

UIImagePickerController in 3.0

So, you know what happens if you don’t do an exhaustive test of all the apps you support before a system upgrade? Well, let us tell you what happens if you don’t do an exhaustive test of all the apps you support before a system upgrade. You get emails like this:

Bought this program yesterday. But it crash when I select the camera view. I use OS3 on iPhone. Will there be an update that fixes this problem. ???

Oh, dear. Not only is it embarrassing to ever get any emails like that, in this case it’s particularly poor form as it was very foreseeable indeed that mucking around with the internals of UIImagePickerController as described here would be likely to break with a system revision. Whoops.

On the bright side, it turns out that the bits that throw an exception aren’t actually needed anymore, as the UI has been upgraded quite nicely between system versions; we’d been digging in to hide some annoying background and text which is no longer there, all the UI is fitted into an unobtrusive bottom bar. So, to update the above link, what the view hierarchy looks like in 3.0 is

PLCameraView
   PLPreviewView
   UIImageView
   PLCropOverlay
   UIImageView

and if you’d like to — as we do — insert an overlay between the preview and the controls, for 3.0 it’s simply

- (void)navigationController:(UINavigationController *)navigationController
willShowViewController:(UIViewController *)viewController
animated:(BOOL)animated
{
   if (!viewController)
   return;

   UIView* controllerViewHolder = viewController.view;
   UIView* controllerCameraView = [[controllerViewHolder subviews] objectAtIndex:0];
   UIView* controllerPreview = [[controllerCameraView subviews] objectAtIndex:0];
   [controllerCameraView insertSubview:self.overlayView aboveSubview:controllerPreview];
}

Considerably simpler. And it’s probably an OK bet that as the hierarchy has stayed with the preview image view as the first (bottom) child of a PLCameraView for two major revisions now, this same insert code should continue to work for the future now that we’re not doing any direct messing with any of the other views. Of course, anything that isn’t specifically documented is never guaranteed … so the real lesson here is, make SURE that you keep a list of anything even VAGUELY questionable you do and make sure you test it thoroughly between System revisions so that you don’t get blindsided by rightfully annoyed customers the day after release!

Continue Reading →
0

Tutorial: NSUndoManager

Happy New iPhone Day, everybody! And as the first in what’ll no doubt be a veritable tsunami of OS 3.0 SDK-related posts, Mobile Orchard is promising a series of “New in iPhone 3.0″ tutorials, and the first one is the definitely worthwhile Shake To Undo/Redo, NSUndoManager:

Undo/redo capabilities are provided by the NSUndoManager class. The class, documented here, works by keeping a stack of messages that, if sent, would serially undo the last action, the penultimate action, and on back until arriving at the initial state.

Let’s use an example to illustrate how this works: our city, concerned with a perceived increase in the number of trucks plying our streets, has commissioned a census. City workers will tally truck traffic using an iPhone app. See a truck, tap a button. Oops! Mistook that Subaru Forester for a truck? Shake to undo.

We’ll start with working code that lacks undo/redo and add those capabilities…

Read and learn!

Continue Reading →
1

Tips: UITableView

Here’s a selection of UITableView advice and code for you:

Easy custom UITableView drawing

Customizing your UITableView can be really easy. You don’t need custom drawing code. You don’t need subclasses of anything. Cocoa Touch provides all the drawing capability you need, all you have to do is use the right classes in the right ways and provide the layout.

Fast Scrolling in Tweetie with UITableView

Scrolling is the primary method of interaction on the iPhone. It has to be fast. It has to be fast. More than a few developers have asked me how I do it in Tweetie, so I figured I would share a really fast and really clean technique people can adopt in their own apps.

ASKit from Enormego’s open source

ASKit is an easy to use library for your iPhone applications. ASKit provides AppStore styled table views

UITables with Downloaded Images – Easy Asynchronous Code


Multi-threaded programming is hard and should be avoided whenever possible, and in this case Cocoa’s beautiful design came to my rescue: UIView heirachy + URL loading system + delegate design = multi-threaded image loading with no multi-threaded coding!

Drill down table view with a detail view


Using a drill down table view we can display hierarchical data where the last view is responsible of displaying some detail information. This view in which the detail information is displayed can be the same for all the data in the table view (like my last tutorial) or it can be different based on the path that the user took. In this tutorial I will show you how to add a different detail view based on the path the user took to get to the last item …

Lots of good stuff there, enjoy!

[EDIT: Check out ABTableViewCell, in Fast Scrolling in Tweetie with UITableView!]

Continue Reading →
1

Tip: Crash Reports

OK, maybe it doesn’t quite count as a “tip” exactly to tell you to read an Apple tech note, specifically

Technical Note TN2151
Crash Reporting for iPhone OS Applications

… but just in case you haven’t stumbled across it so far, there’s a particular point that you need to be aware of before you submit your next iPhone application build to Apple, which we figure pushes this into the tip-worthy category:

…Unlike crash logs from Mac OS X, iPhone OS logs do not contain symbol information when they’re written out. You have to “symbolicate” iPhone OS logs before you can analyze them.

Symbolication – resolving stack trace addresses to source code methods and lines – requires the application binary that was uploaded to the App Store and the .dSYM file that was generated when that binary was built. This must be an exact match – otherwise, the report cannot be symbolicated. It’s essential that you keep each build distributed to any users (regardless of mechanism) with its .dSYM file.

IMPORTANT: You must keep both the application binary and the .dSYM file in order to be able to fully symbolicate crash reports. You should archive these files for every build that you submit to iTunes Connect. The .dSYM and application binary are specifically tied together on a per-build-basis, and subsequent builds, even from the same source files, will not interoperate with files from other builds.

Given a crash report, the matching binary, and its .dSYM file, symbolication is relatively easy…

Now you know!

Continue Reading →
3

Resources: Open Source

Let’s list off today some sites worth checking out for iPhone/Mac programming open source goodies should there not — heaven forfend! — be anything particularly appropriate already mentioned in the annals of this humble journal. Hard though that is to imagine of course!

And for a vast list of iPhone-devoted not only open source projects but everything from LinkedIn groups to useful blogs (why, it even lists us! How sweet!), the pithily named

iPhone Resources

is not to be missed.

As always, if there’s anything noteworthy we’ve missed, comment away!

Continue Reading →
6

Vector UI design

Now this has some excellent potential for improving our work with designers: the charming people over at Mercury Intermedia have released a set of iPhone UI vector elements for your Illustrator-using pleasure!

Rather than cry over the lack of good vector elements, we took it upon ourselves to recreate a large portion of the iPhone’s UI elements so we would have them available for future projects. Obviously, we aren’t telling you all of this just to wave it in your face and tell you we have fancy tools that you don’t. Because we care so much about our fellow iPhone developers, we are making our vector files available to you today. (I think I just made myself throw up a little.)

And people say we have attitude. Ha! This Rusty fellow seems like he’d be excellent company indeed for a drink or twenty. But yes, the file is well worth the download. Also note references to

iPhone GUI PSD (Photoshop)

Ultimate iPhone Stencil (OmniGraffle)

Now, if someone would write an importer to transmogrify designer-created Illustrator files directly into .xib files, then we’d really have something going…

h/t: WebResourcesDepot!

Continue Reading →
3
Page 91 of 118 «...6070808990919293...»