Confira as novidades do Firebase anunciadas no Google I/O 2022. Saiba mais

Receba links dinâmicos do Firebase em um aplicativo Flutter

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.

  1. Instale e inicialize os SDKs do Firebase para Flutter , caso ainda não o tenha feito.

  2. 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
    
  3. 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

  1. Crie uma conta de desenvolvedor da Apple se ainda não tiver uma.

  2. 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.

  3. No site Apple Developer, crie um perfil de provisionamento para seu aplicativo com o recurso Associated Domain habilitado.

  4. No Xcode, faça o seguinte:

    1. Abra seu aplicativo sob o cabeçalho TARGETS .

    2. Na página Assinatura e recursos, certifique-se de que sua equipe esteja registrada e que seu perfil de provisionamento esteja definido.

    3. 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
      
    4. 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.)

    5. 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 chave FirebaseDynamicLinksCustomDomains .

      <?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>
      
    6. 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 chave FirebaseDeepLinkPasteboardRetrievalEnabled como NO .

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
});

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).