levando seu app do ios para o macos

123
Do Mobile ao Desktop Como portar seu app do iOS para o Mac

Upload: guilherme-rambo

Post on 22-Jan-2018

141 views

Category:

Technology


0 download

TRANSCRIPT

Do Mobile ao DesktopComo 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

MVVMModel 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