Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Levando seu app do iOS para o macOS

286 views

Published on

Slides da apresentação dada na TDC 2016.

Published in: Technology
  • Login to see the comments

Levando seu app do iOS para o macOS

  1. 1. Do Mobile ao Desktop Como portar seu app do iOS para o Mac
  2. 2. • Introdução • Semelhanças • Diferenças • Estratégia • Mercado
  3. 3. INTRODUÇÃO
  4. 4. UIKit no Mac?
  5. 5. História do AppKit
  6. 6. Cocoa Foundation CoreData AppKit
  7. 7. NextStep
  8. 8. NS
  9. 9. Cocoa Touch Foundation CoreData UIKit
  10. 10. UIKit AppKit
  11. 11. SEMELHANÇAS
  12. 12. Foundation • NSDate • NSJSONSerialization • NSURLSession • NSUserDefaults • NSFileManager • E muito mais...
  13. 13. Core OS • Keychain • Accelerate • Quartz • AVFoundation • AVKit • CloudKit • CoreAudio • CoreData • CoreText • Metal • SpriteKit • Muito, MUITO mais...
  14. 14. Componentes, Controles e Views • NSApplication • App delegate • View controllers • Table view • Collection view
  15. 15. Sandboxing
  16. 16. Padrões • MVC • MVVM • MVP • VIPER • ...
  17. 17. DIFERENÇAS
  18. 18. UIWindow X NSWindow
  19. 19. UIWindow • Um tipo de view (subclasse de UIView) • Uma janela por app (geralmente) • Gerenciada pelo sistema
  20. 20. NSWindow • Subclasse de NSResponder (não NSView) • Várias janelas por app • Precisam ser gerenciadas
  21. 21. NSWindow NSWindow NSWindow
  22. 22. NSToolbar
  23. 23. NSToolbar
  24. 24. UIViewController X NSViewController
  25. 25. NSWindowController
  26. 26. Uma subclasse de NSWindowController para cada tipo de janela
  27. 27. NSMenu
  28. 28. Responder Chain
  29. 29. sendAction(#selector(copy:), to: nil, from: self)
  30. 30. NSWindow NSWindowController NSViewController NSTextField copy(sender: ...) X X X ✓
  31. 31. window.firstResponder
  32. 32. window.firstResponder
  33. 33. Target/Action
  34. 34. button.addTarget(self, action: #selector(...), for: .touchUpInside) button.addTarget(self, action: #selector(...), for: .touchUpOutside) iOS
  35. 35. button.target = self button.action = #selector(...) macOS
  36. 36. Apps na barra de menus
  37. 37. UIAlertController X NSAlert
  38. 38. Sheet
  39. 39. Modal
  40. 40. UIView X NSView
  41. 41. view.wantsLayer = true Layer Backed View
  42. 42. view.wantsLayer = true view.layer = CALayer() view.layer.borderWidth = 4.0 // ... Layer Hosting View
  43. 43. NSCell
  44. 44. UIAppearance X NSAppearance
  45. 45. NSAppearanceNameAqua
  46. 46. NSAppearanceNameVibrantDark
  47. 47. Appearance Maker
  48. 48. Appearance Maker
  49. 49. Storyboards
  50. 50. Vantagens Exclusivas
  51. 51. XPC
  52. 52. NSWorkspace
  53. 53. NSDistributedNotificationCenter
  54. 54. Scripting
  55. 55. Design
  56. 56. Tipos básicos de app • Utilitário (Calculadora) • "Caixa de sapato" (iTunes) • Baseado em documentos (Editor de Texto)
  57. 57. ESTRATÉGIA
  58. 58. TMDBCore BingeUI APP Arquitetura
  59. 59. Trabalho paralelo
  60. 60. Gerenciador de dependências
  61. 61. MVVM Model view view-model
  62. 62. Use frameworks
  63. 63. #if os(...) e typealias
  64. 64. iCloud
  65. 65. MERCADO !
  66. 66. AppStore
  67. 67. Preços
  68. 68. Mercados de Nicho
  69. 69. AppStore X Venda Direta
  70. 70. Vantagens de vender fora da AppStore • AppStore: 30% / FastSpring: 9% • Contato direto com o usuário • Updates imediatos • Sandboxing opcional
  71. 71. OBRIGADO! Guilherme Rambo github.com/insidegui
  72. 72. Faça como o Obama! Siga no Twitter: @_inside

×