Crie links dinâmicos com C++

Você pode criar links dinâmicos curtos ou longos com a API Firebase Dynamic Links. A API usa várias estruturas de parâmetros opcionais para construir links. Links curtos também podem ser criados a partir de um link longo gerado anteriormente. O Firebase Dynamic Links gera um URL como este:

https://example.page.link/WXYZ

O SDK C++ funciona para Android e iOS, com algumas configurações adicionais necessárias para cada plataforma.d

Antes de você começar

Antes de usar o Firebase Dynamic Links , você precisa:

  • Registre seu projeto C++ e configure-o para usar o Firebase.

    Se o seu projeto C++ já usa o Firebase, ele já está registrado e configurado para o Firebase.

  • Adicione o SDK do Firebase para C++ ao seu projeto C++.

Observe que adicionar o Firebase ao seu projeto C++ envolve tarefas no console do Firebase e no seu projeto C++ aberto (por exemplo, você baixa os arquivos de configuração do Firebase do console e os move para o seu projeto C++).

Android

  1. No console do Firebase, abra a seção Dynamic Links .
  2. Se você ainda não aceitou os termos de serviço e definiu um prefixo de URI para seus Dynamic Links, faça-o quando solicitado.

    Se você já tiver um prefixo de URI do Dynamic Links, anote-o. Você precisa fornecer um prefixo de URI de links dinâmicos ao criar links dinâmicos de maneira programática.

  3. Recomendado : especifique os padrões de URL permitidos em seus links diretos e links substitutos. Ao fazer isso, você evita que partes não autorizadas criem links dinâmicos que redirecionem do seu domínio para sites que você não controla. Consulte Padrões de URL da lista de permissões .

iOS

  1. No console do Firebase, abra a seção Dynamic Links .
  2. Se você ainda não aceitou os termos de serviço e definiu um prefixo de URI para seus Dynamic Links, faça-o quando solicitado.

    Se você já tiver um prefixo de URI do Dynamic Links, anote-o. Você precisa fornecer um domínio Dynamic Links ao criar Dynamic Links programaticamente.

  3. A biblioteca cliente C++ do Firebase Dynamic Links usa esquemas de URL personalizados no iOS para processar links. Você deve adicionar esquemas de URL personalizados ao seu aplicativo para oferecer suporte ao recebimento de links dinâmicos:
    1. Para abrir a configuração do seu projeto, clique duas vezes no nome do projeto na visualização em árvore à esquerda. Selecione seu aplicativo na seção TARGETS , selecione a guia Informações e expanda a seção Tipos de URL .
    2. Clique no botão + e adicione um esquema de URL para seu ID de cliente invertido. Para encontrar esse valor, abra o arquivo de configuração GoogleService-Info.plist e procure a chave REVERSED_CLIENT_ID . Copie o valor dessa chave e cole-o na caixa Esquemas de URL na página de configuração. Deixe os demais campos em branco.
    3. Clique no botão + e adicione um segundo esquema de URL. Este é igual ao ID do pacote do seu aplicativo. Por exemplo, se o ID do seu pacote for com.example.ios , digite esse valor na caixa Esquemas de URL . Você pode encontrar o ID do pacote do seu aplicativo na guia Geral da configuração do projeto ( Identidade > Identificador de Pacote ).

Usar o console do Firebase

Se você deseja gerar um único link dinâmico, seja para fins de teste ou para que sua equipe de marketing crie facilmente um link que possa ser usado em algo como uma postagem em mídia social, a maneira mais simples seria visitar o console do Firebase e criar um manualmente seguindo o passo a passo.

Domínios personalizados

Você pode ter maior controle sobre a marca do seu link dinâmico usando seu próprio domínio em vez de um subdomínio goo.gl ou page.link . Siga estas instruções para configurar um domínio personalizado para o seu projeto.

Usando a API Firebase Dynamic Links

Crie e inicialize o aplicativo

Antes de criar links dinâmicos, você precisará criar e inicializar um objeto firebase::App .

Inclua o arquivo de cabeçalho para firebase::App :

#include "firebase/app.h"

A próxima parte varia dependendo da sua plataforma:

Android

Crie o firebase::App , passando o ambiente JNI e uma referência jobject para a atividade Java como argumentos:

app = ::firebase::App::Create(::firebase::AppOptions("APPLICATION NAME"), jni_env, activity);

iOS

Crie o firebase::App :

app = ::firebase::App::Create(::firebase::AppOptions("APPLICATION NAME"));

Inicializar biblioteca do Dynamic Links

Antes de criar um Dynamic Link, você deve primeiro inicializar a biblioteca Dynamic Links:

::firebase::dynamic_links::Initialize(app, null);

Criando um link dinâmico longo a partir de parâmetros

Para criar um link dinâmico, crie um objeto DynamicLinkComponents, definindo qualquer um dos membros opcionais para configuração adicional e transmitindo-o para dynamic_links::GetShortLink ou dynamic_links::GetLongLink .

O exemplo mínimo a seguir cria um link dinâmico longo para https://www.example.com/ que abre com seu aplicativo Android com.example.android.package_name e aplicativo 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);

Criando um link dinâmico curto

Para criar um link dinâmico curto, passe um link longo gerado anteriormente para GetShortLink ou crie DynamicLinkComponents da mesma forma que acima.

GetShortLink opcionalmente usa um parâmetro de configuração DynamicLinkOptions extra com PathLength ; isso permite controlar como o link deve ser gerado. A geração de um link curto requer uma solicitação de rede ao back-end do Firebase, portanto GetShortLink é assíncrono, retornando 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 seu programa tiver um loop de atualização executado regularmente (digamos, 30 ou 60 vezes por segundo), você poderá verificar os resultados uma vez por 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());
  }
}