Session 4

Extend this Application

Session Materials

Assignment

Official Write-up

Resources

3D Touch and Peek and Pop

Assignment

Discoverability in the App Store is one of the biggest problems facing developers (that and Core Data). In this assignment, we will create an application that will allow users to search the App Store and keep a wishlist of apps they are interested in. The wishlist will be backed by Core Data. They will be able to add games to the wishlist from within the app and from a share extension from the App Store application. Users will be able to view their wishlist from a Today extension.

Application Overview

The user will launch the app and be presented with their wishlist of applications. This list should be able to be “live searched”. Within the application (the design is up to you), a prominent search bar on the interface will be used to query the iTunes API for applications. The results should be returned presented in a stylized table view or collection view.

Tip: Look at the layout of the App Store for a guideline on what information to display for each application. See Figure 1.



Tapping on a cell, the user should be presented with the full details of the application along with two buttons. The first button should launch a SKStoreProductViewController which would allow the user to purchase the app from the App Store. The second button should add the application to a wishlist that is backed by Core Data.

Figure 1. App Store search results table.
Figure 1. App Store search results table.

Querying the iTunes API

https://itunes.apple.com/search?term=flappy&country=us&entity=software
Figure 2. Create a secondary application to create the Core Data store that will be used in your Game Store app.
Figure 2. Create a secondary application to create the Core Data store that will be used in your Game Store app.
Tip: See references above for more on `NSLignguistic Tagger`.



Search Screen

Tip: See references above for Mysteries of Auto-Layout 1 which walks through creating the App Store interface using Auto-Layouts with a focus on UIStackView.)



Figure 3. A prototype search interface for the application.
Figure 3. A prototype search interface for the application.

Application Details Screen

Figure 3. Apple's App Store application details screen.
Figure 3. Apple's App Store application details screen.
Tip: You may include the first screenshot in your Core Data store to give a better performance for loading.



Wishlist List

Figure 3. The wishlist should display the user's collected application in a table view.  Tapping on a cell should show the application's detail screen.
Figure 3. The wishlist should display the user's collected application in a table view. Tapping on a cell should show the application's detail screen.

App Extensions

The application should implement a Today extension and a Share extension. Working demonstrations of the implementation of these extensions are in the 2016-ShareExtension playground.

Share Extension

"<NSItemProvider: 0x170244140> {types = (\n    \"public.image\"\n)}",
"<NSItemProvider: 0x170244320> {types = (\n    \"public.plain-text\"\n)}",
"<NSItemProvider: 0x170244410> {types = (\n    \"public.url\"\n)}"
Tip: In the example, I am saving the image as `NSData` in user defaults, which is a worst-practice (but it does work).



Today Extension

3D Touch

The application should take advantage of 3D touch by implementing the following features.

Home Screen Quick Actions

Implement quick actions when the user taps on the application icon on the home screen.

Peek and Pop

Application Design

Grading

The application should compile with no errors or warnings and perform all described behaviors. If the app does not compile you will receive a 0. Feel free to explore additional enhancements to improve the appearance or functionality of the application.

Due Date

Assignment 3 is due May 1, 2015 at 5:29pm. Use the assignment repo to submit your assignment. You should include both applications, your Core Data importer and your iOS application in the repository.