Envía y recibe Firebase Invites desde tu app para iOS

Requisitos previos

Firebase Invites requiere iOS 8 o una versión posterior. Puedes orientar tu app a iOS 7, pero ten en cuenta que las llamadas al SDK de Firebase Invites no funcionarán si la app no se ejecuta en iOS 8 o una versión posterior.

Antes de comenzar

  1. Si aún no conectaste tu app al proyecto de Firebase, puedes hacerlo desde Firebase console.
  2. Si aún no habilitaste Firebase Dynamic Links, puedes hacerlo desde Firebase console. Para ello, abre la sección Dynamic Links y acepta las condiciones del servicio, si se te solicita que lo hagas. Debes habilitar Firebase Dynamic Links para usar Firebase Invites, ya que este último se basa en el primero.
  3. Agrega Firebase a tu proyecto de iOS. Incluye los siguientes pods en tu Podfile:
    pod 'Firebase/Core'
  4. pod 'Firebase/Invites'
  5. Importa el módulo de Firebase en la UIApplicationDelegate:

    Swift

    import Firebase
    

    Objective-C

    @import Firebase;
    
  6. Configura una instancia compartida de FirebaseApp, generalmente en el método application:didFinishLaunchingWithOptions: de la aplicación:

    Swift

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

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
    
  7. En Xcode, edita la Info.plist de tu proyecto y agrega una propiedad con la clave NSContactsUsageDescription ("Privacy - Contacts Usage Description") y un valor que describa de qué manera tu app utiliza los datos de los contactos. Por ejemplo: "La app de cocina MisRecetas utiliza tus contactos para que sea más fácil compartir recetas con tus amigos".
  8. Implementa el Acceso con Google en tu app. Los usuarios deben acceder a sus cuentas de Google para poder enviar invitaciones.

Administra las invitaciones entrantes de Apps

Después de configurar tu aplicación, debes habilitarla para que administre las invitaciones entrantes de App Invites.

Cuando un usuario selecciona una invitación entrante de Apps en su dispositivo iOS, si el usuario aún no instaló tu aplicación, puede decidir hacerlo desde la página correspondiente de la App Store en iTunes. Cuando el usuario abre tu app por primera vez, es importante que esta le brinde una experiencia inicial personalizada para aumentar la probabilidad de que se convierta en un usuario activo a largo plazo. Para ayudarte en esto, el SDK de Invites proporciona el vínculo directo y el ID de invitación asociados con la invitación de Apps que recibió el usuario.

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) {
    // ...
  }];
}

Permite que tus usuarios envíen invitaciones de Apps

Ahora que tu app está lista para administrar invitaciones entrantes correctamente, es momento de que la habilites para enviar invitaciones a los contactos del usuario.

Antes de que un usuario pueda enviar invitaciones, debe acceder con su cuenta de Google.

Para enviar invitaciones, primero debes declarar que estás implementando el protocolo FIRInviteDelegate:

Swift

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

Objective-C

@interface ViewController ()<FIRInviteDelegate>

A continuación, agrega botones para Enviar invitación a tu app. Puedes agregar este botón como una opción en el menú principal o junto con contenido que admita vinculación directa, de modo que los usuarios puedan enviar contenido específico con la invitación. Consulta las recomendaciones de Firebase Invites.

Cuando los usuarios presionan el botón Enviar invitación, se abre el diálogo de la invitación:

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];
}

Personaliza la invitación

Cuando creas el diálogo de la invitación, debes especificar el título y el mensaje que se enviará. También puedes personalizar la imagen y la URL del vínculo directo que se envían en la invitación, como en el ejemplo anterior.

MétodoCanalesDescripción
setTitle Correo electrónico y SMS Obligatorio: Establece el título del diálogo de la invitación.
setMessage Correo electrónico y SMS Obligatorio: Establece el texto predeterminado de las invitaciones por SMS y el asunto predeterminado de las invitaciones por correo electrónico. El remitente puede editar este mensaje en el diálogo de la invitación. El mensaje no debe superar los 100 caracteres.
setDeepLink Correo electrónico y SMS Establece el vínculo a tu app que se envía con las invitaciones. Especifica esto para compartir contenido específico con el destinatario o para ofrecer una experiencia personalizada cuando un usuario abra tu app desde una invitación.
setCustomImage Correo electrónico Establece la URL de una imagen personalizada que se incluirá en las invitaciones por correo electrónico. La imagen debe ser cuadrada y medir, aproximadamente, 600 x 600 píxeles. La imagen no puede superar los 4,000 x 4,000 píxeles.
setCallToActionText Correo electrónico Establece el texto del llamado a la acción del botón que aparece en las invitaciones por correo electrónico. El texto no debe superar los 32 caracteres.

Si tienes una versión de tu app para Android y quieres enviar una invitación que se pueda abrir en iOS y Android, llama a setOtherPlatformsTargetApplication:targetApplication antes de abrirla. Por ejemplo:

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];

Entonces, el método inviteTapped abre el diálogo de selección de contactos, en el cual el usuario selecciona a los contactos que invitará. Las invitaciones se envían por correo electrónico o SMS. Después de que el usuario envía la invitación, tu app recibe una devolución de llamada al método inviteFinishedWithInvitations.

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 comentarios sobre…

¿Necesitas ayuda? Visita nuestra página de asistencia.