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

Android

  1. Caso você ainda não tenha conectado o app ao seu projeto do Firebase, faça isso no Firebase console.
  2. Se você ainda não ativou o Firebase Dynamic Links, abra a seção "Dynamic Links" no Firebase console e aceite os Termos de Serviço, se solicitado. Como o Firebase Invites tem o Firebase Dynamic Links como base, você precisa ativar o Firebase Dynamic Links para usar o Firebase Invites.
  3. Adicione o Firebase ao seu projeto do Android.
  4. Adicione a dependência do Firebase Invites para seu arquivo build.gradle de nível de app:

    dependencies {
         implementation 'com.google.firebase:firebase-invites:16.1.0'
    }
    
  5. Vincule as bibliotecas estáticas libapp.a e libinvites.a a partir do SDK do C++.

iOS

  1. Caso você ainda não tenha conectado o app ao seu projeto do Firebase, faça isso no Firebase console.
  2. Se você ainda não ativou o Firebase Dynamic Links, abra a seção "Dynamic Links" no Firebase console e aceite os Termos de Serviço, se solicitado. Como o Firebase Invites tem o Firebase Dynamic Links como base, você precisa ativar o Firebase Dynamic Links para usar o Firebase Invites.
  3. Adicione o Firebase ao seu projeto do iOS.
  4. A biblioteca de cliente 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 seu projeto, clique duas vezes no nome do projeto 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.
    2. Clique no botão + e adicione um esquema de URL ao código do cliente revertido. Para encontrar esse valor, abra o arquivo de configuração GoogleService-Info.plist e procure a chave REVERSED_CLIENT_ID. Copie o valor da chave e cole-o na caixa Esquemas de URL na página de configuração. Deixe os outros campos em branco.
    3. Clique no botão + e adicione um segundo esquema de URL. Ele corresponde ao código do pacote do seu app. Por exemplo, caso o código seja 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 das configurações do seu projeto (Identidade > Identificador do pacote).
  5. Inclua este pod no seu Podfile:

    pod 'Firebase/Invites'
    
  6. Execute pod install.

  7. Adicione firebase.framework e firebase_invites.framework do SDK para C++ ao projeto do Xcode.

Como 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 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. Basta chamar o 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.
}

É possível também usar OnCompletion() para configurar um callback e receber uma notificação quando o SendInvite() for concluído, em vez de pesquisar o status(). Isso 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. Assim, 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.

Caso você tenha mais de um aplicativo em cada plataforma, configure ios_platform_client_id ou android_platform_client_id, transferindo o código do cliente do Firebase da plataforma alternativa.

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

Enviar comentários sobre…

Precisa de ajuda? Acesse nossa página de suporte.