Ir para o console

Primeiros passos com o Firebase Invites para C++

Para escrever um app cliente multiplataforma no Firebase Invites para C++, use a Firebase Invites API. O SDK do C++ funciona para Android e iOS, exigindo configurações adicionais para cada plataforma.

Antes de começar

Antes de poder usar o Firebase Invites, 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.

  • No arquivo build.gradle do nível de projeto, certifique-se de incluir repositório Maven do Google, nas seções buildscript e allprojects.

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

Adicionar o Firebase ao seu projeto em C++ envolve tarefas no Console do Firebase e no seu projeto do C++ aberto, por exemplo, é preciso fazer o download dos arquivos de configuração do Firebase do Console e movê-los para o respectivo projeto.

Ativar o Firebase Dynamic Links

Como o Firebase Invites tem o Firebase Dynamic Links como base, você precisa ativar o Firebase Dynamic Links para usar o Firebase Invites.

  1. No Console do Firebase, abra a seção Dynamic Links.

  2. Se você ainda não aceitou os termos de serviço, faça isso quando solicitado.

Adicionar esquemas de URL personalizados (apenas para iOS)

A biblioteca de cliente do Firebase Invites para C++ usa o Login do Google no iOS. Os usuários precisam estar conectados para enviar convites, e você precisa adicionar esquemas de URL personalizados para que seu app seja compatível:

  1. Para abrir a configuração do projeto, clique duas vezes no nome dele, na visualização em árvore à esquerda.

  2. Selecione seu app na seção DESTINOS. Em seguida, selecione a guia Informações e expanda a seção Tipos de URL.

  3. Clique no botão + e adicione um esquema de URL para seu ID do cliente revertido. Para encontrar esse valor, siga as etapas a seguir:

    1. Abra o arquivo de configuração do GoogleService-Info.plist e procure a chave REVERSED_CLIENT_ID.

    2. Copie e cole o valor da chave na caixa Esquemas de URL na página de configuração.

    3. Deixe os outros campos em branco.

  4. Clique no botão + e adicione um segundo esquema de URL, que é igual ao código do pacote do seu app.

    Por exemplo, se o código do pacote for com.example.app, digite esse valor na caixa Esquemas de URL.

    Você pode encontrar o código do pacote do seu app na guia Geral da configuração do projeto (Identidade > Identificador do pacote).

Enviar convites

Criar e inicializar o aplicativo

Antes de enviar convites, você precisa criar e inicializar um objeto firebase::App.

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

#include "firebase/app.h"

A próxima etapa varia de acordo com a plataforma:

Android

Transmita o ambiente JNI e uma referência jobject à atividade Java como argumentos para criar o firebase::App:

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

iOS

Crie o firebase::App:

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

Criar e configurar um convite

Inclua o arquivo de cabeçalho para enviar convites:

#include "firebase/invites.h"

Inicialize a biblioteca do Invites:

::firebase::invites::Initialize(app);

Crie uma nova instância do firebase::invites::Invite e use as configurações do seu convite:

firebase::invites::Invite invite;
invite.title_text = "Invite Friends";
invite.message_text = "Try my app today, and get 200 free coins!";
invite.call_to_action_text = "Download now!";

Consulte este artigo para ver a lista completa de configurações de convites, incluindo informações de compatibilidade com cada plataforma.

Para mais informações sobre como personalizar convites, consulte Firebase Invites: práticas recomendadas.

Enviar o convite

Quando você estiver pronto para exibir o convite, chame SendInvite():

firebase::invites::SendInvite(invite);

Essa ação exibe a IU do cliente do Invites, permitindo que o usuário escolha os destinatários e modifique a mensagem, conforme desejado. Esta IU ficará na tela até que o usuário opte por enviar ou cancelar o convite.

SendInvite() retorna imediatamente e exibe a IU de forma assíncrona. Ele retorna os resultados por meio do firebase::Future. Consulte-o para descobrir se o convite foi enviado e determinar quando a IU sairá da tela.

É possível também solicitar o firebase::Future mais recente. Para fazer isso, basta chamar SendInviteLastResult(). Essa ação retorna o mesmo resultado que a chamada mais recente para SendInvite().

auto future_result = firebase::invites::SendInviteLastResult();
if (future_result.status() == future::kFutureStatusComplete) {
    if (future_result.error() == 0) {
        auto result = *future.result();
        if (result.invitation_ids.size() > 0) {
            // One or more invitations were sent. You can log the invitation IDs here for
            // analytics purposes, as they will be the same on the receiving side.
        }
        else {
            // Zero invitations were sent. This tells us that the user canceled sending
            // invitations.
        }
    } else {
        // error() is nonzero, which means an error occurred. You can check
        // future_result.error_message() for more information.
    }
} else {
    // The SendInvite() operation has not completed yet, which means the Invites
    // client UI is still on screen. Check the status() again soon.
}

Também é possível usar OnCompletion() para configurar um callback e receber uma notificação quando SendInvite() for concluído, em vez de pesquisar status(). Essa ação avisará quando a IU do Invites estiver concluída. Para mais detalhes, consulte a documentação do firebase::Future.

Convites entre plataformas

Quando o projeto no Console do Firebase tem exatamente um aplicativo para cada plataforma, o Firebase Invites associa cada um à respectiva plataforma automaticamente. Dessa forma, por exemplo, os usuários do iOS que clicarem em um convite enviado por um usuário do Android serão direcionados ao local correto para instalar o aplicativo na plataforma deles.

Se você tiver mais de um app em cada plataforma, configure ios_platform_client_id ou android_platform_client_id ao transmitir o código do cliente do Firebase da outra plataforma.

Receber convites

Ao receber um convite, caso ainda não tenha o app, o usuário pode instalá-lo na loja de apps da plataforma dele.

Após o app ser instalado ou caso já esteja instalado, ele será iniciado e receberá o URL para seu conteúdo, caso você tenha enviado. O app também receberá o ID do convite, que corresponderá ao ID do convite no lado do remetente.

Geralmente, o app deve verificar se há convites recebidos uma vez, na inicialização.

Criar e inicializar o app

Antes de verificar os convites recebidos, é preciso criar e inicializar um objeto firebase::App.

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

#include "firebase/app.h"

A próxima etapa varia de acordo com a plataforma:

Android

Transmita o ambiente JNI e uma referência firebase::App à atividade Java como argumentos para criar o jobject:

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

iOS

Crie o firebase::App:

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

Implementar um Listener e verificar convites recebidos

Inclua o arquivo de cabeçalho para convites recebidos:

#include "firebase/invites.h"

Inicialize a biblioteca do Invites:

::firebase::invites::Initialize(app);

Crie um objeto que implemente o firebase::invites::Listener e forneça-o à biblioteca do Invites com o SetListener().

Para receber convites, sua classe Listener precisa implementar a função virtual OnInviteReceived. Ao modificar o método, será possível receber um código caso um convite tenha sido enviado.

void OnInviteReceived(const char* invitation_id, const char* deep_link,
                      bool is_strong_match) override {
  // Fetch succeeded, let's find out what we received.
  if (invitation_id != nullptr) {
    // The app received an invitation ID. This will match the invitation ID
    // that the sender got when they sent the invitation, so you can use this
    // to track when invitations are completed.
  }
  if (deep_link != nullptr) {
    // The app received a Dynamic Link. This may have come from an invitation
    // (if invite.invitation_id is set), or it might have been sent using
    // Firebase Dynamic Links.
    // In any event, the app can now act on this link as you see fit.
  }
}