Никита Корчагин - introduction to ios development
TRANSCRIPT
![Page 1: Никита Корчагин - Introduction to iOS development](https://reader034.vdocuments.us/reader034/viewer/2022042701/55c5a9b4bb61eb4a1f8b4595/html5/thumbnails/1.jpg)
Introduction to iOS development
Nikita Korchagin
![Page 2: Никита Корчагин - Introduction to iOS development](https://reader034.vdocuments.us/reader034/viewer/2022042701/55c5a9b4bb61eb4a1f8b4595/html5/thumbnails/2.jpg)
Developer
![Page 3: Никита Корчагин - Introduction to iOS development](https://reader034.vdocuments.us/reader034/viewer/2022042701/55c5a9b4bb61eb4a1f8b4595/html5/thumbnails/3.jpg)
![Page 4: Никита Корчагин - Introduction to iOS development](https://reader034.vdocuments.us/reader034/viewer/2022042701/55c5a9b4bb61eb4a1f8b4595/html5/thumbnails/4.jpg)
Today•Introduction
•Brief history of iOS and Apple i-devices
•Starting iOS programming
• iOS development
•Desktop vs. Mobile: what’s different
•Human Interface Guidelines
•Further steps: materials to read
![Page 5: Никита Корчагин - Introduction to iOS development](https://reader034.vdocuments.us/reader034/viewer/2022042701/55c5a9b4bb61eb4a1f8b4595/html5/thumbnails/5.jpg)
iOS History: from past to present
![Page 6: Никита Корчагин - Introduction to iOS development](https://reader034.vdocuments.us/reader034/viewer/2022042701/55c5a9b4bb61eb4a1f8b4595/html5/thumbnails/6.jpg)
2007 - iPhone OS 1• Based on Darwin’s (XNU) kernel port
for ARM
• Multitouch screen
• Few standard applications
• iPhone 1st gen and iPod Touch 1st gen
• Web-based applications only
• No multitasking
• No SDK
• Usage of private APIs by third-party developers
![Page 7: Никита Корчагин - Introduction to iOS development](https://reader034.vdocuments.us/reader034/viewer/2022042701/55c5a9b4bb61eb4a1f8b4595/html5/thumbnails/7.jpg)
2008 - iPhone OS 2
•Paid update (all further major and minor updates are free)
•First version of iPhone SDK
•Xcode IDE for iOS development
•App Store for iPhone and iPod Touch
•iPod Touch 2G released
![Page 8: Никита Корчагин - Introduction to iOS development](https://reader034.vdocuments.us/reader034/viewer/2022042701/55c5a9b4bb61eb4a1f8b4595/html5/thumbnails/8.jpg)
2009 - iPhone OS 3•Lots of UI & functionality
improvements (100+)
•Spotlight search
•Push notifications
•In-app purchase
•Core Data
•«Find my iPhone» functionality
![Page 9: Никита Корчагин - Introduction to iOS development](https://reader034.vdocuments.us/reader034/viewer/2022042701/55c5a9b4bb61eb4a1f8b4595/html5/thumbnails/9.jpg)
January 2010 - iPhone OS 3.2•iPad released
•iPhone OS SDK provides abilities to create universal applications
•iPad applications should support multiple device orientations
•iPad-only UI components - Split view controllers, windowed modal controllers, popover controllers
•Backward compatibility with iPhone applications
![Page 10: Никита Корчагин - Introduction to iOS development](https://reader034.vdocuments.us/reader034/viewer/2022042701/55c5a9b4bb61eb4a1f8b4595/html5/thumbnails/10.jpg)
June 2010 - WWDC - iOS 4•iPhone OS became iOS
• iPhone 4 with Retina display
•Support of restricted multitasking
•Background execution of applications
•Blocks and Grand Central Dispatch
•Local notifications
•Game Center and Game Kit
![Page 11: Никита Корчагин - Introduction to iOS development](https://reader034.vdocuments.us/reader034/viewer/2022042701/55c5a9b4bb61eb4a1f8b4595/html5/thumbnails/11.jpg)
June 2011 - WWDC - iOS 5•Wireless updates & sync
• iCloud
•Notification center
•Siri
•Containment API
•Automatic Reference Counting (ARC)
•Twitter integration out-of-box
•Newsstand API
•Core Image
![Page 12: Никита Корчагин - Introduction to iOS development](https://reader034.vdocuments.us/reader034/viewer/2022042701/55c5a9b4bb61eb4a1f8b4595/html5/thumbnails/12.jpg)
June 2012 - WWDC - iOS 6
•Apple Maps
•Collection views
•AutoLayout
•Facebook integration
•Passbook
•New App Store
![Page 13: Никита Корчагин - Introduction to iOS development](https://reader034.vdocuments.us/reader034/viewer/2022042701/55c5a9b4bb61eb4a1f8b4595/html5/thumbnails/13.jpg)
June 2013 - WWDC - iOS 7
•iOS redesigned (flat UI, no skeuomorphism)
• iTunes Radio
•Multitasking improvements
•New application switcher
•Filters for camera
•Automatic applications’ updates
![Page 14: Никита Корчагин - Introduction to iOS development](https://reader034.vdocuments.us/reader034/viewer/2022042701/55c5a9b4bb61eb4a1f8b4595/html5/thumbnails/14.jpg)
June 2014 - WWDC - iOS8
•No significant design changes
•Multiple screen resolutions
•HomeKit and HealthKit, Metal
•Continuity
•Energy consumption by apps
•Swift programming language
![Page 15: Никита Корчагин - Introduction to iOS development](https://reader034.vdocuments.us/reader034/viewer/2022042701/55c5a9b4bb61eb4a1f8b4595/html5/thumbnails/15.jpg)
June 2015 - WWDC - iOS9•Multitasking (Slide Over, Split View,
and Picture in Picture.)
•Search API
•GameplayKit, ReplayKit, Model I/O
•App Thinning
•Swift 2
•watchOS 2
![Page 16: Никита Корчагин - Introduction to iOS development](https://reader034.vdocuments.us/reader034/viewer/2022042701/55c5a9b4bb61eb4a1f8b4595/html5/thumbnails/16.jpg)
How to start to develop for iOS?
![Page 17: Никита Корчагин - Introduction to iOS development](https://reader034.vdocuments.us/reader034/viewer/2022042701/55c5a9b4bb61eb4a1f8b4595/html5/thumbnails/17.jpg)
Jedi way•Intel-based Mac (Mac Mini, MacBook Air/Pro, iMac, Mac Pro)
• Installed Mac OS X 10.7 «Lion» or higher
•XCode 6 with latest iOS SDK
•Own i-Device (iPhone/iPod Touch/iPad)
•Apple Developer program account ($99 per 1 year)
•Good knowledge of design patterns
•Objective-C knowledge OR
•Relevant experience in C or any strong-typed object-oriented language like Java/C#/C++
![Page 18: Никита Корчагин - Introduction to iOS development](https://reader034.vdocuments.us/reader034/viewer/2022042701/55c5a9b4bb61eb4a1f8b4595/html5/thumbnails/18.jpg)
Alternative ways•Alternative IDE - AppCode (Mac, still requires Xcode to
be installed)
•Objective-C++ (kernel - C++, UI - Objective-C)
•PhoneGap/Titanium (cross-platform)
•Xamarin (.NET/C# - compiles to native code)
•C++ Marmalade SDK for Visual Studio
•Unity3D/Cocos2D-x for game development
•HTML5/CSS3/JavaScript for web applications
![Page 19: Никита Корчагин - Introduction to iOS development](https://reader034.vdocuments.us/reader034/viewer/2022042701/55c5a9b4bb61eb4a1f8b4595/html5/thumbnails/19.jpg)
Objective-C
![Page 20: Никита Корчагин - Introduction to iOS development](https://reader034.vdocuments.us/reader034/viewer/2022042701/55c5a9b4bb61eb4a1f8b4595/html5/thumbnails/20.jpg)
•Objective-C is a general-purpose, object-oriented programming language that adds Smalltalk-style messaging to the C programming language.
• It is the main programming language used by Apple until 2014.
•Originally developed in the early 1980s, it was selected as the main language used by NeXT for its NeXTSTEP operating system.
•Objective-C is a thin layer on top of C, and moreover is a strict superset of C.
•All of the syntax for non-object-oriented operations (including primitive variables, pre-processing, expressions, function declarations, and function calls) are identical to that of C.
•Syntax for object-oriented features is an implementation of Smalltalk-style messaging.
![Page 21: Никита Корчагин - Introduction to iOS development](https://reader034.vdocuments.us/reader034/viewer/2022042701/55c5a9b4bb61eb4a1f8b4595/html5/thumbnails/21.jpg)
Swift
![Page 22: Никита Корчагин - Introduction to iOS development](https://reader034.vdocuments.us/reader034/viewer/2022042701/55c5a9b4bb61eb4a1f8b4595/html5/thumbnails/22.jpg)
•Swift is a multi-paradigm, compiled programming language created by Apple Inc. for iOS and OS X development.
• It uses the Objective-C runtime, allowing C, Objective-C, C++ and Swift code to run within a single program.
•Swift was introduced at Apple's 2014 WWDC and Swift 2 at WWDC 2015. Initially a proprietary language, it was announced that Swift 2 would become open source supporting iOS, OS X and Linux.
•Swift supports the core concepts that made Obj-C flexible, notably dynamic dispatch, widespread late binding, extensible programming and similar features.
•Swift has added the concept of protocol extensibility, an extensibility system that can be applied to types, structs and classes, Apple promotes this as a real change in programming paradigms they refer to as protocol-oriented programming.
![Page 23: Никита Корчагин - Introduction to iOS development](https://reader034.vdocuments.us/reader034/viewer/2022042701/55c5a9b4bb61eb4a1f8b4595/html5/thumbnails/23.jpg)
Desktop vs. Mobile
![Page 24: Никита Корчагин - Introduction to iOS development](https://reader034.vdocuments.us/reader034/viewer/2022042701/55c5a9b4bb61eb4a1f8b4595/html5/thumbnails/24.jpg)
What’s different?•Multitouch display & gestures
•Front and rear camera
•Speakers and microphone
•Location subsystem - GPS/GLONASS
•Magnetometer and compass
•G-sensor and accelerometer
•Bluetooth accessories
![Page 25: Никита Корчагин - Introduction to iOS development](https://reader034.vdocuments.us/reader034/viewer/2022042701/55c5a9b4bb61eb4a1f8b4595/html5/thumbnails/25.jpg)
Network•Variants of connection
•GPRS
•EDGE
•3G/4G
•WiFi
•All these opportunities (except WiFi) are connection-lost-prone
•Cellular network connection is expensive
![Page 26: Никита Корчагин - Introduction to iOS development](https://reader034.vdocuments.us/reader034/viewer/2022042701/55c5a9b4bb61eb4a1f8b4595/html5/thumbnails/26.jpg)
Screens
•Fullscreen applications
•Bigger UI elements for fingers
•Dark colors to reduce energy consumption
•Different resolutions (x1, x2 and x3)
•Assets for different resolutions
•Ergonomics
![Page 27: Никита Корчагин - Introduction to iOS development](https://reader034.vdocuments.us/reader034/viewer/2022042701/55c5a9b4bb61eb4a1f8b4595/html5/thumbnails/27.jpg)
Resources•Every heavy application dramatically drains battery’s life
•Geolocation - GPS
•Networking
•Disk capacity is limited (8/16/32/64/… GB and no SD/microSD slot)
•Restricted multitasking (full introduced in iOS 7)
•Only a few types of content are supported
•UI is rendered using real-time thread and shouldn’t be blocked ever
![Page 28: Никита Корчагин - Introduction to iOS development](https://reader034.vdocuments.us/reader034/viewer/2022042701/55c5a9b4bb61eb4a1f8b4595/html5/thumbnails/28.jpg)
Security mechanisms•Sandboxing - every application is isolated and runs under
restricted user’s account («jailed»)
• IPC is limited to URL schemas and extensions
•Personal data and passwords should be encrypted (Keychain) or not stored on the device at all
•HTTPS connections are preferred; certificate validation is needed
•Data on disk can be encrypted and protected by iOS
•Group policies can be established for iOS devices using configuration profiles
![Page 29: Никита Корчагин - Introduction to iOS development](https://reader034.vdocuments.us/reader034/viewer/2022042701/55c5a9b4bb61eb4a1f8b4595/html5/thumbnails/29.jpg)
Creating and submitting the app
•Application should be tested thoroughly; crashes are forbidden
•Application should follow Apple’s Human Interface Guidelines
•Private API usage is forbidden
•Application can be deployed only to the device which is in the provisioning list
•Application’s binary is signed using developer’s private key
•Application is thoroughly tested during review process
![Page 30: Никита Корчагин - Introduction to iOS development](https://reader034.vdocuments.us/reader034/viewer/2022042701/55c5a9b4bb61eb4a1f8b4595/html5/thumbnails/30.jpg)
Human Interface Guidelines
![Page 31: Никита Корчагин - Introduction to iOS development](https://reader034.vdocuments.us/reader034/viewer/2022042701/55c5a9b4bb61eb4a1f8b4595/html5/thumbnails/31.jpg)
HIG
![Page 32: Никита Корчагин - Introduction to iOS development](https://reader034.vdocuments.us/reader034/viewer/2022042701/55c5a9b4bb61eb4a1f8b4595/html5/thumbnails/32.jpg)
HIG
![Page 33: Никита Корчагин - Introduction to iOS development](https://reader034.vdocuments.us/reader034/viewer/2022042701/55c5a9b4bb61eb4a1f8b4595/html5/thumbnails/33.jpg)
HIG
![Page 34: Никита Корчагин - Introduction to iOS development](https://reader034.vdocuments.us/reader034/viewer/2022042701/55c5a9b4bb61eb4a1f8b4595/html5/thumbnails/34.jpg)
HIG
![Page 35: Никита Корчагин - Introduction to iOS development](https://reader034.vdocuments.us/reader034/viewer/2022042701/55c5a9b4bb61eb4a1f8b4595/html5/thumbnails/35.jpg)
Bad UI/UX
![Page 36: Никита Корчагин - Introduction to iOS development](https://reader034.vdocuments.us/reader034/viewer/2022042701/55c5a9b4bb61eb4a1f8b4595/html5/thumbnails/36.jpg)
Bad UI/UX
![Page 37: Никита Корчагин - Introduction to iOS development](https://reader034.vdocuments.us/reader034/viewer/2022042701/55c5a9b4bb61eb4a1f8b4595/html5/thumbnails/37.jpg)
Bad UI/UX
![Page 38: Никита Корчагин - Introduction to iOS development](https://reader034.vdocuments.us/reader034/viewer/2022042701/55c5a9b4bb61eb4a1f8b4595/html5/thumbnails/38.jpg)
Bad UI/UX
![Page 39: Никита Корчагин - Introduction to iOS development](https://reader034.vdocuments.us/reader034/viewer/2022042701/55c5a9b4bb61eb4a1f8b4595/html5/thumbnails/39.jpg)
Tablets specific UI
![Page 40: Никита Корчагин - Introduction to iOS development](https://reader034.vdocuments.us/reader034/viewer/2022042701/55c5a9b4bb61eb4a1f8b4595/html5/thumbnails/40.jpg)
Accessibility
![Page 41: Никита Корчагин - Introduction to iOS development](https://reader034.vdocuments.us/reader034/viewer/2022042701/55c5a9b4bb61eb4a1f8b4595/html5/thumbnails/41.jpg)
Good UI/UX
![Page 42: Никита Корчагин - Introduction to iOS development](https://reader034.vdocuments.us/reader034/viewer/2022042701/55c5a9b4bb61eb4a1f8b4595/html5/thumbnails/42.jpg)
Interface Builder HIG support
![Page 43: Никита Корчагин - Introduction to iOS development](https://reader034.vdocuments.us/reader034/viewer/2022042701/55c5a9b4bb61eb4a1f8b4595/html5/thumbnails/43.jpg)
flat UI vs. skeuomorphism
![Page 44: Никита Корчагин - Introduction to iOS development](https://reader034.vdocuments.us/reader034/viewer/2022042701/55c5a9b4bb61eb4a1f8b4595/html5/thumbnails/44.jpg)
Further steps
![Page 45: Никита Корчагин - Introduction to iOS development](https://reader034.vdocuments.us/reader034/viewer/2022042701/55c5a9b4bb61eb4a1f8b4595/html5/thumbnails/45.jpg)
Q&A
![Page 46: Никита Корчагин - Introduction to iOS development](https://reader034.vdocuments.us/reader034/viewer/2022042701/55c5a9b4bb61eb4a1f8b4595/html5/thumbnails/46.jpg)
Thanks for your attention!