DPS923 MAP523 Assignment 2

Assignment 2 specifications.

.

This is a fairly small and focused assignment, with a two-week lifespan.

.

Assignment 2 due date

Your interim progress will be checked (but not graded) in-class on:
Thursday, April 9, 2015, at 9:50am ET

The assignment’s due date is:
Thursday, April 16, 2015, at 9:50am ET

Then, in class, you will demonstrate your app on a device.

.

Theme of the assignment

You can choose either of these two ideas:

1. Add some features to your existing “Toronto 2015” Pan Am Games app

2. Create a new app that fetches, uses, and stores XML-formatted data from a network endpoint

If you are already working on your own app idea (which has been previously approved by your professor), you can continue that effort.

.

New programming features

This app will enable you to create a solution for the following programming features that you have not yet used in another assignment:

  1. Location services
  2. Maybe – mapping
  3. Fetching XML-formatted data from a network endpoint
  4. Working (a little) with legacy Objective-C code
  5. Using the device’s camera
  6. Maybe – graphics and touch

.

Choice 1: Add some features to your existing
“Toronto 2015” Pan Am Games app

Your existing app currently does two things – it displays information about sports, and venues.

To the venues feature, add location and mapping. Enable the device to determine its current location. Then, present a map that will show your current location, and the location of the venue. It would also be nice for it to display a travel route to the venue, but that would be optional.

Add two (2) features to the app’s launch page: News, and Events. They are briefly described now, and how-to instructions are provided later in this document.

.

News

The News feature would display a list of news items, which are published by the Pan Am Games organization. The news items are published as a Twitter feed.

If you have a Twitter account, then you can use the Twitter library/kit to add this support to your app.

If not, then we will use a Twitter-to-RSS service (there are several, according to a web search), and consume the RSS feed, using the MWFeedParser library.

It is likely that this News feature will be implemented as a two-level table view (list of news items) and standard view (full content of the news item).

News items are NOT saved on the device.

.

Events

The Events feature would enable you to make brief notes about your visit to a Pan Am Games athletic event.

The notes would be presented on a table view. You can add a new note. The note will enable you to add a title and text, and would enable you to use the device to take a photo. The ‘add note’ function would use location services to store the location, and would add a timestamp.

A standard view would present a note’s content.

.

Choice 2: Create a new app that fetches, uses, and stores
XML-formatted data from a network endpoint

The Apple iTunes Store has music, movies, books, and more.

You need an app that will enable you to maintain a ‘wish list’ of iTunes Store entertainment items that you may want to acquire/consume at some point in time. Also the app will enable you to add other entertainment items from other sources.

The iTunes Store items can be fetched from a network endpoint (the iTunes Store API), and displayed on a list (table view). Selecting one of the items will save its information on the device store. The iTunes Store API that we’ll use delivers RSS, which we can handle with the MWFeedParser library.

New items can be created using the normal ‘add item’ pattern. A new item may also include a photo, from the device’s camera.

In both situations, the item would include a timestamp, and location data.

.

Choose your project, and begin work

Based on the information above, choose the project that you wish to work on.

It is very likely that this document will be updated (with helpful information, but not more specifications!) after our in-class discussion on Thursday, April 2. 

.

Handling RSS in an iOS app

Years ago, Michael Waterfall created MWFeedParser to enable iOS programmers to easily consume RSS feeds in their app. MWFeedParser is available on GitHub.

An RSS document has an <rss> element as its root element. Then, it has a <channel> element. In that element, it has zero or more <item> elements.

The <channel> element includes the RSS feed’s title, description, link, and so on.

Each <item> element includes a title, a publication date, descriptive content, a link, and perhaps other data. Read the RSS learning resource information for more.

The MWFeedParser code will read an RSS feed, given a URL.

A successful result will include an instance of the MWFeedInfo class, which (you can see) has data from the feed’s <channel> element.

The result will also include zero or more instances of the MWFeedItem class, in an array. As you can see, each includes data from the the feed’s <item> element.

Your professor has published a code example – named “ICT Announce” in the Week 11 folder of this course’s GitHub code repository. It will read the ‘announcements’ from the School of ICT web site, and display them on a list. The app has two-level navigation, so you can drill down to view the announcement item detail.

The following video will help you get started with MWFeedParser, and add it to your project.

.

Choice 1 – Pan Am Games – how-to

Do your work in a copy of your existing “Toronto 2015” project that you recently submitted.

.

“News” how-to

Add two controllers:

  1. NewsList, table view controller
  2. NewsDetail, standard view controller

The NewsList controller will display a list of news items that are published by the Pan Am Games organizers on its Twitter feed. View the Pan Am Games home page, and get familiar with the feature.

On the storyboard, add scenes for these controllers. Then, configure the scenes and controllers.

As you have just noticed, the items are published on a Twitter feed. We need RSS. A quick web search (using the search words twitter to rss) will return a number of results for web-based services that will read a Twitter feed, and return the results as RSS, including these:

  • TwitRSS.me
  • QueryFeed
  • RSS it for Me!
  • etc.

For educational purposes, select and use one of those to read the @TO2015 Twitter feed as RSS.

Then, follow the coding approach you studied in the “ICT Announce” code example to implement this feature into your project.

Optional:

If you would like to attempt to use the Twitter feed directly, you will need a Twitter user account, and a Twitter developer account. Then, you can use Twitter’s iOS library (aka Twitter Kit) to work with items in the feed.

.

“Events” how-to

For this feature, you will probably need three controllers:

  1. EventList
  2. EventDetail
  3. EventAdd

.

The EventList controller will display a list of events that the user creates with the EventAdd scene and controller. A user can view the EventDetail scene to view the details of an event.

On the storyboard, add scenes for these controllers. Then, configure the scenes and controllers.

It would make sense for the Event entity to have at least these attributes:

  • event title (short text title to appear in the list)
  • event info (longer text that describes the event)
  • a photo
  • location coordinates, using two separate “Double” attributes, for latitude and longitude
  • a date-and-time stamp

.

The EventAdd scene would have controls that enable text entry, as well as the ability to display the camera. Its controller would add the other data.

The EventDetail scene may or may not need to scroll, depending upon your layout.

.

Choice 2 – Media Wish List – how-to

The online Apple stores have music, movies, books, and apps.

For programmatic access, Apple has an API, and an RSS Feed Generator.

apple-rss-feed-generator

.

For example, using the selections shown on the image above, it generates this link:

https://itunes.apple.com/ca/rss/toptextbooks/limit=10/genre=9027/xml

.

Open this link in Firefox, view the page’s source code, and you will see the XML:

apple-rss-feed-example

.

Your app will enable a user to select an item, to add it to their ‘wish list’. A ‘wish list’ will have media items that the user wants to consume.

The items on the ‘wish list’ can come from two sources:

The iTunes store list

A fill-in form that the user completes

.

(more to come)

.

Submitting your work

Follow these instructions to submit your work:

  1. Make sure your project works correctly
  2. Locate your project folder in Finder
  3. Right-click the folder, and choose Compress “projectname, which creates a zip file (make sure the zip file is fairly small)
  4. Login to My.Seneca, and in this course’s Assignments area, look for the upload link, and submit your work there

.

.

.

.

.

.

.

.

.

.

.

.

  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: