#0 Overview
Create a useful or entertaining iOS app or game in a team of 2. The app should be "App Store ready" (or nearly so). The target hardware can be iPhone or iPad (or Universal). Previous submissions (in IST) have included:
- Apps that utilize web services to display data: Traffic App, Woot Ware, Starting Five (Dribble.com client), USGS Earthquake Mapper, iGas-Station, Philly Arts Today, Grubulate (recipe finder), Aimless Reader (random articles), Local News (in App Store)
- Entertainment: BackAppYa (comeback generator), Beer of the Day, Lionfish Hunter, Sudoku, Star Trader, Rate Your Boys, They all look the same to me, Jetpack Joyride Clone
- Utilities: S.P.A. - Shotgun Pattern Analyzer (used OpenCV), Veg Nut (recipe Finder), Diablo 3 Skill Calculator, MyIndia, Nihongo Study (Japanese Language App), Garbage Plate Finder (in App Store), Fitness App, Split the Bill
- Media Apps: Audio Streamer, Manga Reader
- RIT Themed: iRIT/RIT Now (in App Store), RIT Student Government, RIT Virtual Tour, RIT Taxi, Wallace Library App, RIT Room Booker, RIT Bus, TigerSafe (in App Store, never a student of mine)
- Won't get in the App Store: Wifi'r (used private API)
- Apps that would have to run on a jailbroken device ARE NOT ALLOWED
- Would it get in the App store? is the question your app should answer in the affirmative. The sole exception would be using a private iOS API - these are allowed.
#1 - Create an Application Definition Statement
An Application Definition Statement is a one or two line statement answering these two questions: What's the app do? and Who is it for?
#2 - Proposal
Using your Application Definition Statement as a starting point, put together the following:
- Full list of features - Brainstorm a full list of features that could possibly be implemented by the application. Even though we would never think of building such an App, think "Kitchen sink" or "Word on iPhone" as you are creating your list of features.
- Filtered list of features - Distill these features down to only the most essential ones that allow the application to fulfill its Product Definition Statement. Apple's Mantra: Pick the few features, most frequently used, by the majority of your users, most appropriate for the mobile context.
- Do a competitive analysis - Discover your competition at least 3 existing iPhone Apps in the App Store that are similar to what you want to create. Also look for one similar Android App in the Android app markets. Read the descriptions in the App store, and download the apps if they’re free. Write a quick review of each App: include its features, user rating, its strengths and weaknesses relative to its competition, and what features you feel its missing.
- Iterate - head back to steps A and B - did you leave anything out? Are there features you should add or remove? Update your document.
- Sketch out the UI - Describe the UI, and produce some mock-ups. These can be drawn by hand or created in Photoshop or Storyboard it. Tip: The OS X Grab utility can grab some or all of the screen.
- Deliverable - Put the above in an HTML document and post it to the web.
- Be ready to discuss your idea in class
#3 - Prototype
Getting a prototype up an running as fast as possible is critical.
- Put together the primary navigation of the App in Storyboard, and find at least 5 people to try the app on actual hardware. Use the knowledge gained to add critical features, and fix navigation issues.
#4 - Final Deliverable Requirements
- Meets the Application Definition Statement - an "A-level" app is a "polished solution to a well defined problem".
- A polished User Experience that respects the iOS Mobile HIG, as well as iOS 7 Design Principles:
- Clarity - it should be clear what the app does, and people should be able to use it without instruction.
- Deference - content is front and center - the UI should fade into the background.
- Depth - it should be a vibrant and life-like experience, and people should not get "lost" or be confused about what state the app is in.
- Uses Frameworks and/or methods of those frameworks that go well beyond what we've done in class this semester.
- Meets course coding standards (see below)
Coding Standards
- MVC!
- Separation of Concern - You should have multiple Objective-C classes, with each class having well-defined functionality accessed through a public interface.
- D.R.Y. - Don't Repeat Yourself. Repeated blocks of nearly identical code should be factored out and placed in a separate method.
- No "magic numbers" (unnamed numerical constants) - declare C style constants or enums or
#define
s instead. - Objective-C code conventions: public properties and methods declared in .h file, private ivars declared in .m and begin with an underscore, class names are capitalized, method names are in lower case.
- Well commented code. Each and every method you wrote gets a comment indicating what it does.
- There will be no compiler warnings, and no run time errors.
#5 - Documentation
- Requirements:
- Document that you met your application definition statement, and be specific about any work you did that truly went above and beyond.
- Discuss any struggles or failures in the development process.
- Describe which team member worked on what part of the project.
- Give credit for resources like images and sounds, and any software libraries or tutorials you used. Be sure to give yourself credit for graphics you created, or any code solutions you spent extra time on.
- Grade yourself (A-C) and justify it. Put this in a text file or Word document or PDF and submit it with your project.
- -10% if not done
Grade Rubric
- Good (Meet all requirements above reasonably well) = 90%
- Better (Go beyond expectations) = 95%
- Best (Go significantly beyond expectations) = 100%
- Wow! = 101%+
Deductions
- (-35%) The project won't compile. (Be sure that your resources have been imported and are in your project directory!)
- (-20%) The completed project is not installed on your iOS device.
- (-??%) Egregious violations of MVC or Coding Standards
Milestones
- Team and idea due start of class Thursday 4/24 (week 12) - see mycourses discussion threads
- Proposal due start of class Tuesday 4/29 (week 13) - post to
http://people.rit.edu/yourid/590-app/project-2.html
- Working Prototype due start of class Thursday 5/8 (week 14)
- Last day of class is Tuesday 5/13 (week 15)
- Final Version Due Tuesday 5/20 8AM during the scheduled final exam time (Finals Week)
- If you borrowed an iOS device from IGM or IST, you must return it at the time of our final meeting - and don't forget the cable.
*** Resources ***
We've just scratched the surface of iOS this semester - you are encouraged to explore other frameworks and capabilities of iOS.
- Look over this list of iOS frameworks I posted week 1
- http://www.raywenderlich.com has many written tutorials and a few video tutorials.
- Our Learn iOS 7 App Development book:
- Chapter 5 -
UITableView
- inserting and removing objects in a table view. Editing objects in a table view. - Chapter 7 -
UIImagePickerController
andAVCaptureDevice
- getting photos from the user's library, and taking photos with the device camera. - Chapter 9 - Media Player Framework - accessing user's music library and playing tracks
- Chapter 10 - UI Controls - buttons, switches, sliders, page controls, steppers, segmented controls, progress indicators, labels, text fields, text editing, pickers, date pickers, image views, scroll views.
- Chapter 11 - Custom Drawing with
CoreGraphics
Chapter 13 - Sharing content via Facebook, Twitter, Flickr, Vimeo, email, SMS - Chapter 5 -
- Chapter 14 - GameCenter App
- Chapter 16 - Gathering Motion Data
- Chapter 18 - Persisting Data
- Chapter 19 -
UIDocument
-based Apps - Chapter 24 - Concurrency