Upload
jonas-alves-simoes
View
66
Download
0
Embed Size (px)
Citation preview
Sirikit - iOS 10
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