SlideShare uma empresa Scribd logo
Do Mobile ao Desktop
Como portar seu app do iOS para o Mac
Levando seu app do iOS para o macOS
Levando seu app do iOS para o macOS
Levando seu app do iOS para o macOS
Levando seu app do iOS para o macOS
Levando seu app do iOS para o macOS
Levando seu app do iOS para o macOS
Levando seu app do iOS para o macOS
Levando seu app do iOS para o macOS
• Introdução
• Semelhanças
• Diferenças
• Estratégia
• Mercado
INTRODUÇÃO
Levando seu app do iOS para o macOS
Levando seu app do iOS para o macOS
Levando seu app do iOS para o macOS
Levando seu app do iOS para o macOS
UIKit no Mac?
Levando seu app do iOS para o macOS
História do AppKit
Cocoa
Foundation
CoreData
AppKit
Levando seu app do iOS para o macOS
NextStep
NS
Cocoa Touch
Foundation
CoreData
UIKit
UIKit
AppKit
SEMELHANÇAS
Foundation
• NSDate
• NSJSONSerialization
• NSURLSession
• NSUserDefaults
• NSFileManager
• E muito mais...
Core OS
• Keychain
• Accelerate
• Quartz
• AVFoundation
• AVKit
• CloudKit
• CoreAudio
• CoreData
• CoreText
• Metal
• SpriteKit
• Muito, MUITO mais...
Componentes, Controles e Views
• NSApplication
• App delegate
• View controllers
• Table view
• Collection view
Sandboxing
Padrões
• MVC
• MVVM
• MVP
• VIPER
• ...
DIFERENÇAS
UIWindow X
NSWindow
UIWindow
• Um tipo de view (subclasse de UIView)
• Uma janela por app (geralmente)
• Gerenciada pelo sistema
NSWindow
• Subclasse de NSResponder (não NSView)
• Várias janelas por app
• Precisam ser gerenciadas
NSWindow
NSWindow
NSWindow
NSToolbar
Levando seu app do iOS para o macOS
NSToolbar
UIViewController X
NSViewController
NSWindowController
Uma subclasse de
NSWindowController
para cada tipo de janela
Levando seu app do iOS para o macOS
NSMenu
Levando seu app do iOS para o macOS
Levando seu app do iOS para o macOS
Levando seu app do iOS para o macOS
Responder Chain
sendAction(#selector(copy:), to: nil, from: self)
NSWindow
NSWindowController
NSViewController
NSTextField
copy(sender: ...)
X
X
X
✓
window.firstResponder
window.firstResponder
Levando seu app do iOS para o macOS
Levando seu app do iOS para o macOS
Levando seu app do iOS para o macOS
Levando seu app do iOS para o macOS
Target/Action
button.addTarget(self, action: #selector(...), for: .touchUpInside)
button.addTarget(self, action: #selector(...), for: .touchUpOutside)
iOS
button.target = self
button.action = #selector(...)
macOS
Apps na barra de menus
Levando seu app do iOS para o macOS
Levando seu app do iOS para o macOS
UIAlertController
X NSAlert
Sheet
Modal
UIView X NSView
Levando seu app do iOS para o macOS
Levando seu app do iOS para o macOS
view.wantsLayer = true
Layer Backed View
view.wantsLayer = true
view.layer = CALayer()
view.layer.borderWidth = 4.0
// ...
Layer Hosting View
Levando seu app do iOS para o macOS
Levando seu app do iOS para o macOS
NSCell
UIAppearance X
NSAppearance
NSAppearanceNameAqua
NSAppearanceNameVibrantDark
Appearance Maker
Appearance Maker
Storyboards
Levando seu app do iOS para o macOS
Vantagens Exclusivas
XPC
NSWorkspace
Levando seu app do iOS para o macOS
Levando seu app do iOS para o macOS
Levando seu app do iOS para o macOS
Levando seu app do iOS para o macOS
Levando seu app do iOS para o macOS
NSDistributedNotificationCenter
Levando seu app do iOS para o macOS
Levando seu app do iOS para o macOS
Scripting
Levando seu app do iOS para o macOS
Design
Tipos básicos de app
• Utilitário (Calculadora)
• "Caixa de sapato" (iTunes)
• Baseado em documentos (Editor de Texto)
Levando seu app do iOS para o macOS
ESTRATÉGIA
Levando seu app do iOS para o macOS
Levando seu app do iOS para o macOS
TMDBCore BingeUI
APP
Arquitetura
Trabalho paralelo
Gerenciador de dependências
MVVM
Model view view-model
Use frameworks
#if os(...)
e
typealias
iCloud
Levando seu app do iOS para o macOS
Levando seu app do iOS para o macOS
Levando seu app do iOS para o macOS
MERCADO
!
AppStore
Levando seu app do iOS para o macOS
Levando seu app do iOS para o macOS
Preços
Mercados de Nicho
Levando seu app do iOS para o macOS
Levando seu app do iOS para o macOS
Levando seu app do iOS para o macOS
Levando seu app do iOS para o macOS
AppStore X Venda Direta
Vantagens de vender fora da AppStore
• AppStore: 30% / FastSpring: 9%
• Contato direto com o usuário
• Updates imediatos
• Sandboxing opcional
Levando seu app do iOS para o macOS
OBRIGADO!
Guilherme Rambo
github.com/insidegui
Faça como o Obama!
Siga no Twitter: @_inside

Mais conteúdo relacionado

PDF
TDC2016POA | Trilha Web - A essência do CSS
PDF
TDC2016POA | Trilha Web - Garanta a segurança de suas aplicações Web com Keyc...
PDF
Agilizando o desenvolvimento web com SASS
PDF
TDC 2016 - Sass: CSS com super-poderes.
PDF
TDC 2016 - Garantindo a qualidade da sua infraestrutura
PPTX
TDC POA 2016 - Robotium + Cucumber + Gradle, misture com spoon e tenha uma ex...
PDF
Como ensinei mais de 1000 testadores
PDF
TDC2016POA | Trilha Web - Realtime applications com Socket.io
TDC2016POA | Trilha Web - A essência do CSS
TDC2016POA | Trilha Web - Garanta a segurança de suas aplicações Web com Keyc...
Agilizando o desenvolvimento web com SASS
TDC 2016 - Sass: CSS com super-poderes.
TDC 2016 - Garantindo a qualidade da sua infraestrutura
TDC POA 2016 - Robotium + Cucumber + Gradle, misture com spoon e tenha uma ex...
Como ensinei mais de 1000 testadores
TDC2016POA | Trilha Web - Realtime applications com Socket.io

Destaque (20)

PPT
Apresentação tdc 2016 - trilha de testes
PPTX
A transição de um QA tradicional para um Agile Tester
PDF
TDC Floripa 2015 - Branding, UX e Marketing
PDF
Tdc 5 ideias para melhorar os seus testes
PDF
Ensinando e aprendendo com desafios
PDF
TDC2016POA | Trilha Web - JSON API: não reinvente a roda
PPTX
TDC2016POA | Trilha Web - Realidade Virtual com WebVR
PDF
Estou desempregado e agora? Como me recolocar como QA.
PDF
Apresentação de Padrões de Design para Aplicativos Móveis.
PDF
Automatizando uma app Híbrida
PDF
Micro serviços alterando seu mindset de tester
PPTX
10 coisas que não me contaram sobre Testes
PDF
Sharing data between iOS apps
ODP
TDC2016POA | Trilha Ruby - Stack Level too Deep e Tail Call Optimization: É u...
PDF
TDC2016POA | Trilha UX Design - Wow experience: como criar interfaces fáceis ...
PDF
TDC2016POA | Trilha UX Design - O que diabos signifca proposta de valor?
PDF
TDC2016POA | Trilha UX Design - Experiencias alem das telas
PDF
TDC2016POA | Trilha UX Design - UX no processo evolutivo de produto
PDF
TDC2016POA | Trilha Education - Tem um Pikachu na Sala de Aula - Pokémon Go ...
PPT
TDC2016POA | Trilha UX Design - Testes de Usabilidade com Emoções para Defic...
Apresentação tdc 2016 - trilha de testes
A transição de um QA tradicional para um Agile Tester
TDC Floripa 2015 - Branding, UX e Marketing
Tdc 5 ideias para melhorar os seus testes
Ensinando e aprendendo com desafios
TDC2016POA | Trilha Web - JSON API: não reinvente a roda
TDC2016POA | Trilha Web - Realidade Virtual com WebVR
Estou desempregado e agora? Como me recolocar como QA.
Apresentação de Padrões de Design para Aplicativos Móveis.
Automatizando uma app Híbrida
Micro serviços alterando seu mindset de tester
10 coisas que não me contaram sobre Testes
Sharing data between iOS apps
TDC2016POA | Trilha Ruby - Stack Level too Deep e Tail Call Optimization: É u...
TDC2016POA | Trilha UX Design - Wow experience: como criar interfaces fáceis ...
TDC2016POA | Trilha UX Design - O que diabos signifca proposta de valor?
TDC2016POA | Trilha UX Design - Experiencias alem das telas
TDC2016POA | Trilha UX Design - UX no processo evolutivo de produto
TDC2016POA | Trilha Education - Tem um Pikachu na Sala de Aula - Pokémon Go ...
TDC2016POA | Trilha UX Design - Testes de Usabilidade com Emoções para Defic...
Anúncio

Último (19)

PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PPTX
Aula 18 - Manipulacao De Arquivos python
PDF
Apple Pippin Uma breve introdução. - David Glotz
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PDF
Processos na gestão de transportes, TM100 Col18
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PDF
Aula04-Academia Heri- Tecnologia Geral 2025
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
COBITxITIL-Entenda as diferença em uso governança TI
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Aula 18 - Manipulacao De Arquivos python
Apple Pippin Uma breve introdução. - David Glotz
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Processos na gestão de transportes, TM100 Col18
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Custos e liquidação no SAP Transportation Management, TM130 Col18
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Aula04-Academia Heri- Tecnologia Geral 2025
Anúncio

Levando seu app do iOS para o macOS