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

OpenChain Webinar: AboutCode and Beyond - End-to-End SCA
OpenChain Webinar: AboutCode and Beyond - End-to-End SCAOpenChain Webinar: AboutCode and Beyond - End-to-End SCA
OpenChain Webinar: AboutCode and Beyond - End-to-End SCAShane Coughlan
 
Community is Just as Important as Code by Andrea Goulet
Community is Just as Important as Code by Andrea GouletCommunity is Just as Important as Code by Andrea Goulet
Community is Just as Important as Code by Andrea GouletAndrea Goulet
 
CERVED e Neo4j su una nuvola, migrazione ed evoluzione di un grafo mission cr...
CERVED e Neo4j su una nuvola, migrazione ed evoluzione di un grafo mission cr...CERVED e Neo4j su una nuvola, migrazione ed evoluzione di un grafo mission cr...
CERVED e Neo4j su una nuvola, migrazione ed evoluzione di un grafo mission cr...Neo4j
 
[GeeCON2024] How I learned to stop worrying and love the dark silicon apocalypse
[GeeCON2024] How I learned to stop worrying and love the dark silicon apocalypse[GeeCON2024] How I learned to stop worrying and love the dark silicon apocalypse
[GeeCON2024] How I learned to stop worrying and love the dark silicon apocalypseTomasz Kowalczewski
 
Microsoft365_Dev_Security_2024_05_16.pdf
Microsoft365_Dev_Security_2024_05_16.pdfMicrosoft365_Dev_Security_2024_05_16.pdf
Microsoft365_Dev_Security_2024_05_16.pdfMarkus Moeller
 
Abortion Pills For Sale WhatsApp[[+27737758557]] In Birch Acres, Abortion Pil...
Abortion Pills For Sale WhatsApp[[+27737758557]] In Birch Acres, Abortion Pil...Abortion Pills For Sale WhatsApp[[+27737758557]] In Birch Acres, Abortion Pil...
Abortion Pills For Sale WhatsApp[[+27737758557]] In Birch Acres, Abortion Pil...drm1699
 
From Knowledge Graphs via Lego Bricks to scientific conversations.pptx
From Knowledge Graphs via Lego Bricks to scientific conversations.pptxFrom Knowledge Graphs via Lego Bricks to scientific conversations.pptx
From Knowledge Graphs via Lego Bricks to scientific conversations.pptxNeo4j
 
BusinessGPT - Security and Governance for Generative AI
BusinessGPT  - Security and Governance for Generative AIBusinessGPT  - Security and Governance for Generative AI
BusinessGPT - Security and Governance for Generative AIAGATSoftware
 
The Strategic Impact of Buying vs Building in Test Automation
The Strategic Impact of Buying vs Building in Test AutomationThe Strategic Impact of Buying vs Building in Test Automation
The Strategic Impact of Buying vs Building in Test AutomationElement34
 
Workshop - Architecting Innovative Graph Applications- GraphSummit Milan
Workshop -  Architecting Innovative Graph Applications- GraphSummit MilanWorkshop -  Architecting Innovative Graph Applications- GraphSummit Milan
Workshop - Architecting Innovative Graph Applications- GraphSummit MilanNeo4j
 
UNI DI NAPOLI FEDERICO II - Il ruolo dei grafi nell'AI Conversazionale Ibrida
UNI DI NAPOLI FEDERICO II - Il ruolo dei grafi nell'AI Conversazionale IbridaUNI DI NAPOLI FEDERICO II - Il ruolo dei grafi nell'AI Conversazionale Ibrida
UNI DI NAPOLI FEDERICO II - Il ruolo dei grafi nell'AI Conversazionale IbridaNeo4j
 
Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...
Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...
Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...Lisi Hocke
 
Rapidoform for Modern Form Building and Insights
Rapidoform for Modern Form Building and InsightsRapidoform for Modern Form Building and Insights
Rapidoform for Modern Form Building and Insightsrapidoform
 
Workshop: Enabling GenAI Breakthroughs with Knowledge Graphs - GraphSummit Milan
Workshop: Enabling GenAI Breakthroughs with Knowledge Graphs - GraphSummit MilanWorkshop: Enabling GenAI Breakthroughs with Knowledge Graphs - GraphSummit Milan
Workshop: Enabling GenAI Breakthroughs with Knowledge Graphs - GraphSummit MilanNeo4j
 
Test Automation Design Patterns_ A Comprehensive Guide.pdf
Test Automation Design Patterns_ A Comprehensive Guide.pdfTest Automation Design Patterns_ A Comprehensive Guide.pdf
Test Automation Design Patterns_ A Comprehensive Guide.pdfkalichargn70th171
 
Modern binary build systems - PyCon 2024
Modern binary build systems - PyCon 2024Modern binary build systems - PyCon 2024
Modern binary build systems - PyCon 2024Henry Schreiner
 
Prompt Engineering - an Art, a Science, or your next Job Title?
Prompt Engineering - an Art, a Science, or your next Job Title?Prompt Engineering - an Art, a Science, or your next Job Title?
Prompt Engineering - an Art, a Science, or your next Job Title?Maxim Salnikov
 
Auto Affiliate AI Earns First Commission in 3 Hours..pdf
Auto Affiliate  AI Earns First Commission in 3 Hours..pdfAuto Affiliate  AI Earns First Commission in 3 Hours..pdf
Auto Affiliate AI Earns First Commission in 3 Hours..pdfSelfMade bd
 
Your Ultimate Web Studio for Streaming Anywhere | Evmux
Your Ultimate Web Studio for Streaming Anywhere | EvmuxYour Ultimate Web Studio for Streaming Anywhere | Evmux
Your Ultimate Web Studio for Streaming Anywhere | Evmuxevmux96
 

Recently uploaded (20)

OpenChain Webinar: AboutCode and Beyond - End-to-End SCA
OpenChain Webinar: AboutCode and Beyond - End-to-End SCAOpenChain Webinar: AboutCode and Beyond - End-to-End SCA
OpenChain Webinar: AboutCode and Beyond - End-to-End SCA
 
Community is Just as Important as Code by Andrea Goulet
Community is Just as Important as Code by Andrea GouletCommunity is Just as Important as Code by Andrea Goulet
Community is Just as Important as Code by Andrea Goulet
 
CERVED e Neo4j su una nuvola, migrazione ed evoluzione di un grafo mission cr...
CERVED e Neo4j su una nuvola, migrazione ed evoluzione di un grafo mission cr...CERVED e Neo4j su una nuvola, migrazione ed evoluzione di un grafo mission cr...
CERVED e Neo4j su una nuvola, migrazione ed evoluzione di un grafo mission cr...
 
Abortion Pill Prices Germiston ](+27832195400*)[ 🏥 Women's Abortion Clinic in...
Abortion Pill Prices Germiston ](+27832195400*)[ 🏥 Women's Abortion Clinic in...Abortion Pill Prices Germiston ](+27832195400*)[ 🏥 Women's Abortion Clinic in...
Abortion Pill Prices Germiston ](+27832195400*)[ 🏥 Women's Abortion Clinic in...
 
[GeeCON2024] How I learned to stop worrying and love the dark silicon apocalypse
[GeeCON2024] How I learned to stop worrying and love the dark silicon apocalypse[GeeCON2024] How I learned to stop worrying and love the dark silicon apocalypse
[GeeCON2024] How I learned to stop worrying and love the dark silicon apocalypse
 
Microsoft365_Dev_Security_2024_05_16.pdf
Microsoft365_Dev_Security_2024_05_16.pdfMicrosoft365_Dev_Security_2024_05_16.pdf
Microsoft365_Dev_Security_2024_05_16.pdf
 
Abortion Pills For Sale WhatsApp[[+27737758557]] In Birch Acres, Abortion Pil...
Abortion Pills For Sale WhatsApp[[+27737758557]] In Birch Acres, Abortion Pil...Abortion Pills For Sale WhatsApp[[+27737758557]] In Birch Acres, Abortion Pil...
Abortion Pills For Sale WhatsApp[[+27737758557]] In Birch Acres, Abortion Pil...
 
From Knowledge Graphs via Lego Bricks to scientific conversations.pptx
From Knowledge Graphs via Lego Bricks to scientific conversations.pptxFrom Knowledge Graphs via Lego Bricks to scientific conversations.pptx
From Knowledge Graphs via Lego Bricks to scientific conversations.pptx
 
BusinessGPT - Security and Governance for Generative AI
BusinessGPT  - Security and Governance for Generative AIBusinessGPT  - Security and Governance for Generative AI
BusinessGPT - Security and Governance for Generative AI
 
The Strategic Impact of Buying vs Building in Test Automation
The Strategic Impact of Buying vs Building in Test AutomationThe Strategic Impact of Buying vs Building in Test Automation
The Strategic Impact of Buying vs Building in Test Automation
 
Workshop - Architecting Innovative Graph Applications- GraphSummit Milan
Workshop -  Architecting Innovative Graph Applications- GraphSummit MilanWorkshop -  Architecting Innovative Graph Applications- GraphSummit Milan
Workshop - Architecting Innovative Graph Applications- GraphSummit Milan
 
UNI DI NAPOLI FEDERICO II - Il ruolo dei grafi nell'AI Conversazionale Ibrida
UNI DI NAPOLI FEDERICO II - Il ruolo dei grafi nell'AI Conversazionale IbridaUNI DI NAPOLI FEDERICO II - Il ruolo dei grafi nell'AI Conversazionale Ibrida
UNI DI NAPOLI FEDERICO II - Il ruolo dei grafi nell'AI Conversazionale Ibrida
 
Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...
Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...
Team Transformation Tactics for Holistic Testing and Quality (NewCrafts Paris...
 
Rapidoform for Modern Form Building and Insights
Rapidoform for Modern Form Building and InsightsRapidoform for Modern Form Building and Insights
Rapidoform for Modern Form Building and Insights
 
Workshop: Enabling GenAI Breakthroughs with Knowledge Graphs - GraphSummit Milan
Workshop: Enabling GenAI Breakthroughs with Knowledge Graphs - GraphSummit MilanWorkshop: Enabling GenAI Breakthroughs with Knowledge Graphs - GraphSummit Milan
Workshop: Enabling GenAI Breakthroughs with Knowledge Graphs - GraphSummit Milan
 
Test Automation Design Patterns_ A Comprehensive Guide.pdf
Test Automation Design Patterns_ A Comprehensive Guide.pdfTest Automation Design Patterns_ A Comprehensive Guide.pdf
Test Automation Design Patterns_ A Comprehensive Guide.pdf
 
Modern binary build systems - PyCon 2024
Modern binary build systems - PyCon 2024Modern binary build systems - PyCon 2024
Modern binary build systems - PyCon 2024
 
Prompt Engineering - an Art, a Science, or your next Job Title?
Prompt Engineering - an Art, a Science, or your next Job Title?Prompt Engineering - an Art, a Science, or your next Job Title?
Prompt Engineering - an Art, a Science, or your next Job Title?
 
Auto Affiliate AI Earns First Commission in 3 Hours..pdf
Auto Affiliate  AI Earns First Commission in 3 Hours..pdfAuto Affiliate  AI Earns First Commission in 3 Hours..pdf
Auto Affiliate AI Earns First Commission in 3 Hours..pdf
 
Your Ultimate Web Studio for Streaming Anywhere | Evmux
Your Ultimate Web Studio for Streaming Anywhere | EvmuxYour Ultimate Web Studio for Streaming Anywhere | Evmux
Your Ultimate Web Studio for Streaming Anywhere | Evmux
 

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