Usando a Siri para executar atalhos no seu aplicativo Flutter através do Apple shortcuts
Hey siri, faça algo no meu aplicativo 🎙️

Apaixonado pela criação de aplicativos móveis, trabalhando ativamente com o Flutter desde de 2018. Bacharel em Ciência da Computação pela UESPI (Parnaíba). Trabalha como Desenvolvedor Flutter Especialista na Appmax. Atua como organizador do GDG Parnaíba e Flutter Piauí.
Fala galera, tudo blz? Hoje vamos aprender como integrar o seu app Flutter ao assistente do iOS a Siri. Recentemente precisei desenvolver um novo recurso em um aplicativo que estou trabalhando e a funcionalidade era exatamente pedir pra siri através de voz que ativasse algo no meu aplicativo.
Essa comunicação é algo bem legal e venho aqui ensinar tudo isso pra vocês.
Ao integrar os Atalhos da Siri, seu aplicativo pode destacar suas principais funcionalidades, oferecendo aos usuários maneiras novas e interativas de interagir com ele — uma estratégia simples, porém eficaz, para se manter à frente da concorrência.
O que são Apple Shortcuts ou Atalhos
Segundo o site da apple: Um atalho é uma maneira rápida de realizar uma ou mais tarefas com seus aplicativos economizando tempo em ações repetitivas, como definir alarmes ou lembretes. O aplicativo Atalhos permite que você crie seus próprios atalhos com várias etapas. Por exemplo, crie um atalho para "Tempo de Surfe" que exibe o relatório de surfe, informa o horário previsto para a praia e inicia sua playlist de músicas de surfe.
Os Shortcuts ficam disponíveis assim que o aplicativo é instalado no iOS e podem ser executados no Spotlight, na tela Inicial, no aplicativo Atalhos ou até mesmo usando a voz com a Siri que é o que vamos fazer hoje.
E para fazermos o nosso aplicativo Flutter comunicar com os Atalhos do iOS vamos usar algo chamado App Intents que oferece funcionalidades para integrar profundamente as ações e o conteúdo do seu aplicativo com as experiências do sistema em todas as plataformas, incluindo Siri, Spotlight, widgets, controles e muito mais.
Utilizando as Intents no Flutter com o package Intelligence
1 — Adicionando a dependência em seu projeto
Vamos começar adicionando a dependência ao nosso arquivo pubspec.yaml.
Instale o pacote a partir da linha de comando com o Flutter
$ flutter pub add intelligence
Ou adicione intelligence diretamente em seu pubspec.yaml e execute flutter pub get no momento da criação desse artigo ele está na versão 0.2.0.
dependencies:
intelligence: ^0.2.0
Agora, no seu código Dart, você pode importar o package:
import 'package:intelligence/intelligence.dart';
2 - Vamos criar um novo aplicativo Flutter para o nosso exemplo de hoje.
flutter create flutter_siri_example
Após o nosso projeto criado vamos fazer a configuração na parte nativa do iOS, então abra a pasta ios no Xcode clicando com o botão direito no vsCode.

Agora você precisa definir a versão mínima do iOS para 16.0 no Xcode para o projeto, veja a imagem abaixo:

Após feito isso vamos integrar os comandos que queremos que a siri interprete em nosso aplicativo.
Abra o Xcode e crie uma novo arquivo Swift. Vamos usar o exemplo padrão do Flutter de app contador e adicionar dois comandos, um para incrementar e outro para resetar o valor.
Crie o arquivo IncrementeIntent.Swift no Xcode, veja o exemplo abaixo e código que você precisa escrever.

import AppIntents
import intelligence
struct IncrementIntent: AppIntent {
static var title: LocalizedStringResource = "Aumentar contador"
static var openAppWhenRun: Bool = true
@MainActor
func perform() async throws -> some IntentResult {
IntelligencePlugin.notifier.push("increment")
return .result()
}
}
Vamos criar nossa segunda Intent onde vai interpretar o comando de reset do valores do contador.
Crie um arquivo chamado RefreshIntent.Swfit conforme a imagem abaixo:

import AppIntents
import intelligence
struct RefreshIntent: AppIntent {
static var title: LocalizedStringResource = "Atualizar contador"
static var openAppWhenRun: Bool = true
@MainActor
func perform() async throws -> some IntentResult {
IntelligencePlugin.notifier.push("refresh")
return .result()
}
}
Em seguida vamos criar último arquivo para interpretar as strings dos comandos e acionar a Intent correta declarado acima apenas falando uma frase específica para a Siri.
Veja o exemplo abaixo:

import AppIntents
struct AllAppShortcuts: AppShortcutsProvider {
static var appShortcuts: [AppShortcut] {
return [
AppShortcut(
intent: IncrementIntent(),
phrases: [
"Incrementar número no \(.applicationName)",
"Adicionar número no \(.applicationName)",
"Aumentar número no \(.applicationName)",
]
),
AppShortcut(
intent: RefreshIntent(),
phrases: [
"Resetar contador no \(.applicationName)"
]
),
]
}
}
Agora o lado do Flutter 💙
No lado do Flutter na nossa página principal vamos chamar o método para escutar se o aplicativo foi aberto pela a Siri e interpretando os comandos.
void _incrementCounter() {
setState(() {
_counter++;
});
}
void _refreshCounter() {
setState(() {
_counter = 0;
});
}
@override
void initState() {
super.initState();
_initSiri();
}
void _initSiri() {
if (Platform.isIOS) {
Intelligence().selectionsStream().listen(_trackSiri);
}
}
void _trackSiri(String selection) {
log('Siri Command triggered: $selection');
switch (selection) {
case 'increment':
_incrementCounter();
break;
case 'refresh':
_refreshCounter();
break;
default:
break;
}
}
O código acima é responsável por ouvir os comandos passados para a Siri e acionar os métodos corretos que no nosso caso são dois em nosso app.
_incrementCounter e _refreshCounter o resto do código você pode consultar no link do repositório aqui.
Rodando e testando o aplicativo
Execute o aplicativo no simulador do iOS e ative a Siri com a opção mostrada abaixo:

Quando a Siri detectar pela primeira vez o comando de voz, pode ser que o iOS peça para adicionar o comando no app Atalhos do iOS mas nos meus testes teve vez que foi automático mas se aparecer apenas clique em Ativar.

Veja o link do video do aplicativo de demonstração em funcionamento abaixo: 👇🏻
https://drive.google.com/file/d/1CddUVKZt8iCdSNgNx7Z_oLPSNrGQOk5C/view?usp=sharing
Conclusão ✅
Bom foi isso, os atalhos da Siri podem automatizar diversas tarefas, como iniciar aplicativos, enviar mensagens, definir lembretes e deixar nossos apps muito mais inteligentes e legais. O céu é o limite ✨
Você pode consultar o código de exemplo no github.
Obrigado por ler até aqui. 😁
Espero que você tenha gostado! Compartilhe-o com seus amigos e colegas!
Juntos, vamos construir apps incríveis que transformam o mundo!
Se tiver alguma dúvida ou contribuição me manda uma DM ou deixe nos comentários!
Me siga para estar sempre por dentro dos próximos artigos sobre desenvolvimento móvel 📲 🚀
🌐 Minhas redes sociais 🌐
Github | LinkedIn | Instagram | X (Twitter) | Medium



