SlideShare uma empresa Scribd logo
1 de 123
Baixar para ler offline
Do Mobile ao Desktop
Como portar seu app do iOS para o Mac
• Introdução
• Semelhanças
• Diferenças
• Estratégia
• Mercado
INTRODUÇÃO
UIKit no Mac?
História do AppKit
Cocoa
Foundation
CoreData
AppKit
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
NSToolbar
UIViewController X
NSViewController
NSWindowController
Uma subclasse de
NSWindowController
para cada tipo de janela
NSMenu
Responder Chain
sendAction(#selector(copy:), to: nil, from: self)
NSWindow
NSWindowController
NSViewController
NSTextField
copy(sender: ...)
X
X
X
✓
window.firstResponder
window.firstResponder
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
UIAlertController
X NSAlert
Sheet
Modal
UIView X NSView
view.wantsLayer = true
Layer Backed View
view.wantsLayer = true
view.layer = CALayer()
view.layer.borderWidth = 4.0
// ...
Layer Hosting View
NSCell
UIAppearance X
NSAppearance
NSAppearanceNameAqua
NSAppearanceNameVibrantDark
Appearance Maker
Appearance Maker
Storyboards
Vantagens Exclusivas
XPC
NSWorkspace
NSDistributedNotificationCenter
Scripting
Design
Tipos básicos de app
• Utilitário (Calculadora)
• "Caixa de sapato" (iTunes)
• Baseado em documentos (Editor de Texto)
ESTRATÉGIA
TMDBCore BingeUI
APP
Arquitetura
Trabalho paralelo
Gerenciador de dependências
MVVM
Model view view-model
Use frameworks
#if os(...)
e
typealias
iCloud
MERCADO
!
AppStore
Preços
Mercados de Nicho
AppStore X Venda Direta
Vantagens de vender fora da AppStore
• AppStore: 30% / FastSpring: 9%
• Contato direto com o usuário
• Updates imediatos
• Sandboxing opcional
OBRIGADO!
Guilherme Rambo
github.com/insidegui
Faça como o Obama!
Siga no Twitter: @_inside

Mais conteúdo relacionado

Destaque

Apresentação tdc 2016 - trilha de testes
Apresentação tdc   2016 - trilha de testesApresentação tdc   2016 - trilha de testes
Apresentação tdc 2016 - trilha de testesSamuel Lucas
 
A transição de um QA tradicional para um Agile Tester
A transição de um QA tradicional para um Agile TesterA transição de um QA tradicional para um Agile Tester
A transição de um QA tradicional para um Agile TesterJéssica Mollo
 
TDC Floripa 2015 - Branding, UX e Marketing
TDC Floripa 2015 - Branding, UX e MarketingTDC Floripa 2015 - Branding, UX e Marketing
TDC Floripa 2015 - Branding, UX e Marketingleite08
 
Tdc 5 ideias para melhorar os seus testes
Tdc   5 ideias para melhorar os seus testesTdc   5 ideias para melhorar os seus testes
Tdc 5 ideias para melhorar os seus testesLindomar Peixinho Reitz
 
Ensinando e aprendendo com desafios
Ensinando e aprendendo com desafiosEnsinando e aprendendo com desafios
Ensinando e aprendendo com desafiosJônatas Paganini
 
TDC2016POA | Trilha Web - JSON API: não reinvente a roda
TDC2016POA | Trilha Web - JSON API: não reinvente a rodaTDC2016POA | Trilha Web - JSON API: não reinvente a roda
TDC2016POA | Trilha Web - JSON API: não reinvente a rodatdc-globalcode
 
TDC2016POA | Trilha Web - Realidade Virtual com WebVR
TDC2016POA | Trilha Web -  Realidade Virtual com WebVRTDC2016POA | Trilha Web -  Realidade Virtual com WebVR
TDC2016POA | Trilha Web - Realidade Virtual com WebVRtdc-globalcode
 
Estou desempregado e agora? Como me recolocar como QA.
Estou desempregado e agora? Como me recolocar como QA.Estou desempregado e agora? Como me recolocar como QA.
Estou desempregado e agora? Como me recolocar como QA.Robson Agapito Correa
 
Apresentação de Padrões de Design para Aplicativos Móveis.
Apresentação de Padrões de Design para Aplicativos Móveis.Apresentação de Padrões de Design para Aplicativos Móveis.
Apresentação de Padrões de Design para Aplicativos Móveis.Hewerson Freitas
 
Automatizando uma app Híbrida
Automatizando uma app HíbridaAutomatizando uma app Híbrida
Automatizando uma app HíbridaElias Nogueira
 
Implementando acessibilidade em aplicações Android
Implementando acessibilidade em aplicações AndroidImplementando acessibilidade em aplicações Android
Implementando acessibilidade em aplicações AndroidPaula Caroline da Rosa
 
10 coisas que não me contaram sobre Testes
10 coisas que não me contaram sobre Testes10 coisas que não me contaram sobre Testes
10 coisas que não me contaram sobre TestesKatiana Maia
 
Sharing data between iOS apps
Sharing data between iOS appsSharing data between iOS apps
Sharing data between iOS appsDiego Chohfi
 
TDC2016POA | Trilha Ruby - Stack Level too Deep e Tail Call Optimization: É u...
TDC2016POA | Trilha Ruby - Stack Level too Deep e Tail Call Optimization: É u...TDC2016POA | Trilha Ruby - Stack Level too Deep e Tail Call Optimization: É u...
TDC2016POA | Trilha Ruby - Stack Level too Deep e Tail Call Optimization: É u...tdc-globalcode
 
TDC2016POA | Trilha UX Design - Wow experience: como criar interfaces fáceis ...
TDC2016POA | Trilha UX Design - Wow experience: como criar interfaces fáceis ...TDC2016POA | Trilha UX Design - Wow experience: como criar interfaces fáceis ...
TDC2016POA | Trilha UX Design - Wow experience: como criar interfaces fáceis ...tdc-globalcode
 
TDC2016POA | Trilha UX Design - O que diabos signifca proposta de valor?
TDC2016POA | Trilha UX Design -  O que diabos signifca proposta de valor?TDC2016POA | Trilha UX Design -  O que diabos signifca proposta de valor?
TDC2016POA | Trilha UX Design - O que diabos signifca proposta de valor?tdc-globalcode
 
TDC2016POA | Trilha UX Design - Experiencias alem das telas
TDC2016POA | Trilha UX Design -  Experiencias alem das telasTDC2016POA | Trilha UX Design -  Experiencias alem das telas
TDC2016POA | Trilha UX Design - Experiencias alem das telastdc-globalcode
 
TDC2016POA | Trilha UX Design - UX no processo evolutivo de produto
TDC2016POA | Trilha UX Design - UX no processo evolutivo de produtoTDC2016POA | Trilha UX Design - UX no processo evolutivo de produto
TDC2016POA | Trilha UX Design - UX no processo evolutivo de produtotdc-globalcode
 
TDC2016POA | Trilha Education - Tem um Pikachu na Sala de Aula - Pokémon Go ...
TDC2016POA | Trilha Education -  Tem um Pikachu na Sala de Aula - Pokémon Go ...TDC2016POA | Trilha Education -  Tem um Pikachu na Sala de Aula - Pokémon Go ...
TDC2016POA | Trilha Education - Tem um Pikachu na Sala de Aula - Pokémon Go ...tdc-globalcode
 

Destaque (20)

Apresentação tdc 2016 - trilha de testes
Apresentação tdc   2016 - trilha de testesApresentação tdc   2016 - trilha de testes
Apresentação tdc 2016 - trilha de testes
 
A transição de um QA tradicional para um Agile Tester
A transição de um QA tradicional para um Agile TesterA transição de um QA tradicional para um Agile Tester
A transição de um QA tradicional para um Agile Tester
 
TDC Floripa 2015 - Branding, UX e Marketing
TDC Floripa 2015 - Branding, UX e MarketingTDC Floripa 2015 - Branding, UX e Marketing
TDC Floripa 2015 - Branding, UX e Marketing
 
Tdc 5 ideias para melhorar os seus testes
Tdc   5 ideias para melhorar os seus testesTdc   5 ideias para melhorar os seus testes
Tdc 5 ideias para melhorar os seus testes
 
Ensinando e aprendendo com desafios
Ensinando e aprendendo com desafiosEnsinando e aprendendo com desafios
Ensinando e aprendendo com desafios
 
TDC2016POA | Trilha Web - JSON API: não reinvente a roda
TDC2016POA | Trilha Web - JSON API: não reinvente a rodaTDC2016POA | Trilha Web - JSON API: não reinvente a roda
TDC2016POA | Trilha Web - JSON API: não reinvente a roda
 
TDC2016POA | Trilha Web - Realidade Virtual com WebVR
TDC2016POA | Trilha Web -  Realidade Virtual com WebVRTDC2016POA | Trilha Web -  Realidade Virtual com WebVR
TDC2016POA | Trilha Web - Realidade Virtual com WebVR
 
Estou desempregado e agora? Como me recolocar como QA.
Estou desempregado e agora? Como me recolocar como QA.Estou desempregado e agora? Como me recolocar como QA.
Estou desempregado e agora? Como me recolocar como QA.
 
Apresentação de Padrões de Design para Aplicativos Móveis.
Apresentação de Padrões de Design para Aplicativos Móveis.Apresentação de Padrões de Design para Aplicativos Móveis.
Apresentação de Padrões de Design para Aplicativos Móveis.
 
Automatizando uma app Híbrida
Automatizando uma app HíbridaAutomatizando uma app Híbrida
Automatizando uma app Híbrida
 
Implementando acessibilidade em aplicações Android
Implementando acessibilidade em aplicações AndroidImplementando acessibilidade em aplicações Android
Implementando acessibilidade em aplicações Android
 
Micro serviços alterando seu mindset de tester
Micro serviços alterando seu mindset de testerMicro serviços alterando seu mindset de tester
Micro serviços alterando seu mindset de tester
 
10 coisas que não me contaram sobre Testes
10 coisas que não me contaram sobre Testes10 coisas que não me contaram sobre Testes
10 coisas que não me contaram sobre Testes
 
Sharing data between iOS apps
Sharing data between iOS appsSharing data between iOS apps
Sharing data between iOS apps
 
TDC2016POA | Trilha Ruby - Stack Level too Deep e Tail Call Optimization: É u...
TDC2016POA | Trilha Ruby - Stack Level too Deep e Tail Call Optimization: É u...TDC2016POA | Trilha Ruby - Stack Level too Deep e Tail Call Optimization: É u...
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 - Wow experience: como criar interfaces fáceis ...TDC2016POA | Trilha UX Design - Wow experience: como criar interfaces fáceis ...
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 -  O que diabos signifca proposta de valor?TDC2016POA | Trilha UX Design -  O que diabos signifca proposta de valor?
TDC2016POA | Trilha UX Design - O que diabos signifca proposta de valor?
 
TDC2016POA | Trilha UX Design - Experiencias alem das telas
TDC2016POA | Trilha UX Design -  Experiencias alem das telasTDC2016POA | Trilha UX Design -  Experiencias alem das telas
TDC2016POA | Trilha UX Design - Experiencias alem das telas
 
TDC2016POA | Trilha UX Design - UX no processo evolutivo de produto
TDC2016POA | Trilha UX Design - UX no processo evolutivo de produtoTDC2016POA | Trilha UX Design - UX no processo evolutivo de produto
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 Education -  Tem um Pikachu na Sala de Aula - Pokémon Go ...TDC2016POA | Trilha Education -  Tem um Pikachu na Sala de Aula - Pokémon Go ...
TDC2016POA | Trilha Education - Tem um Pikachu na Sala de Aula - Pokémon Go ...
 

Semelhante a Levando seu app do iOS para o macOS

Workshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura MicroservicesWorkshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura MicroservicesRodrigo Cândido da Silva
 
Microserviços - Universidade Metodista - EETI 2016
Microserviços - Universidade Metodista - EETI 2016Microserviços - Universidade Metodista - EETI 2016
Microserviços - Universidade Metodista - EETI 2016Renato Groff
 
QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...
QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...
QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...Rodrigo Cândido da Silva
 
TDC 2014 - Arquitetura front-end com AngularJS
TDC 2014 - Arquitetura front-end com AngularJSTDC 2014 - Arquitetura front-end com AngularJS
TDC 2014 - Arquitetura front-end com AngularJSLeonardo Zanivan
 
Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017
Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017
Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017Renato Groff
 
Jsf com hibernate, spring security e maven
Jsf com hibernate, spring security e mavenJsf com hibernate, spring security e maven
Jsf com hibernate, spring security e mavenLeandro Costa
 
Plataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKPlataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKRyan Padilha
 
Workshop anypoint service mesh
Workshop   anypoint service meshWorkshop   anypoint service mesh
Workshop anypoint service meshRenato de Oliveira
 
Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...
Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...
Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...Renato Groff
 
Netshoes - API Gateway
Netshoes - API GatewayNetshoes - API Gateway
Netshoes - API GatewayMarcos Barbero
 
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017Renato Groff
 
Microservices - ALM Roadshow 2015
Microservices - ALM Roadshow 2015Microservices - ALM Roadshow 2015
Microservices - ALM Roadshow 2015Renato Groff
 
Transformando seu datacenter em nuvem privada
Transformando seu datacenter em nuvem privadaTransformando seu datacenter em nuvem privada
Transformando seu datacenter em nuvem privadaJuscélio Reis
 
Application Insights - Agosto/2016
Application Insights - Agosto/2016Application Insights - Agosto/2016
Application Insights - Agosto/2016Renato Groff
 
Application Insights - MS Weekend 2016
Application Insights - MS Weekend 2016Application Insights - MS Weekend 2016
Application Insights - MS Weekend 2016Renato Groff
 
Microservices - Canal .NET Dev Weekend
Microservices - Canal .NET Dev WeekendMicroservices - Canal .NET Dev Weekend
Microservices - Canal .NET Dev WeekendRenato Groff
 
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-TouchDesenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-TouchCampus Party Brasil
 
ASM.NET MVC 5 + Entity Framework - Explorando conceitos e criando um projeto ...
ASM.NET MVC 5 + Entity Framework - Explorando conceitos e criando um projeto ...ASM.NET MVC 5 + Entity Framework - Explorando conceitos e criando um projeto ...
ASM.NET MVC 5 + Entity Framework - Explorando conceitos e criando um projeto ...anybalrocha
 

Semelhante a Levando seu app do iOS para o macOS (20)

Workshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura MicroservicesWorkshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura Microservices
 
Microserviços - Universidade Metodista - EETI 2016
Microserviços - Universidade Metodista - EETI 2016Microserviços - Universidade Metodista - EETI 2016
Microserviços - Universidade Metodista - EETI 2016
 
QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...
QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...
QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...
 
TDC 2014 - Arquitetura front-end com AngularJS
TDC 2014 - Arquitetura front-end com AngularJSTDC 2014 - Arquitetura front-end com AngularJS
TDC 2014 - Arquitetura front-end com AngularJS
 
Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017
Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017
Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017
 
Jsf com hibernate, spring security e maven
Jsf com hibernate, spring security e mavenJsf com hibernate, spring security e maven
Jsf com hibernate, spring security e maven
 
Plataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKPlataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDK
 
Workshop anypoint service mesh
Workshop   anypoint service meshWorkshop   anypoint service mesh
Workshop anypoint service mesh
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
 
Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...
Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...
Docker + Azure: opções disponíveis e utilização de containers na nuvem - Azur...
 
Netshoes - API Gateway
Netshoes - API GatewayNetshoes - API Gateway
Netshoes - API Gateway
 
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
 
Microservices
MicroservicesMicroservices
Microservices
 
Microservices - ALM Roadshow 2015
Microservices - ALM Roadshow 2015Microservices - ALM Roadshow 2015
Microservices - ALM Roadshow 2015
 
Transformando seu datacenter em nuvem privada
Transformando seu datacenter em nuvem privadaTransformando seu datacenter em nuvem privada
Transformando seu datacenter em nuvem privada
 
Application Insights - Agosto/2016
Application Insights - Agosto/2016Application Insights - Agosto/2016
Application Insights - Agosto/2016
 
Application Insights - MS Weekend 2016
Application Insights - MS Weekend 2016Application Insights - MS Weekend 2016
Application Insights - MS Weekend 2016
 
Microservices - Canal .NET Dev Weekend
Microservices - Canal .NET Dev WeekendMicroservices - Canal .NET Dev Weekend
Microservices - Canal .NET Dev Weekend
 
Desenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-TouchDesenvolvendo para iOS com Cocoa-Touch
Desenvolvendo para iOS com Cocoa-Touch
 
ASM.NET MVC 5 + Entity Framework - Explorando conceitos e criando um projeto ...
ASM.NET MVC 5 + Entity Framework - Explorando conceitos e criando um projeto ...ASM.NET MVC 5 + Entity Framework - Explorando conceitos e criando um projeto ...
ASM.NET MVC 5 + Entity Framework - Explorando conceitos e criando um projeto ...
 

Levando seu app do iOS para o macOS