developing for the ios platform

45
Software Languages Lab. Vrije Universiteit Brussel, Belgium Engineer Bainomugisha Developing for the iOS Platform [email protected] Tuesday 30 October 12

Upload: others

Post on 12-Sep-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Developing for the iOS Platform

Software Languages Lab.Vrije Universiteit Brussel, Belgium

Engineer Bainomugisha

Developing for the iOS Platform

[email protected]

Tuesday 30 October 12

Page 2: Developing for the iOS Platform

2

Source: International Data Corporation (IDC).

Smartphones Shipments vs PCs

You really can’t afford to ignore the

smartphone revolution.

Tuesday 30 October 12

Page 3: Developing for the iOS Platform

3

Source: Wikipedia + International Data Corporation

Android OS and iOS power over 80% of

smartphones

Tuesday 30 October 12

Page 4: Developing for the iOS Platform

What is iOS?

4

Apple’s mobile operating system that runs on iPhone, iPad and iPod touch devices.

Built for multi-touch interactions: responds to gestures (e.g., swiping, pinching, and tapping).

Tuesday 30 October 12

Page 5: Developing for the iOS Platform

What is iOS?

5

Sensors enable building “intelligent” apps (e.g., location-aware apps)

Camera

Accelerometer

Compass

GPS

Tuesday 30 October 12

Page 6: Developing for the iOS Platform

Comes with a Number of Built-in Apps

6

Photos, Calendar, Mail, SMS, Music, Maps, ...

Users cannot remove built-in apps.

Tuesday 30 October 12

Page 7: Developing for the iOS Platform

Software Development Tools for the iOS

7

Xcode is the development environment.

The iOS Software Development Kit (SDK) contains the tools needed to develop native apps.

Freely available for download from Apple’s developer portal developer.apple.com

Tuesday 30 October 12

Page 8: Developing for the iOS Platform

iOS Technologies are Packaged as Frameworks

8

Games

Image Kit

Maps

Passbook Kit

Media Player

Core Location

UI Kit

Address Book

Facebook

Tuesday 30 October 12

Page 9: Developing for the iOS Platform

Development Process Overview

9

Prepare the development

teamCreate a project

Develop the app

Publish in the App Store

Administrative AdministrativeCoding

Tuesday 30 October 12

Page 10: Developing for the iOS Platform

Two Kinds of iOS Apps

10

Native iOS apps Web apps

Tuesday 30 October 12

Page 11: Developing for the iOS Platform

Two Kinds of iOS Apps

11

• Resemble the built-in apps.• Are built using Objective-C programming language .• Have access to the device’s hardware capabilities (e.g., GPS).• Distributed via app store.

Native iOS apps

Tuesday 30 October 12

Page 12: Developing for the iOS Platform

Two Kinds of iOS Apps

12

• Resemble the built-in apps.• Are built using Objective-C programming language .• Have access to the device’s hardware capabilities (e.g., GPS).• Distributed via app store.

Native iOS apps

Installed on the device like a built-in app.

Tuesday 30 October 12

Page 13: Developing for the iOS Platform

Two Kinds of iOS Apps

13

Web apps

• Run inside a web browser• Are built using HTML, CSS, HTML5, and JavaScript. • Limited access to the device’s hardware capabilities (e.g., GPS).• Run slower than native apps.

Tuesday 30 October 12

Page 14: Developing for the iOS Platform

Two Kinds of iOS Apps

14

“Write once, run anywhere (WORA)” Web apps

iOS Android OS

Mac OS

Tuesday 30 October 12

Page 15: Developing for the iOS Platform

Two Kinds of iOS Apps

15

Native apps + Web apps

• Possible to embed web content in a native app.

Tuesday 30 October 12

Page 16: Developing for the iOS Platform

Objective-C Programming Language

16

• Object-oriented programming language.

• Easy to learn— if you have experience with other O-O languages such as Java or C++.

• Objective-C is a superset of C.

• Simple, small, powerful.

Tuesday 30 October 12

Page 17: Developing for the iOS Platform

Objective-C Programming Language (1 of 4)

17

Class specification: the interface + the implementation

@interface MyClass : NSObject {

int count; id data; NSString* name;}- (id)initWithString:(NSString *)aName;+ (MyClass *)myClassWithString:(NSString *)aName;@end

Tuesday 30 October 12

Page 18: Developing for the iOS Platform

Objective-C Programming Language (2 of 4)

18

Method Declaration

- (void)insertObject:(id)anObject atIndex:(NSUInteger)index;

Tuesday 30 October 12

Page 19: Developing for the iOS Platform

Objective-C Programming Language (3 of 4)

19

Class specification: the interface + the implementation

#import "MyClass.h"

@implementation MyClass- (id)initWithString:(NSString *)aName{ // method implementation code goes here.}+ (MyClass *)myClassWithString:(NSString *)aName{ // method implementation code goes here.}@end

Tuesday 30 October 12

Page 20: Developing for the iOS Platform

Objective-C Programming Language (4 of 4)

20

Object creation: allocation and initialisation.

MyClass *myObject = [[MyClass alloc] init];

allocation

initialisation

[myObject someMethod: argument ];

receiverselector argument

Messaging

[ ] means “call a method”

Tuesday 30 October 12

Page 21: Developing for the iOS Platform

Getting Started with iOS Development

21

Xcode is the “Eclipse” for iOS development.

Tuesday 30 October 12

Page 22: Developing for the iOS Platform

Getting Started with iOS Development

22

Tuesday 30 October 12

Page 23: Developing for the iOS Platform

Getting Started with iOS Development

23

Tuesday 30 October 12

Page 24: Developing for the iOS Platform

Getting Started with iOS Development

24

Tuesday 30 October 12

Page 25: Developing for the iOS Platform

Getting Started with iOS Development

25

Tuesday 30 October 12

Page 26: Developing for the iOS Platform

Getting Started with iOS Development

26

Tuesday 30 October 12

Page 27: Developing for the iOS Platform

iOS Design Patterns and Techniques

27

A design pattern is a template for a design that solves a general, recurring problem.

Common iOS design patterns:Model-View-Controller (MVC), Delegation, and Target-action

Tuesday 30 October 12

Page 28: Developing for the iOS Platform

iOS Design Patterns and Techniques

28

The overall structure of iOS apps is based on the MVC pattern.

MVC pattern

Tuesday 30 October 12

Page 29: Developing for the iOS Platform

iOS Design Patterns and Techniques

29

Creating the V in MVC

Tuesday 30 October 12

Page 30: Developing for the iOS Platform

iOS Design Patterns and Techniques

30

Creating the C & M in MVC

Tuesday 30 October 12

Page 31: Developing for the iOS Platform

iOS Design Patterns and Techniques

31

Used for interaction with iOS frameworks (instead of subclassing).

Delegation pattern

Tuesday 30 October 12

Page 32: Developing for the iOS Platform

iOS Design Patterns and Techniques

32

Delegation pattern

Tuesday 30 October 12

Page 33: Developing for the iOS Platform

iOS Design Patterns and Techniques

33

Delegation pattern

Belongs to the controller part

of the application

Tuesday 30 October 12

Page 34: Developing for the iOS Platform

iOS Design Patterns and Techniques

34

Target-Action pattern

• Used for handling user interactions with the UI.• The view sends an action when things happen in the UI.

Action

Tuesday 30 October 12

Page 35: Developing for the iOS Platform

iOS Design Patterns and Techniques

35

Target-Action pattern (1 of 2)

UIPinchGestureRecognizer *pinchGesture = [[UIPinchGestureRecognizer alloc] init];

[pinchGesture addTarget: self action:@selector(handleMyPinchGesture:)];

Our gesture handler

The kind of gesture we need

to handle

Adding a gesture recogniser to a

view

“self” is the target

[self.view addGestureRecognizer:pinchGesture];

Tuesday 30 October 12

Page 36: Developing for the iOS Platform

iOS Design Patterns and Techniques

36

Implementing our gesture handler

- (IBAction)handleMyPinchGesture:(UIGestureRecognizer *)sender {

CGFloat factor = [(UIPinchGestureRecognizer *)sender scale]; self.view.transform = CGAffineTransformMakeScale(factor, factor);

}

We transform the view according to the

pinching scale

Target-Action pattern (2 of 2)

Tuesday 30 October 12

Page 37: Developing for the iOS Platform

iOS Design Patterns and Techniques

37

Target-Action pattern

Belongs to the controller part

of the application

Tuesday 30 October 12

Page 38: Developing for the iOS Platform

Development Process Overview

38

Prepare the development

teamCreate a project

Develop the app

Publish in the App Store

Administrative AdministrativeCoding

Tuesday 30 October 12

Page 39: Developing for the iOS Platform

Distributing Apps on the App Store

39

Xcode comes with an iOS simulatorfor testing applications.

Testing on real devices and distribution on the App store requires subscription to iOS Developer Program.

Develop & Test

Distribute

Tuesday 30 October 12

Page 40: Developing for the iOS Platform

iOS Developer Program

40

iOS Developer Program ($99/year)App store distribution (an individual, or company).

iOS Developer Enterprise Program ($299/year)Internal distribution within your company.

iOS Developer University Program (Free)Higher education institutions that need to introduce iOS development into their curriculum.

Tuesday 30 October 12

Page 41: Developing for the iOS Platform

Signing Your App

41

• Each app must be code-signed to run on a device.

• Requires a developer certificate and a provisioning profile

1. Create a certificate request.

2. Submit it to Apple via developer.apple.com

3. Download/install the certificate.

4. Obtain/install a provisioning profile.

5. Generate a binary for distribution.

Tuesday 30 October 12

Page 42: Developing for the iOS Platform

Distributing Apps on the App Store

42

• App review usually takes at least 3 weeks.

• You set the price.

• In-app purchases also possible.

• You get 70% of sales revenue.

Review process

Develop & Test

App Store

Approved

Rejected

Submit app

Tuesday 30 October 12

Page 43: Developing for the iOS Platform

Sales Reports (Daily, Weekly, Monthly)

43

Tuesday 30 October 12

Page 44: Developing for the iOS Platform

Developing for the iOS Platform

44

Xcode Passbook

FacebookMaps

Games

Development Tools Frameworks

Programming Language

App Distribution ModelDesign Patterns

Objective-C

MVC, Delegate, Target-Action

Interface Builder

Tuesday 30 October 12

Page 45: Developing for the iOS Platform

45

context predicate

Where to Start

Note: Xcode requires a Mac.

http://developer.apple.com/library/ios/Sample Code

+

Learn Objective-C

http://developer.apple.com/library/mac/navigation/

Tuesday 30 October 12