Enviar e receber convites do Firebase no seu aplicativo para iOS

Pré-requisitos

O Firebase Invites requer iOS 8 ou posterior. Você pode incluir o iOS7 no seu aplicativo, mas todas as chamadas do SDK do Firebase Invites não funcionarão se o aplicativo não estiver em execução no iOS 8 ou posterior.

Antes de começar

  1. Caso você ainda não tenha conectado o aplicativo ao seu projeto do Firebase, faça isso no Console do Firebase.
  2. Se você ainda não ativou o Firebase Dynamic Links, abra a seção "Dynamic Links" no Console do Firebase 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. Inclua os pods a seguir no Podfile:
    pod 'Firebase/Core'
  4. pod 'Firebase/Invites'
  5. Importe o módulo do Firebase no UIApplicationDelegate:

    Swift

    import Firebase
    

    Objective-C

    @import Firebase;
    
  6. Configure uma instância compartilhada do FirebaseApp, que geralmente está no método application:didFinishLaunchingWithOptions: do aplicativo

    Swift

    // Use Firebase library to configure APIs
    FirebaseApp.configure()
    

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
    
  7. No Xcode, edite o Info.plist do seu projeto e adicione uma propriedade com a chave NSContactsUsageDescription ("Privacidade - Descrição de uso de contatos") e um valor que descreva como seu aplicativo usa os dados de contatos. Por exemplo: "MyRecipeApp usa seus contatos para facilitar o compartilhamento de receitas com seus amigos."
  8. Implemente o Login do Google no seu aplicativo. Os usuários precisam fazer login com a Conta do Google para enviar convites.

Processar convites de aplicativos recebidos

Após configurar o aplicativo, você deve habilitá-lo para processar convites de aplicativos recebidos.

Quando um usuário seleciona um convite recebido de um aplicativo em dispositivos iOS, ele pode optar por instalar seu aplicativo da página da iTunes App Store, caso ainda não tenha instalado. Quando o aplicativo é aberto pela primeira vez, é importante proporcionar uma experiência de ambientação personalizada para aumentar a probabilidade de a pessoa se tornar um usuário envolvido e permanente do seu aplicativo. Para ajudar com isso, o SDK do Firebase Invites oferece o link direto e o código associados ao convite do aplicativo recebido pelo usuário.

Swift

@available(iOS 9.0, *)
func application(_ application: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool {
    return self.application(application, open: url, sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String, annotation: "")
}

func application(_ application: UIApplication,
  open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
  if GIDSignIn.sharedInstance().handle(url, sourceApplication: sourceApplication, annotation: annotation) {
    return true
  }

  return Invites.handleUniversalLink(url) { invite, error in
    // ...
  }
}

Objective-C

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url
            options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
  return [self application:app
                   openURL:url
         sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
                annotation:options[UIApplicationOpenURLOptionsAnnotationKey]];
}

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation {
  if ([[GIDSignIn sharedInstance] handleURL:url
                      sourceApplication:sourceApplication
                                 annotation:annotation]) {
    return YES;
  }
  // Handle App Invite requests
  return [FIRInvites handleUniversalLink:url
                              completion:^(FIRReceivedInvite * _Nullable receivedInvite,
                                           NSError * _Nullable error) {
    // ...
  }];
}

Permitir que usuários enviem convites do aplicativo

Agora que o aplicativo está pronto para tratar corretamente os convites recebidos, você precisa permitir que ele envie convites para os contatos do usuário.

Para conseguir enviar convites, o usuário precisa fazer login com a Conta do Google dele.

Para enviar convites, primeiro declare que você está implementando o protocolo FIRInviteDelegate:

Swift

class ViewController: UIViewController, InviteDelegate {
  // ...

Objective-C

@interface ViewController ()<FIRInviteDelegate>

Em seguida, adicione os botões Enviar convite ao aplicativo. Você pode adicionar esse botão ao lado do conteúdo de link direto ou como uma opção no menu principal. Dessa forma, os usuários conseguem enviar conteúdo específico junto com o convite. Consulte as práticas recomendadas do Firebase Invites.

Quando os usuários tocam no botão Enviar convite, a caixa de diálogo do convite é aberta:

Swift

@IBAction func inviteTapped(_ sender: AnyObject) {
  if let invite = Invites.inviteDialog() {
    invite.setInviteDelegate(self)

    // NOTE: You must have the App Store ID set in your developer console project
    // in order for invitations to successfully be sent.

    // A message hint for the dialog. Note this manifests differently depending on the
    // received invitation type. For example, in an email invite this appears as the subject.
    invite.setMessage("Try this out!\n -\(GIDSignIn.sharedInstance().currentUser.profile.name)")
    // Title for the dialog, this is what the user sees before sending the invites.
    invite.setTitle("Invites Example")
    invite.setDeepLink("app_url")
    invite.setCallToActionText("Install!")
    invite.setCustomImage("https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png")
    invite.open()
  }
}

Objective-C

- (IBAction)inviteTapped:(id)sender {
  id<FIRInviteBuilder> inviteDialog = [FIRInvites inviteDialog];
  [inviteDialog setInviteDelegate:self];

  // NOTE: You must have the App Store ID set in your developer console project
  // in order for invitations to successfully be sent.
  NSString *message =
      [NSString stringWithFormat:@"Try this out!\n -%@",
                                 [GIDSignIn sharedInstance].currentUser.profile.name];

  // A message hint for the dialog. Note this manifests differently depending on the
  // received invitation type. For example, in an email invite this appears as the subject.
  [inviteDialog setMessage:message];

  // Title for the dialog, this is what the user sees before sending the invites.
  [inviteDialog setTitle:@"Invites Example"];
  [inviteDialog setDeepLink:@"app_url"];
  [inviteDialog setCallToActionText:@"Install!"];
  [inviteDialog setCustomImage:@"https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png"];
  [inviteDialog open];
}

Personalizar o convite

Ao criar a caixa de diálogo do convite, especifique o título e a mensagem de convite a ser enviada. Você também pode personalizar a imagem e o URL do link direto que são enviados no convite, como no exemplo acima.

MétodoCanaisDescrição
setTitle E-mail e SMS Obrigatório: define o título da caixa de diálogo do convite.
setMessage E-mail e SMS Obrigatório: define o texto padrão dos convites por SMS e o assunto padrão dos convites por e-mail. O remetente pode editar essa mensagem na caixa de diálogo do convite. Ela não pode exceder 100 caracteres.
setDeepLink E-mail e SMS Configura o link no seu aplicativo que é enviado com os convites. Especifique isso para compartilhar conteúdo específico com o destinatário ou para proporcionar uma experiência personalizada quando um usuário abre o aplicativo a partir de um convite.
setCustomImage E-mail Define o URL de uma imagem personalizada a ser incluída nos convites por e-mail. A imagem deve ser quadrada e com cerca de 600x600 pixels. A imagem não pode ser maior do que 4.000x4.000 pixels.
setCallToActionText E-mail Define o texto da Call-to-Action do botão renderizado nos convites por e-mail. O texto não pode exceder 32 caracteres.

Se você tiver uma versão para Android do aplicativo e quiser enviar um convite que será aberto em Android e iOS, chame setOtherPlatformsTargetApplication:targetApplication antes de abrir o convite. Por exemplo:

Swift

let targetApplication = InvitesTargetApplication.init()
targetApplication.androidClientID = self.androidClientIDLabel.text
inviteBuilder.setOtherPlatformsTargetApplication(targetApplication)

Objective-C

FIRInvitesTargetApplication *targetApplication = [[FIRInvitesTargetApplication alloc] init];
targetApplication.androidClientID = self.androidClientIDLabel.text;
[inviteBuilder setOtherPlatformsTargetApplication:targetApplication];

A caixa de diálogo do seletor de contato, onde o usuário escolhe os contatos que deseja convidar, é aberta pelo método inviteTapped. Os convites são enviados por e-mail ou por SMS. Depois que o usuário envia o convite, uma chamada de retorno para o método inviteFinishedWithInvitations é recebida pelo aplicativo:

Swift

func inviteFinished(withInvitations invitationIds: [String], error: Error?) {
  if let error = error {
    print("Failed: " + error.localizedDescription)
  } else {
    print("\(invitationIds.count) invites sent")
  }
}

Objective-C

- (void)inviteFinishedWithInvitations:(NSArray *)invitationIds error:(NSError *)error {
  if (error) {
    NSLog(@"%@", error.localizedDescription);
  } else {
    NSLog(@"%li invites sent", invitationIds.count);
  }
}

Enviar comentários sobre…

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