É possível criar Dynamic Links curtos ou longos com a API Firebase Dynamic Links. Ela usa várias estruturas de parâmetros opcionais para criar links. Links curtos também podem ser criados por meio de um link longo gerado anteriormente. Firebase Dynamic Links gera um URL como este:
https://example.page.link/WXYZ
O SDK do C++ funciona no Android e iOS, mas algumas configurações adicionais são necessárias para cada plataforma.
Antes de começar
Antes de usar o Firebase Dynamic Links, você precisa:
Registrar seu projeto em C++ e configurá-lo para usar o Firebase.
Se o projeto em C++ já usa o Firebase, então ele já está registrado e configurado para o Firebase.
Adicione o SDK do Firebase para C++ ao seu projeto em C++.
Adicionar o Firebase ao projeto em C++ envolve tarefas no console do Firebase e no projeto em C++ aberto (por exemplo, fazer o download dos arquivos de configuração do Firebase pelo console e movê-los para o projeto em C++).
Android
- No console do Firebase, abra a seção Dynamic Links.
Se você ainda não aceitou os termos de serviço e definiu um URI para o Dynamic Links, faça isso quando solicitado.
Se você já tem um prefixo URI Dynamic Links, anote-o. Você precisa fornecer um prefixo URI Dynamic Links ao criar conteúdo programaticamente Dynamic Links:
- Recomendado: especifique os padrões de URL permitidos nos links diretos e de fallback. Ao fazer isso, você evita que pessoas não autorizadas criem Dynamic Links que redirecionam para sites que você não controla a partir do seu domínio. Consulte Autorizar padrões de URL.
iOS
- No console do Firebase, abra a seção Dynamic Links.
Se você ainda não aceitou os termos de serviço e definiu um URI para o Dynamic Links, faça isso quando solicitado.
Se você já tem um prefixo URI Dynamic Links, anote-o. É necessário fornecer um domínio Dynamic Links ao criar Dynamic Links de maneira programática.
- A biblioteca de cliente C++ Firebase Dynamic Links usa esquemas de URL personalizados no iOS
para processar links. Você precisa adicionar esquemas de URL personalizados ao app para receber
Dynamic Links:
- Para abrir a configuração do projeto, clique duas vezes no nome dele na visualização em árvore à esquerda. Selecione seu app na seção DESTINOS. Em seguida, selecione a guia Informações e expanda a seção Tipos de URL.
- Clique no botão + e adicione um esquema de URL ao ID do cliente inverso. Para encontrar esse valor, abra o arquivo de configuração
e procure a chaveGoogleService-Info.plist REVERSED_CLIENT_ID
. Copie e cole o valor da chave na caixa Esquemas de URL da página de configuração. Deixe os outros campos em branco. - Clique no botão + e adicione um segundo esquema de URL. Este é o
mesmo que o ID do pacote do seu app. Por exemplo, se o ID do pacote for
com.example.ios
, digite esse valor na caixa Esquemas de URL. É possível encontrar o ID do pacote do seu app na guia Geral das configurações do seu projeto (Identidade > Código do pacote).
Use o console Firebase
Caso você queira fazer testes ou facilitar para sua equipe de marketing a criação de um link a ser usado em uma postagem de mídia social, acesse o Console do Firebase e siga o formulário passo a passo para gerar um Dynamic Link único da maneira mais simples.
Domínios personalizados
Para ter maior controle sobre o branding do Dynamic Link, use seu próprio
domínio em vez de um subdomínio goo.gl
ou page.link
. Siga estas instruções a fim de configurar um domínio personalizado para seu projeto.
Como usar a API Firebase Dynamic Links
Criar e inicializar o app
Antes de criar o Dynamic Links, é necessário criar e inicializar
um objeto firebase::App
.
Inclua o arquivo de cabeçalho de firebase::App
:
#include "firebase/app.h"
A próxima etapa varia de acordo com a plataforma:
Android
Para criar o firebase::App
, transmita como argumentos o ambiente JNI e uma referência jobject
à atividade Java:
app = ::firebase::App::Create(::firebase::AppOptions("APPLICATION NAME"), jni_env, activity);
iOS
Crie a firebase::App
:
app = ::firebase::App::Create(::firebase::AppOptions("APPLICATION NAME"));
Inicializar a biblioteca Dynamic Links
Antes de criar um Dynamic Link, inicialize a biblioteca Dynamic Links:
::firebase::dynamic_links::Initialize(app, null);
Como criar um Dynamic Link longo a partir de parâmetros
Para criar um link dinâmico, gere um objeto DynamicLinkComponents, defina qualquer um dos membros opcionais para configuração extra e transmita esse objeto para dynamic_links::GetShortLink
ou dynamic_links::GetLongLink
.
O pequeno exemplo a seguir cria um Dynamic Links longo para https://www.example.com/ que pode ser aberto com o app para Android com.example.android.package_name e o app para iOS com.example.ios:
firebase::dynamic_links::IOSParameters ios_parameters("com.example.ios"); firebase::dynamic_links::AndroidParameters android_parameters( "com.example.android.package_name"); firebase::dynamic_links::DynamicLinkComponents components( "https://www.example.com/", "example.page.link"); components.android_parameters = &android_parameters; components.ios_parameters = &ios_parameters; firebase::dynamic_links::GeneratedDynamicLink long_link = firebase::dynamic_links::GetLongLink(components);
Como criar um Short Dynamic Link
Para criar um link dinâmico curto, envie um link longo gerado anteriormente para GetShortLink
ou crie DynamicLinkComponents
da mesma maneira indicada acima.
Opcionalmente, GetShortLink
pode ter um parâmetro de configuração adicional DynamicLinkOptions
com a propriedade PathLength
. Ele permite que você controle como o link será gerado. Para gerar um link curto, é preciso uma solicitação de rede para o back-end do Firebase. Portanto, GetShortLink
é assíncrono e retorna um Future<GeneratedLink>
.
Por exemplo:
firebase::dynamic_links::DynamicLinkOptions short_link_options; short_link_options.path_length = firebase::dynamic_links::kPathLengthShort; firebase::Future<firebase::dynamic_links::GeneratedDynamicLink> result = firebase::dynamic_links::GetShortLink(components, short_link_options);
Se o programa tiver um loop de atualização executado com frequência, como 30 ou 60 vezes por segundo, será possível verificar os resultados a cada atualização:
if (result.status() == firebase::kFutureStatusComplete) { if (result.error() == firebase::dynamic_links::kErrorCodeSuccess) { firebase::dynamic_links::GeneratedDynamicLink link = *result.result(); printf("Create short link succeeded: %s\n", link.url.c_str()); } else { printf("Created short link failed with error '%s'\n", result.error_message()); } }