Updated Version of Course

An updated version of this couse including newer topics (e.g. iPad, iOS 4.x, etc.) is being offering during the Fall 2010 semester.

The updated course materials can be found at: cs491f10.wordpress.com

Final Project — Presentation & Demonstration

Due Date (for Slide Submission)

Wednesday, December 16th — 11:59pm

Background

Final project presentations and live demonstrations will occur during the time allotted for the final exam (Thursday, December 17th 6–8pm). Each group will be scheduled a 4 minute chunk of time for their presentation and demonstration. This 4 minute time limit will be strictly enforced. The specific order of presenters will be determined next class.

Your presentation should consist of a minute or so of slides which present an introduction to your application, followed by an actual live demonstration of your app.

Your slides must be in PDF format and should contain the following content…

  • Title slide — consisting of app icon, app name and team member names
  • App Description slide — a one slide overview of your application
  • Frameworks and Libraries slide — a one slide that lists frameworks or libraries used by the app and mentions what they were used for
  • Backup Demo Slides — in the event that something fails during your live demo, you should have screen captures that are capable of being used as backup

Your demonstration should highlight the key features of your application. You are strongly encouraged to rehearse your demonstration ahead of time.

Demo Information

I will be building and installing all apps into the iPhone Simulator on my laptop for the demonstration. To ensure a smooth demo, I recommend the following…

  • When testing your app, I would strongly suggest that you remove your app from the simulator and try a fresh install before submitting to avoid any issues caused by (lack of) residual artifacts.
  • Perform a dry run on the demo hardware — I will be holding special office hours Tuesday, December 15th 5:30–7:00pm where you can stop by and do a dry run on the actual machine that will be used for the demos.

If your app requires features that are not supported on the simulator (such as camera, accelerometer, etc.) email me as soon as possible so we can make the necessary accommodations.

Submission

To submit your slides, open up a terminal, navigate to the directory containing your slides then issue the command:

submit cs491i final-slides slides.pdf

Final Project — Mock App Store Submission

Due Date

Tuesday, December 15th — 11:59pm

Background

If you were publishing an application on the App Store, you would need to provide information about your app for submission. To simulate that experience, you will prepare a “mock App Store” submission.

For this write up I’ve provided a zip file which you must use as a template for writing up the details of your app. This zipfile includes an HTML file that when viewed in a web browser displays a page similar to that on the App Store.

Specifically you must edit the following in index.html:

  • Copy your app’s icon (a 57x57px PNG file) into the directory and update the app icon’s image tag to show your icon. Note, you needn’t try to apply Apple’s rounding, beveling, or highlighting — I have a script that will generate the rounded version as seen in the simulator, including honoring the “Icon already includes gloss and bevel effects” flag.
  • Update the HTML to include your app’s name.
  • Update the HTML to include your name(s).
  • Update the Apple Frameworks Used list to include all frameworks imported by your app.
  • Update the Third Party Libraries Used list to include all libraries used by your app. If you aren’t using any third party libraries or classes, you may remove this section.
  • Replace the sample description text with your own app’s description. Do not use any special HTML or emoji within the paragraphs. If your app requires features found on certain devices (i.e. a camera) state so in the description. Do not include testimonials or reviews like you may see in some descriptions.
  • Include up to 5 screenshots (must be 320x480px or 480x320px PNGs) and captions from your app.

All “Mock App Store” submissions will be aggregated and posted on the course blog prior to the final presentations.

To get a feel for the content provided in app descriptions, I encourage you to take a look at apps that are on the store. Some of the more popular apps that I feel have pretty good descriptions are included below:

Submission

Once you’ve made the changes to the provided HTML file and swapped out the sample icon and images with your own package it up by zipping up the entire directory.

To submit your mock app store submission, open up a terminal, navigate to your zip file then issue the command:

submit cs491i final-appstore appstore.zip

Final Project — Source Code Submission

Due Date

Monday, December 14th — 11:59pm

Grading Criteria

Grading criteria for the final project will be based on the criteria from the week-long assignments…

  • Correctness of application
  • Appearance of application
  • Adherence to Objective-C and iPhone coding conventions
  • Neatly formatted and indented code
  • Well documented header files
  • Absence of significant performance issues
  • Absence of memory leaks

…as well as…

  • Scope — Is the app sufficiently complex? Does it deliver what was proposed?
  • Polish — How polished is the app? Does it have a launch screen image? Does it have an app icon? Is the app appropriately named? Is the user experience well thought out?
  • Interesting, novelty and uniqueness — Is the app interesting, or is it just a remake of an already existing app? What’s the overall coolness factor?
  • Required Elements — Does it contain multiple views? Does it persist some form of data?
  • Suggested Elements — Does it contain sound effects? Does it contain animation?

Submission

Like all of the week-long projects this semester, you will need to submit your source code and necessary resources for grading. You should remove your build directory and zip up the directory containing your Xcode project.

To submit your final project source code, open up a terminal, navigate to your zip file then issue the command:

submit cs491i final-code project.zip

Assignment 8 — Redrawing the View

I’ve had several people email me with issues redrawing the board on touch events. Since this seems to be a semi-common problem, I thought I’d take a moment to address it here.

The problem is likely caused by not all of the draw code being executed. If you take a look at the GLView class’s drawView method, you’ll see that there’s some code before and after the call to the delegate’s (the view controller) drawView: method. It is this code that actually does the screen refresh.

- (void)drawView {
  glBindFramebufferOES(GL_FRAMEBUFFER_OES, viewFramebuffer);
  [delegate drawView:self];
  glBindRenderbufferOES(GL_RENDERBUFFER_OES, viewRenderbuffer);
  [context presentRenderbuffer:GL_RENDERBUFFER_OES];
}

So, by simply calling the view controller’s drawView: method the screen refresh doesn’t happen. To ensure this code gets called, instead of invoking the view controller’s drawRect: method simply invoke the GLView’s (the view controllers view property) drawRect method like so…

[(GLView *)self.view drawView];

iPhone Development Internships with Mindgrub Technologies

I was recently contacted by Mindgrub Technologies about several iPhone (and BlackBerry) development internship positions they have available. They’re looking for 3-5 students for 2-3 day a week part-time positions. Additional details below…

Mindgrub

Mindgrub seeks Computer Science students proficient in C/C++ or Java to help with developing iPhone and Blackberry Apps for various client projects. Candidates should be able to work independently and as part of a team. Object oriented programming and flexibility to move from project to project as needed a major plus!! Other skills such as JavaScript and CSS know-how also a plus, but not a must.

  • Position: Part-time internship
  • Location: Baltimore, MD
  • Rate: $9-$12/Hr.

You can get additional information about Mindgrub on their website at: mindgrub.com.

Email résumés to jobs@mindgrub.com for consideration.

Assignment 6 — Adding the MapKit Framework

I thought I’d take a moment to post about a problem a couple of people have been having. If you’re getting the following error, it is probably the result of not having added the MapKit framework…

*** Terminating app due to uncaught exception ‘NSInvalidUnarchiveOperationException’, reason: ‘*** -[NSKeyedUnarchiver decodeObjectForKey:]: cannot decode object of class (MKMapView)’

Under Xcode 3.2 (the screenshots in the notes) MapKit is pre-populated in the Add → Existing Frameworks… dialog and simply requires selecting MapKit from the list. However under Xcode 3.1 you have to do a bit more work. Follow the steps below for adding MapKit to your project if you haven’t done so already…

1) Open Finder and browse to /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.0.sdk/System/Library/Frameworks as shown below (you may need to adjust the path a little if using a SDK newer than 3.0 with Xcode 3.1)…

Finder Window

Finder Window

2) Select the MapKit.framework fold and drag-and-drop it into the root of your Xcode project as shown below…

DnD Framework into Xcode

DnD Framework into Xcode

3) You should uncheck the box that states “Copy items into destination group’s folder (if needed)”, and press Add…

Copy Dialog

Copy Dialog

4) The MapKit framework should now appear under your project with the rest of the frameworks and your app should now contain the necessary MapKit libraries to run.

The Added Framework

The Added Framework

Course Blog Now iPhone Friendly

WordPress just updated their site such that if you visit the site from an iPhone you are automatically presented with an iPhone friendly version of the page. So, if you visit the course pages on your iPhone you should now see something like this…

Course Blog

Course Blog

They are even serving the HTML correctly such that you can add it to the home screen with an icon like so…

Added to Home Screen

Added to Home Screen

Assignment 5 — Updated Word Lists

New and improved! Now with less profanity!

George Carlin

The word lists provided for assignment 5 have been updated. The original lists (derived from the 12Dicts open source project) contained a number of dirty, profane and offensive words. I’ve run the lists through a basic dirty word list (care of the open source WordPress Polite-ifier Plugin project) and have updated them with the cleaned up versions.

On-Device Development

On-Device Development

Overview

In order to install and run your own apps on your iPhone or iPod touch a couple of things need to happen — namely both you and your device must be added to the university program.

In order for you to sign applications you must obtain a digital certificate. This process is roughly as follows…

  1. You must be sent an invite from the University Program admin (your instructor)
  2. Once you receive your invite, you must generate a certificate signing request though the Keychain Access app in OS X
  3. Once generated, you must submit this certificate request to the program portal for approval by the University Program admin (your instructor)
  4. Once approved, you must download and install your signing certificate

In order to install your signed app to an iPhone or iPod touch, it must be added to a provisioning profile which identifies who can publish to what devices. This process is roughly as follows…

  1. Your device’s Unique Device Identifier (UDID) must be added to the course’s provisioning profile
  2. Your approved developer certificate must be added to the course’s provisioning profile
  3. Once your certificate and device have been added to the provisioning profile, you may download and install the it into Xcode

Once you’ve installed your certificate and provisioning profile, you can build and publish applications to your iPhone or iPod touch.

Requesting an Invite

If you would like to do on-device development on your iPhone or iPod touch, you must send me an email with the following information:

  • First Name
  • Last Name
  • Email address — see Email Address Considerations below
  • myUMBC username
  • The UDID of the device you wish to use — see Finding your Unique Device Identifier (UDID) below

When I get your request I’ll send you an invite. Once you get this invite, you’ll be able to log into the portal and submit your certificate signing request.

Once you submit your certificate signing request to the portal I’ll be automatically notified. When I get this notification, I’ll add your device to the list and approve your certificate request. You will automatically get an email once the approval happens. You will then be able to log back into the portal and download your certificate and the provisioning profile.

Email Address Considerations

I’d strongly recommend that you use your UMBC email address and not a personal email address. If you think that you’ll ever want to sign up as a regular developer and submit apps to the store, I’d recommend that you keep that separate and re-enroll to the Apple Developer Connection with a UMBC specific identity.

Finding your Unique Device Identifier (UDID)

To find out your device’s UDID, simply connect your device to your Mac and then open Xcode (if you connect while Xcode is open, it may not see the device). In Xcode, select “Organizer” from the “Window” menu option. Once the window opens, select your device under the DEVICES category on the sidebar. The 40 character string in the Identifier field is your device’s UDID. I strongly recommend that you copy and paste this into your email.

Locating Your UDID

Locating Your UDID

A Note About Keys

If you are going to do on-device development in the labs, you must export your private key and certificate and save it to your AFS home directory before logging out and re-import it when logging back in. If you do not save it and log off your private key used for signing will be lost and cannot be recovered!

Whether you are working in the labs or not, I strongly recommend that you export your keys and certificate and save them to some other media (such as within your home directory on AFS or a thumb drive).

Expiration

The development provisioning profile is currently valid through December 24th 2009.

Unfortunately, due to legal issues it appears that we will be unable to issue distribution profiles, so once the development provisioning profile expires your apps will cease to launch. If you wish to distribute an app beyond the scope and duration of this class, you’ll need to register as a paid developer.

More Information

For more information see the following:

Follow

Get every new post delivered to your Inbox.