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

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
Empatika
 

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

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

TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
mohitmore19
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
VictorSzoltysek
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 

Recently uploaded (20)

TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfAzure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 

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