SlideShare a Scribd company logo
1 of 16
My iOS dev experiences
By: Yeo Kheng Meng (CS3217 alumni)
https://github.com/yeokm1
http://yeokhengmeng.com/
yeokm1@gmail.com
About me
• Year 4 Computer Science student
• Interned in two startups doing Android and iOS
• Developer for NUS SoC Print app (iOS and Android)
• Took CS3217 from Jan to May 2014
• Last class in Objective-C
Just four main areas
1. CS3217 app vs production app
2. Experience in developing my iOS (Swift) app and
publishing to app store
3. Stuff I learned in the workplace as an iOS dev
4. Working with Android devs
Disclaimer
• I’m not a Swift expert
• I may make mistakes
• Practices I suggest may not be the best
• Apple may have changed
• New UI guidelines
• New/Modified APIs
1. CS3217 app vs Production app
Type CS3217 Production
Screen type/resolution (inches) 10” iPhone: 3.5”, 4”, 4.7”, 5.5”
Device types/functions iPad Air iPhone: 4S, 5, 5S, 6, 6+
iPod Touch: 5G
iPad: 2, 3, 4, Air, Air 2, Mini, Mini 2
OS version iOS8 iOS7, iOS8
UI polish Just satisfy Prof Sim and
STEPS visitors
Must satisfy Apple’s human interface
“guidelines”
User support/feedback/improvements None Negative ratings or lost customers for you
if you don’t
Code robustness Good enough to demo Very high
Your Bible:
https://developer.apple.com/library/ios/documentation/UserExperie
nce/Conceptual/MobileHIG/
2a. App intro
https://itunes.apple.com/sg/app/id916524327
https://github.com/yeokm1/nus-soc-print-ios
https://play.google.com/store/apps/details?id=com.y
eokm1.nussocprintandroid
https://github.com/yeokm1/nus-soc-print
• Sends documents for printing to our SoC Unix printers ( psts, pstsb… psc011…)
2b. How it works?
SoC Sunfire serverNUS SOC Print
App-to-app transfer SSH
http://yeokhengmeng.com/2014/12/nus-soc-print-androidios-background-technical-
aspects-and-learning-points/
2c. Developing with Swift during the
early days
• Little or no documentation, Stackoverflow
examples, online examples, NO NOTHING 
• Changing APIs (especially ? or !)
• Buggy Xcode betas, iOS 8 betas
• Crash loops
• Wrong auto-completion
• Basic clean insufficient, need clean build folder
2d. Swift issues today
• No auto-refactor
• Swift still in flux
• https://github.com/ksm/SwiftInFlux
• Compatibility with future Apple OSes
• No source code compatibility
• App Binary compatibility
• Embedded Swift runtime
• No library binary compatibility
• Certain functions/libraries have no Swift equivalent
• Apple Reachability library
• Existing libraries: NMSSH etc
• Solution: Objective C – Swift interoperation (later)
2f. User support
• Users cannot ask questions from the App Store
• They just give you negative ratings instead
• Make it easy for them to contact you in-app
• Put your email/contacts in an easily accessible place
• Include device details
• Don’t wait for users to report crashes, receive crash
reports automatically and act on them.
• (More on Crashlytics later)
2g. Publishing on the app store
(actually pitching to Apple)
• Prepare a “dummy” user account (if needed)
• Prepare 4 sets of screenshots (3.5, 4, 4.7, 5.5)
• Ideally on actual devices so you can test at the same time
• Make a demo video to boost your chances
• Upload way before busy periods
• Upload and prayyyyyyyy for 1-2 weeks (or longer…)
3. Stuff from the workplace
• Library package manager (Cocoapods/Carthage)
• Reduce repo pollution/size
• Keeps libraries up to date
• Existing codebase/libraries in Objective-C
• Interoperation between Obj-C and Swift code
• Bridging headers
• Use analytics libraries, get stats and user behaviour
(Google Analytics/Flurry)
• Debugging library (Crashlytics android example)
• Crashlytics signup wait time of a few weeks
The rise of Android
iOS only
iOS first,
Android
maybe
iOS first,
Android
later
iOS and
Android
Development priorities over the years:
4. Working with Android devs
• App consistency vs platform consistency
• Eg. iOS Tab Bar vs Android Actionbar
• Aim for similarity in code/UI behaviour
• Limitations on Android vs iOS platform
• iOS dev and Android dev takes about the same time
• Android testing slower (due to fragmentation)
• Android publishes faster to Play Store, can be guinea
pigs for you (you read the previous point right)
Terms iOS Android
UI UIViewController Activity/Fragment
Threading NSOperation Asynctask
Screen density assets 1x, 2x, 3x xxhdpi, xhdpi, hdpi,
mdpi, ldpi
Remote notification Apple push notification Google Cloud messaging
Further reading
(DO NOT use in CS3217)
• Use HTML/CSS for UI with native wrapper eg, Phonegap
• Use only C# for both iOS and Android. By Xamarin
• How Dropbox Uses C++ for Cross-Platform iOS and
Android Development
• Google’s Java to Objective C transpiler
• Used by Inbox app
Questions time
• Need maintainer for both iOS/Android SoC print apps after I graduate
• yeokm1@gmail.com

More Related Content

Viewers also liked

Customer Outstanding Application for Android
Customer Outstanding Application for AndroidCustomer Outstanding Application for Android
Customer Outstanding Application for AndroidWebXpress.IN
 
張景隆 I os11月開發聚-ibeacons
張景隆 I os11月開發聚-ibeacons張景隆 I os11月開發聚-ibeacons
張景隆 I os11月開發聚-ibeaconsPunApp
 
6º CocoaHeads Belo Horizonte
6º CocoaHeads Belo Horizonte6º CocoaHeads Belo Horizonte
6º CocoaHeads Belo HorizonteGabriel Oliva
 
Android O.S and application
Android O.S and applicationAndroid O.S and application
Android O.S and applicationAloke Kantal
 
Supports the information hierarchy by animation transition
Supports the information hierarchy by animation transitionSupports the information hierarchy by animation transition
Supports the information hierarchy by animation transitionNaoya Shiga
 
Dev Story of our first iOS game
Dev Story of our first iOS gameDev Story of our first iOS game
Dev Story of our first iOS gameEmpatika
 
Android games development | Android Application Training in Chennai
Android games development | Android Application Training in ChennaiAndroid games development | Android Application Training in Chennai
Android games development | Android Application Training in ChennaiCore Mind
 

Viewers also liked (11)

iOS - development
iOS - developmentiOS - development
iOS - development
 
Customer Outstanding Application for Android
Customer Outstanding Application for AndroidCustomer Outstanding Application for Android
Customer Outstanding Application for Android
 
張景隆 I os11月開發聚-ibeacons
張景隆 I os11月開發聚-ibeacons張景隆 I os11月開發聚-ibeacons
張景隆 I os11月開發聚-ibeacons
 
6º CocoaHeads Belo Horizonte
6º CocoaHeads Belo Horizonte6º CocoaHeads Belo Horizonte
6º CocoaHeads Belo Horizonte
 
Introduction to android
Introduction to androidIntroduction to android
Introduction to android
 
Android O.S and application
Android O.S and applicationAndroid O.S and application
Android O.S and application
 
Mind the gap! - Droidcon Torino 2015
Mind the gap! - Droidcon Torino 2015Mind the gap! - Droidcon Torino 2015
Mind the gap! - Droidcon Torino 2015
 
Supports the information hierarchy by animation transition
Supports the information hierarchy by animation transitionSupports the information hierarchy by animation transition
Supports the information hierarchy by animation transition
 
Dev Story of our first iOS game
Dev Story of our first iOS gameDev Story of our first iOS game
Dev Story of our first iOS game
 
iOS App Dev
iOS App Dev iOS App Dev
iOS App Dev
 
Android games development | Android Application Training in Chennai
Android games development | Android Application Training in ChennaiAndroid games development | Android Application Training in Chennai
Android games development | Android Application Training in Chennai
 

More from yeokm1

I became a Private Pilot and this is my story
I became a Private Pilot and this is my storyI became a Private Pilot and this is my story
I became a Private Pilot and this is my storyyeokm1
 
What's inside a Cessna 172 and flying a light plane
What's inside a Cessna 172 and flying a light planeWhat's inside a Cessna 172 and flying a light plane
What's inside a Cessna 172 and flying a light planeyeokm1
 
Speaking at Tech meetups/conferences for Junior Devs
Speaking at Tech meetups/conferences for Junior DevsSpeaking at Tech meetups/conferences for Junior Devs
Speaking at Tech meetups/conferences for Junior Devsyeokm1
 
Reflections on Trusting Trust for Go
Reflections on Trusting Trust for GoReflections on Trusting Trust for Go
Reflections on Trusting Trust for Goyeokm1
 
Meltdown and Spectre
Meltdown and SpectreMeltdown and Spectre
Meltdown and Spectreyeokm1
 
Gentoo on a 486
Gentoo on a 486Gentoo on a 486
Gentoo on a 486yeokm1
 
BLE Localiser (Full) for iOS Dev Scout
BLE Localiser (Full) for iOS Dev ScoutBLE Localiser (Full) for iOS Dev Scout
BLE Localiser (Full) for iOS Dev Scoutyeokm1
 
BLE Localiser for iOS Conf SG 2017
BLE Localiser for iOS Conf SG 2017BLE Localiser for iOS Conf SG 2017
BLE Localiser for iOS Conf SG 2017yeokm1
 
Repair Kopitiam Specialty Tools (Part 2): Short Circuit Limiter
 Repair Kopitiam Specialty Tools (Part 2): Short Circuit Limiter Repair Kopitiam Specialty Tools (Part 2): Short Circuit Limiter
Repair Kopitiam Specialty Tools (Part 2): Short Circuit Limiteryeokm1
 
PCB Business Card (Singapore Power)
PCB Business Card (Singapore Power)PCB Business Card (Singapore Power)
PCB Business Card (Singapore Power)yeokm1
 
SP Auto Door Unlocker
SP Auto Door UnlockerSP Auto Door Unlocker
SP Auto Door Unlockeryeokm1
 
SP IoT Doorbell
SP IoT DoorbellSP IoT Doorbell
SP IoT Doorbellyeokm1
 
Distance Machine Locker
Distance Machine LockerDistance Machine Locker
Distance Machine Lockeryeokm1
 
A Science Project: Building a sound card based on the Covox Speech Thing
A Science Project: Building a sound card based on the Covox Speech ThingA Science Project: Building a sound card based on the Covox Speech Thing
A Science Project: Building a sound card based on the Covox Speech Thingyeokm1
 
A Science Project: Swift Serial Chat
A Science Project: Swift Serial ChatA Science Project: Swift Serial Chat
A Science Project: Swift Serial Chatyeokm1
 
The slide rule
The slide ruleThe slide rule
The slide ruleyeokm1
 
Windows 3.1 (WFW) on vintage and modern hardware
Windows 3.1 (WFW) on vintage and modern hardwareWindows 3.1 (WFW) on vintage and modern hardware
Windows 3.1 (WFW) on vintage and modern hardwareyeokm1
 
Repair Kopitiam Circuit Breaker Training
Repair Kopitiam Circuit Breaker TrainingRepair Kopitiam Circuit Breaker Training
Repair Kopitiam Circuit Breaker Trainingyeokm1
 
A2: Analog Malicious Hardware
A2: Analog Malicious HardwareA2: Analog Malicious Hardware
A2: Analog Malicious Hardwareyeokm1
 
Getting Started with Raspberry Pi
Getting Started with Raspberry PiGetting Started with Raspberry Pi
Getting Started with Raspberry Piyeokm1
 

More from yeokm1 (20)

I became a Private Pilot and this is my story
I became a Private Pilot and this is my storyI became a Private Pilot and this is my story
I became a Private Pilot and this is my story
 
What's inside a Cessna 172 and flying a light plane
What's inside a Cessna 172 and flying a light planeWhat's inside a Cessna 172 and flying a light plane
What's inside a Cessna 172 and flying a light plane
 
Speaking at Tech meetups/conferences for Junior Devs
Speaking at Tech meetups/conferences for Junior DevsSpeaking at Tech meetups/conferences for Junior Devs
Speaking at Tech meetups/conferences for Junior Devs
 
Reflections on Trusting Trust for Go
Reflections on Trusting Trust for GoReflections on Trusting Trust for Go
Reflections on Trusting Trust for Go
 
Meltdown and Spectre
Meltdown and SpectreMeltdown and Spectre
Meltdown and Spectre
 
Gentoo on a 486
Gentoo on a 486Gentoo on a 486
Gentoo on a 486
 
BLE Localiser (Full) for iOS Dev Scout
BLE Localiser (Full) for iOS Dev ScoutBLE Localiser (Full) for iOS Dev Scout
BLE Localiser (Full) for iOS Dev Scout
 
BLE Localiser for iOS Conf SG 2017
BLE Localiser for iOS Conf SG 2017BLE Localiser for iOS Conf SG 2017
BLE Localiser for iOS Conf SG 2017
 
Repair Kopitiam Specialty Tools (Part 2): Short Circuit Limiter
 Repair Kopitiam Specialty Tools (Part 2): Short Circuit Limiter Repair Kopitiam Specialty Tools (Part 2): Short Circuit Limiter
Repair Kopitiam Specialty Tools (Part 2): Short Circuit Limiter
 
PCB Business Card (Singapore Power)
PCB Business Card (Singapore Power)PCB Business Card (Singapore Power)
PCB Business Card (Singapore Power)
 
SP Auto Door Unlocker
SP Auto Door UnlockerSP Auto Door Unlocker
SP Auto Door Unlocker
 
SP IoT Doorbell
SP IoT DoorbellSP IoT Doorbell
SP IoT Doorbell
 
Distance Machine Locker
Distance Machine LockerDistance Machine Locker
Distance Machine Locker
 
A Science Project: Building a sound card based on the Covox Speech Thing
A Science Project: Building a sound card based on the Covox Speech ThingA Science Project: Building a sound card based on the Covox Speech Thing
A Science Project: Building a sound card based on the Covox Speech Thing
 
A Science Project: Swift Serial Chat
A Science Project: Swift Serial ChatA Science Project: Swift Serial Chat
A Science Project: Swift Serial Chat
 
The slide rule
The slide ruleThe slide rule
The slide rule
 
Windows 3.1 (WFW) on vintage and modern hardware
Windows 3.1 (WFW) on vintage and modern hardwareWindows 3.1 (WFW) on vintage and modern hardware
Windows 3.1 (WFW) on vintage and modern hardware
 
Repair Kopitiam Circuit Breaker Training
Repair Kopitiam Circuit Breaker TrainingRepair Kopitiam Circuit Breaker Training
Repair Kopitiam Circuit Breaker Training
 
A2: Analog Malicious Hardware
A2: Analog Malicious HardwareA2: Analog Malicious Hardware
A2: Analog Malicious Hardware
 
Getting Started with Raspberry Pi
Getting Started with Raspberry PiGetting Started with Raspberry Pi
Getting Started with Raspberry Pi
 

Recently uploaded

Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
software engineering Chapter 5 System modeling.pptx
software engineering Chapter 5 System modeling.pptxsoftware engineering Chapter 5 System modeling.pptx
software engineering Chapter 5 System modeling.pptxnada99848
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfPower Karaoke
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 

Recently uploaded (20)

Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
software engineering Chapter 5 System modeling.pptx
software engineering Chapter 5 System modeling.pptxsoftware engineering Chapter 5 System modeling.pptx
software engineering Chapter 5 System modeling.pptx
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdf
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 

iOS Development experience (with Swift) guest lecture for NUS CS3217

  • 1. My iOS dev experiences By: Yeo Kheng Meng (CS3217 alumni) https://github.com/yeokm1 http://yeokhengmeng.com/ yeokm1@gmail.com
  • 2. About me • Year 4 Computer Science student • Interned in two startups doing Android and iOS • Developer for NUS SoC Print app (iOS and Android) • Took CS3217 from Jan to May 2014 • Last class in Objective-C
  • 3. Just four main areas 1. CS3217 app vs production app 2. Experience in developing my iOS (Swift) app and publishing to app store 3. Stuff I learned in the workplace as an iOS dev 4. Working with Android devs
  • 4. Disclaimer • I’m not a Swift expert • I may make mistakes • Practices I suggest may not be the best • Apple may have changed • New UI guidelines • New/Modified APIs
  • 5. 1. CS3217 app vs Production app Type CS3217 Production Screen type/resolution (inches) 10” iPhone: 3.5”, 4”, 4.7”, 5.5” Device types/functions iPad Air iPhone: 4S, 5, 5S, 6, 6+ iPod Touch: 5G iPad: 2, 3, 4, Air, Air 2, Mini, Mini 2 OS version iOS8 iOS7, iOS8 UI polish Just satisfy Prof Sim and STEPS visitors Must satisfy Apple’s human interface “guidelines” User support/feedback/improvements None Negative ratings or lost customers for you if you don’t Code robustness Good enough to demo Very high Your Bible: https://developer.apple.com/library/ios/documentation/UserExperie nce/Conceptual/MobileHIG/
  • 7. 2b. How it works? SoC Sunfire serverNUS SOC Print App-to-app transfer SSH http://yeokhengmeng.com/2014/12/nus-soc-print-androidios-background-technical- aspects-and-learning-points/
  • 8. 2c. Developing with Swift during the early days • Little or no documentation, Stackoverflow examples, online examples, NO NOTHING  • Changing APIs (especially ? or !) • Buggy Xcode betas, iOS 8 betas • Crash loops • Wrong auto-completion • Basic clean insufficient, need clean build folder
  • 9. 2d. Swift issues today • No auto-refactor • Swift still in flux • https://github.com/ksm/SwiftInFlux • Compatibility with future Apple OSes • No source code compatibility • App Binary compatibility • Embedded Swift runtime • No library binary compatibility • Certain functions/libraries have no Swift equivalent • Apple Reachability library • Existing libraries: NMSSH etc • Solution: Objective C – Swift interoperation (later)
  • 10. 2f. User support • Users cannot ask questions from the App Store • They just give you negative ratings instead • Make it easy for them to contact you in-app • Put your email/contacts in an easily accessible place • Include device details • Don’t wait for users to report crashes, receive crash reports automatically and act on them. • (More on Crashlytics later)
  • 11. 2g. Publishing on the app store (actually pitching to Apple) • Prepare a “dummy” user account (if needed) • Prepare 4 sets of screenshots (3.5, 4, 4.7, 5.5) • Ideally on actual devices so you can test at the same time • Make a demo video to boost your chances • Upload way before busy periods • Upload and prayyyyyyyy for 1-2 weeks (or longer…)
  • 12. 3. Stuff from the workplace • Library package manager (Cocoapods/Carthage) • Reduce repo pollution/size • Keeps libraries up to date • Existing codebase/libraries in Objective-C • Interoperation between Obj-C and Swift code • Bridging headers • Use analytics libraries, get stats and user behaviour (Google Analytics/Flurry) • Debugging library (Crashlytics android example) • Crashlytics signup wait time of a few weeks
  • 13. The rise of Android iOS only iOS first, Android maybe iOS first, Android later iOS and Android Development priorities over the years:
  • 14. 4. Working with Android devs • App consistency vs platform consistency • Eg. iOS Tab Bar vs Android Actionbar • Aim for similarity in code/UI behaviour • Limitations on Android vs iOS platform • iOS dev and Android dev takes about the same time • Android testing slower (due to fragmentation) • Android publishes faster to Play Store, can be guinea pigs for you (you read the previous point right) Terms iOS Android UI UIViewController Activity/Fragment Threading NSOperation Asynctask Screen density assets 1x, 2x, 3x xxhdpi, xhdpi, hdpi, mdpi, ldpi Remote notification Apple push notification Google Cloud messaging
  • 15. Further reading (DO NOT use in CS3217) • Use HTML/CSS for UI with native wrapper eg, Phonegap • Use only C# for both iOS and Android. By Xamarin • How Dropbox Uses C++ for Cross-Platform iOS and Android Development • Google’s Java to Objective C transpiler • Used by Inbox app
  • 16. Questions time • Need maintainer for both iOS/Android SoC print apps after I graduate • yeokm1@gmail.com