Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Adventures in Wonderland - A Plone Developer's Year in iOS

2 947 vues

Publié le

The slides from my talk at Plone Conference 2015 in Bucharest.

After 15 years of working purely in Python, I was thrown head-first into the world of iOS development. Taking over the management of a mobile app being developed for a Python web application, I've had to deal with managing iOS developers, understanding the iOS ecosystem, and working out Apple's byzantine procedures and processes.

Publié dans : Technologie
  • Soyez le premier à commenter

Adventures in Wonderland - A Plone Developer's Year in iOS

  1. 1. Matt Hamilton matt@quernus.co.uk A Plone Developer's Year in iOS Adventures in Wonderland
  2. 2. enquos is the first system to combine the tracking of nutrition, fitness & health data so that insights can be made between day to day actions and health outcomes. It is completely integrated, consolidating the functions of multiple applications and tracking devices into one secure platform while providing tools for making smart choices. enquos
  3. 3. “Curiouser and curiouser” — cried Alice
  4. 4. Homekit HealthKit CoreData EventKit CloudKit PassKit PushKit Foundation CoreMotion CoreAudio CoreText
  5. 5. Xcode
  6. 6. App Development Process
  7. 7. Certificates Keys Provisioning Profiles Bundle IDs App IDs Schemes Configurations …oh my!
  8. 8. iOS Build Process • Long • Arcane • Requires variations • Requires certificates / keys
  9. 9. http://appreviewtimes.com/ios/annual-trend-graph
  10. 10. Many weeks latency
  11. 11. Our automated build system
  12. 12. Fastlane • Automates builds • Allows multiple ‘lanes’ to be built • Repeatable, scriptable builds • An ‘API’ for iTunes Connect • Takes the hassle out of the build and deployment process
  13. 13. def do_build(scheme, configuration) increment_build_number( build_number: ENV['BUILD_ID'] ) profile = 'build/nutrition.mobileprovision' if configuration == 'Release' app_identifier = 'com.enquos.nutrition' display_name = 'enquos nutrition' set_istest_false sigh( app_identifier: app_identifier, filename: profile, ) else app_identifier = 'com.enquos.Nutrition.alpha.' + GIT_BRANCH_ID display_name = 'enquos nutrition ' + GIT_BRANCH sigh( app_identifier: '*', adhoc: '1', filename: profile, ) end update_info_plist( app_identifier: app_identifier, display_name: display_name, plist_path: 'Nutrition/Info.plist', xcodeproj: 'Nutrition/Nutrition.xcodeproj', ) update_project_provisioning( xcodeproj: "Nutrition/Nutrition.xcodeproj", build_configuration_filter: ".*Nutrition.*", profile: profile, ) ipa( scheme: scheme, configuration: configuration, embed: profile, xcargs: '-derivedDataPath ./build', ) end
  14. 14. Per-branch app deployment
  15. 15. Things I’ve learnt
  16. 16. iOS 8 → 9 Swift 1.2 → 2.0 Incompatibilities :( Xcode 6.4 → 7
  17. 17. import Foundation extension String { public func toIso8601Date() -> NSDate? { let formatter = NSDateFormatter() formatter.timeZone = NSTimeZone(forSecondsFromGMT: 0) formatter.dateFormat = "yyyy-MM-dd" return formatter.dateFromString(self) } } https://www.netsight.co.uk/ 2015/09/03/an-introduction- to-swift-from-a-python- perspective/
  18. 18. • Imposter syndrome is real • Friendly communities rock • Lack of virtualisation sucks • Good documentation is great • I still don’t understand Ruby
  19. 19. Thanks Matt Hamilton matt@quernus.co.uk https://quernus.co.uk @hammertoe

×