Advanced IOS Application Development

5 days

FMC Custom Course

This custom-designed class is created and owned by Future Media Concepts (FMC). It is not sponsored or authorized by Apple Inc.

Course Description

This course is a continuation of Fundamentals of iOS Application Development. In it, you explore advanced features such as application settings, data persistence, using the iCloud, background processing, core location, localization, the camera and photo library. Each step will present a new and unique project built from start to finish.

Who needs to attend:

Anyone who wants to take the skills learned in Level-1 to the next step. While not required, it would also be helpful to have your own iOS device (iPhone or iPad) and be a registered developer with Apple. Many of the features demonstrated in this course will not run in the Xcode simulator and must be tested on an actual iOS device. Also, for this course you will need an Intel-based Apple computer with Xcode installed. Xcode can be downloaded from the App Store free of charge and is approximately 2.5 GB large.

Course Book

Beginning iPhone Development with Swift - Kim Topley, Fredrik Olsson, Jack Nutting, David Mark & Jeff LaMarche (Apress)

Prerequisites

Fundamentals of iOS Application Development or an equivalent knowledge is required for this course

Course Outline:

(Note: Because Swift is an emerging language Apple is releasing frequent updates. As a result, the following outline may be subject to last minute alterations not reflected here)

Day 1

Application Life Cycle and States

  • The Application Life Cycle
  • The Structure of an App
  • The Main Run Loop
  • Application Execution States
  • Launch Time Tasks
  • Preparing Apps for Entering the Foreground
  • App State Change Notifications
  • Handling Interruptions
  • Inactive State
  • App Termination

Concurrency and Background Processing

  • Threads and concurrency
  • Grand Central Dispatch (GCD)
  • Executing Finite-Length Tasks
  • Downloading Content in the Background
  • Implementing Long-Running Tasks
  • Understanding When Apps Get Launched into the Background
  • Preparing Apps for Entering the Background
  • Getting the User's Attention While in the Background
  • Being a Responsible Background App
  • Opting Out of Background Execution

Application Settings

  • Adding a Settings Bundle to a Project
  • Configuring the Preferences Screen
  • Reading Preferences in Code
  • Adding Icons to Settings Bundle
  • Registering Default Values

Data Persistence

  • The Application Sandbox
  • Documents and Library Directories

Data Persistence: On-Device Files

  • Property List Serialization
  • Archiving Custom Objects

Data Persistence: Embedded SQLite Databases

  • Creating and Opening the Database
  • Modifying Data

Day 2

Data Persistence: Core Data

  • Core Data Architecture
  • Persistent Store
  • Persistent Store Coordinator
  • Managed Objects
  • Managed Object Context
  • Entities
  • Transformable Attributes
  • Core Data Relationships
  • Fetch Requests and Predicates
  • Memory Management Using Core Data
  • Instance and Data Life Cycles
  • Change and Undo Management
  • Manipulating Relationships and Object Graph Integrity
  • Cross-Store Relationships
  • Issues with Unidirectional Relationships
  • Non-Standard Attributes
  • Managed Object Validation
  • Faulting and Uniquing
  • Versioning
  • Troubleshooting Core Data

Day 3

Efficient App Development

  • Using XCode Instruments
  • Examining the Behavior of Apps or Processes
  • Examining Device-Specific Features, such as Wi-Fi and Bluetooth
  • Profiling Apps
  • Tracking Down Problems in Source Code
  • Using the Debugger
  • Analyzing App Performance
  • Finding Memory Problems, such as Leaks, Abandoned Memory, and Zombies
  • Optimizing Apps for Greater Power Efficiency
  • Performing System-Level Troubleshooting
  • Saving Instrument Configurations as Templates

Web Services

  • Building a RESTful App
  • Coding URLs and Requests
  • Modeling Custom Objects
  • JSON Serialization
  • Downloading Data
  • Displaying Data Using Collection Views
  • Application Transport Security

Day 4

Drawing with Core Graphics

  • Quartz 2D

Sprite Kit

  • Initial Scene Customization
  • Player Movement
  • Adding a Player
  • Geometry Calculations
  • Particles
  • Audio

Taps, Touches and Gestures

  • The Responder Chain
  • The Multitouch Architecture
  • Handling Gestures
  • Using Gesture Recognizers
  • Detecting Multiple Taps
  • Handling Pinches
  • Handling Rotation
  • Handling Swipes

Gyroscope and Accelerometer

  • Motion Events
  • Capturing Device Movement with Core Motion
  • Getting the Current Device Orientation
  • Gyroscope and Attitude Results
  • Detecting Shake Events
  • Setting and Checking Required Hardware Capabilities

Day 5

Swift and Objective-C interoperability

  • Interacting with Objective-C APIs
  • Using Swift and Objective-C in the Same Project
  • Migrating Objective-C Code to Swift

UI Testing

  • Adding Support for UI Testing to Your Project
  • Anatomy of a Test Case
  • New Classes for UI Testing
  • Test Assertions
  • Ui Recording
  • Waiting for Elements in a UI Test

Unit Testing

  • Introduction to Test Driven Development
  • Adding Support for Unit Testing to Your Project
  • Test Driven Development Techniques
  • Anatomy of a Test Case

iOS Security

  • System Security
  • Encryption and Data Protection
  • Hardware security features
  • Using On-Disk Encryption
  • App Security
  • Network Security
  • Device Controls
  • Password protection
  • Privacy controls