Cocoaheads talk-sirikit

Preview:

Citation preview

Sirikit - iOS 10

Dev iOS na avenue code

Jonas Alves Simões alves.jonas@gmail.com

WWDC 2016

• Apple libera o sirikit

• Sirikit é o meio de integrar seu app ao siri e ao maps

• Uso do intent framework e Intents UI framework

• Usuario faz requisição de certos tipos de serviços atráves do Siri ou Maps e seu app usa os extensions para responder a isso

Extensions

Domains Suportados

• Calling intents support audio and video calls to another user of your app.

• Workout intents support the starting and stopping of workouts.• Message intents support the sending of message data to specific

users• Payment intents support financial transactions between your app

and the user. • Photo intents support the searching and displaying of photos. • Ride sharing intents support the booking and management of user

transportation.

Configuração plist

INSearchForPhotosIntent INStartAudioCallIntent INStartWorkoutIntent

INSearchCallHistoryIntent INSendMessageIntent

INSearchForMessagesIntent INSetMessageAttributeIntent

INSearchForPhotosIntent INEndWorkoutIntent

https://developer.apple.com/library/prerelease/content/documentation/Intents/Conceptual/SiriIntegrationGuide/SiriDomains.html#//apple_ref/doc/uid/TP40016875-CH9-SW2

Intents - Domains

Resolve, Confirm and Handle.

Retornando valores para os Intents

Durante a fase de resolução dos intents, é necessário retornar um valor do tipo INIntentResolutionResult para o completion do intent.

retorno sucesso INStringResolutionResult.success(with: "Legal")

valor não necessário INStringResolutionResult.notRequired()

valor necessita desambiguação INStringResolutionResult.disambiguation(with: optionsArray)

valor necessida confirmação do usuário INStringResolutionResult.confirmationRequired(with: String?)

valor precisa de mais detalhes INPersonResolutionResult.needsMoreDetails(for: INPerson)

valor é obrigatório INStringResolutionResult.needsValue()

valor não é suportado INStringResolutionResult.unsupported()

Confirm e Handle

Confirm() - Metodo usados para confirmar ação do usuário e executar alguma ação no seu app.

Handle() - Chamado quando o usuário confirme a ação, como seu app vai responder e o que vai executar.

Vocabulary - App Logic - UI

É possível ensinar ao seu app alguns termos usados para conversar com ele

INVocabulary.shared().setVocabularyStrings(pharses, of: INVocabularyStringType.workoutActivityName)

contactName contactGroupName

photoTag photoAlbumName

workoutActivityName carProfileName

Vocabulary - App Logic - UI

É possível ensinar ao seu app alguns termos usados para ajudar a siri a compreender o que você quer

INVocabulary.shared().setVocabularyStrings(pharses, of: INVocabularyStringType.workoutActivityName)

contactName contactGroupName

photoTag photoAlbumName

workoutActivityName carProfileName

Chamada é feita dentro do app, e não no extensions. Apple recomenda usar dispatch.Async

Como debugar

• Rodar o app uma vez para instalar no aparelho

• Não é possível debugar no simulador

• Selecionar o extension e rodar e selecionar o siri

Limitações

• Os atuais intents não cobrem muitas possibilidades de uso nos apps. Apesar de liberar a integração pareceu mais do mesmo.

• Muitas vezes acontece o erro - "Você terá ter que continuar no aplicativo"

• INPersonResolutionResult.needsMoreDetails e confirmationRequired -- bug

Exemplo

Fontes

Recommended