Para receber o Firebase Dynamic Links que você criou , você deve incluir o SDK do Dynamic Links em seu aplicativo e chamar o método FirebaseDynamicLinks.getDynamicLink()
quando seu aplicativo carregar para obter os dados passados no Dynamic Link.
Configurar o Firebase e o SDK do Dynamic Links
Instale e inicialize os SDKs do Firebase para Flutter , caso ainda não o tenha feito.
No diretório raiz do seu projeto Flutter, execute o seguinte comando para instalar o plug-in Dynamic Links:
flutter pub add firebase_dynamic_links
Se você estiver criando um aplicativo Android, abra a página de configurações do projeto do console do Firebase e verifique se você especificou sua chave de assinatura SHA-1. Se você usar App Links, especifique também sua chave SHA-256.
Integração da plataforma
Conclua as seguintes etapas de integração de plataforma para as plataformas para as quais você está criando seu aplicativo.
Android
No Android, você deve adicionar um novo filtro de intent catch deep links do seu domínio, pois o Dynamic Link redirecionará para o seu domínio se o seu aplicativo estiver instalado. Isso é necessário para que seu aplicativo receba os dados do Dynamic Link depois que ele for instalado/atualizado na Play Store e um toque no botão Continuar. Em AndroidManifest.xml
:
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data
android:host="example.com"
android:scheme="https"/>
</intent-filter>
Quando os usuários abrirem um link dinâmico com um link direto para o esquema e o host especificados, seu aplicativo iniciará a atividade com esse filtro de intenção para lidar com o link.
A próxima etapa é garantir que a impressão digital SHA-256 do certificado de assinatura esteja registrada no console do Firebase para o aplicativo. Você pode encontrar mais detalhes sobre como recuperar sua impressão digital SHA-256 na página Autenticando seu cliente .
Plataformas da Apple
Crie uma conta de desenvolvedor da Apple se ainda não tiver uma.
Na página de configurações do projeto do Firebase console, certifique-se de que seu aplicativo iOS esteja configurado corretamente com seu ID da App Store e ID da equipe.
No site Apple Developer, crie um perfil de provisionamento para seu aplicativo com o recurso Associated Domain habilitado.
No Xcode, faça o seguinte:
Abra seu aplicativo sob o cabeçalho TARGETS .
Na página Assinatura e recursos, certifique-se de que sua equipe esteja registrada e que seu perfil de provisionamento esteja definido.
Na página Signing & Capabilities, ative Associated Domains e adicione o seguinte à lista Associated Domains (substitua o exemplo pelo seu domínio):
applinks:example.page.link
Na página Informações, adicione um Tipo de URL ao seu projeto. Defina o campo Esquemas de URL para o ID do pacote do seu aplicativo. (O identificador pode ser o
Bundle ID
ou o que você desejar.)Se você configurou um domínio personalizado para seu projeto Firebase, adicione o prefixo de URL do link dinâmico ao arquivo
Info.plist
do projeto iOS usando a chaveFirebaseDynamicLinksCustomDomains
.<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>FirebaseDynamicLinksCustomDomains</key> <array> <string>https://custom.domain.io/path1</string> <string>https://custom.domain.io/path2</string> </array> ...other settings </dict> </plist>
Opcional: desative o uso da área de transferência do iOS pelo SDK do Dynamic Links.
Por padrão, o SDK do Dynamic Links usa a área de transferência para melhorar a confiabilidade dos links diretos pós-instalação. Ao usar a área de transferência, o Dynamic Links pode garantir que, quando um usuário abrir um Dynamic Link, mas precisar instalar seu aplicativo primeiro, o usuário possa ir imediatamente para o conteúdo vinculado original ao abrir o aplicativo pela primeira vez após a instalação.
A desvantagem disso é que o uso da área de transferência aciona uma notificação no iOS 14 e posterior. Portanto, na primeira vez que os usuários abrirem seu aplicativo, se a área de transferência contiver um URL de link dinâmico, eles verão uma notificação de que seu aplicativo acessou a área de transferência, o que pode causar confusão.
Para desativar esse comportamento, edite o arquivo
Info.plist
do seu projeto Xcode e defina a chaveFirebaseDeepLinkPasteboardRetrievalEnabled
comoNO
.
Lidar com links profundos
Para lidar com um link dinâmico em seu aplicativo, dois cenários requerem implementação.
Estado encerrado
Se o aplicativo for encerrado, o método FirebaseDynamicLinks.getInitialLink
permite que você recupere o link dinâmico que abriu o aplicativo.
Essa é uma solicitação assíncrona, portanto, faz sentido manipular um link antes de renderizar a lógica do aplicativo, como um navegador. Por exemplo, você poderia lidar com isso na função main
:
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(options: DefaultFirebaseConfig.platformOptions);
// Get any initial links
final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getInitialLink();
runApp(MyApp(initialLink));
}
Dentro da lógica do seu aplicativo, você pode verificar se um link foi manipulado e executar uma ação, por exemplo:
if (initialLink != null) {
final Uri deepLink = initialLink.link;
// Example of using the dynamic link to push the user to a different screen
Navigator.pushNamed(context, deepLink.path);
}
Como alternativa, se você deseja identificar se um link dinâmico exato foi usado para abrir o aplicativo, passe-o para o método getDynamicLink
:
String link = 'https://dynamic-link-domain/ke2Qa';
final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getDynamicLink(Uri.parse(link));
Estado de segundo plano / primeiro plano
Enquanto o aplicativo está aberto ou em segundo plano, você pode ouvir os eventos do Dynamic Links usando um manipulador de fluxo. O getter FirebaseDynamicLinks.onLink
retorna um Stream
contendo um PendingDynamicLinkData
:
FirebaseDynamicLinks.instance.onLink.listen((dynamicLinkData) {
Navigator.pushNamed(context, dynamicLinkData.link.path);
}).onError((error) {
// Handle errors
});
Testando um link dinâmico na plataforma iOS
Para testar um link dinâmico no iOS, é necessário que você use um dispositivo real. Você também precisará executar o aplicativo no modo de lançamento (ou seja flutter run --release
.), se estiver testando um link dinâmico de um estado de aplicativo encerrado (ou seja, o aplicativo foi fechado).