Ir para o conteúdo


Integração push

Etapa 1: Faça upload do seu token de APNs

Antes de enviar uma notificação por push para iOS usando a Braze, você precisa fazer upload do seu arquivo de notificação por push .p8, conforme descrito na documentação do desenvolvedor da Apple:

  1. Na sua conta de desenvolvedor da Apple, acesse Certificates, Identifiers & Profiles.
  2. Em Keys, selecione All e clique no botão adicionar (+) no topo da página.
  3. Em Key Description, insira um nome único para a chave de assinatura.
  4. Em Key Services, selecione a caixa de seleção serviço de Notificações por Push da Apple (APN) e clique em Continue. Clique em Confirm.
  5. Anote o ID da chave. Clique em Download para gerar e baixar a chave. Salve o arquivo baixado em um local seguro, pois você não poderá baixá-lo mais de uma vez.
  6. Na Braze, acesse Settings > App Settings e faça upload do arquivo .p8 em Apple Push Certificate. Você pode fazer upload do seu certificado de push de desenvolvimento ou de produção. Para testar notificações por push depois que seu app estiver disponível na App Store, é recomendável configurar um espaço de trabalho separado para a versão de desenvolvimento do seu app.
  7. Quando solicitado, insira o ID do pacote do seu app, o ID da chave e o ID da equipe. Você também precisará especificar se deseja enviar notificações para o ambiente de desenvolvimento ou de produção do seu app, que é definido pelo seu perfil de provisionamento.
  8. Quando terminar, selecione Save.

Etapa 2: Ative as capacidades de push

Nas configurações do seu projeto, certifique-se de que, na guia Capabilities, a capacidade Push Notifications esteja ativada.

Nas configurações do seu projeto, certifique-se de que, na guia Capabilities, a capacidade Push Notifications esteja ativada.

Se você tiver certificados de push separados para desenvolvimento e produção, desmarque a caixa Automatically manage signing na guia General. Isso permitirá que você escolha perfis de provisionamento diferentes para cada configuração de compilação, já que o recurso de assinatura automática de código do Xcode faz apenas a assinatura de desenvolvimento.

Configurações do projeto no Xcode mostrando a guia "general". Nessa guia, a opção "Automatically manage signing" está desmarcada.

Etapa 3: Registrar-se para notificações por push

O trecho de código apropriado deve ser incluído no método delegado application:didFinishLaunchingWithOptions: do seu app para que os dispositivos dos seus usuários se registrem no APNs. Certifique-se de chamar todo o código de integração de push na thread principal do seu aplicativo.

A Braze também fornece categorias de push padrão para suporte a botões de ação por push, que devem ser adicionadas manualmente ao seu código de registro de push. Consulte botões de ação por push para etapas adicionais de integração.

Usando o framework UserNotification (iOS 10+)

Se você está usando o framework UserNotifications (recomendado), introduzido no iOS 10, adicione o código a seguir ao método application:didFinishLaunchingWithOptions: do delegado do seu app.

if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_9_x_Max) {
  UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
  center.delegate = self;
  UNAuthorizationOptions options = UNAuthorizationOptionAlert | UNAuthorizationOptionSound | UNAuthorizationOptionBadge;
  if (@available(iOS 12.0, *)) {
  options = options | UNAuthorizationOptionProvisional;
  }
  [center requestAuthorizationWithOptions:options
                        completionHandler:^(BOOL granted, NSError * _Nullable error) {
                          [[Appboy sharedInstance] pushAuthorizationFromUserNotificationCenter:granted];
  }];
  [[UIApplication sharedApplication] registerForRemoteNotifications];
} else {
  UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeBadge | UIUserNotificationTypeAlert | UIUserNotificationTypeSound) categories:nil];
  [[UIApplication sharedApplication] registerForRemoteNotifications];
  [[UIApplication sharedApplication] registerUserNotificationSettings:settings];
}
if #available(iOS 10, *) {
  let center = UNUserNotificationCenter.current()
  center.delegate = self as? UNUserNotificationCenterDelegate
  var options: UNAuthorizationOptions = [.alert, .sound, .badge]
  if #available(iOS 12.0, *) {
    options = UNAuthorizationOptions(rawValue: options.rawValue | UNAuthorizationOptions.provisional.rawValue)
  }
  center.requestAuthorization(options: options) { (granted, error) in
    Appboy.sharedInstance()?.pushAuthorization(fromUserNotificationCenter: granted)
  }
  UIApplication.shared.registerForRemoteNotifications()
} else {
  let types : UIUserNotificationType = [.alert, .badge, .sound]
  let setting : UIUserNotificationSettings = UIUserNotificationSettings(types:types, categories:nil)
  UIApplication.shared.registerUserNotificationSettings(setting)
  UIApplication.shared.registerForRemoteNotifications()
}

Sem o framework UserNotifications

Se você não está usando o framework UserNotifications, adicione o código a seguir ao método application:didFinishLaunchingWithOptions: do delegado do seu app:

UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeBadge | UIUserNotificationTypeAlert | UIUserNotificationTypeSound) categories:nil];
[[UIApplication sharedApplication] registerForRemoteNotifications];
[[UIApplication sharedApplication] registerUserNotificationSettings:settings];
let types : UIUserNotificationType = UIUserNotificationType.Badge | UIUserNotificationType.Sound | UIUserNotificationType.Alert
var setting : UIUserNotificationSettings = UIUserNotificationSettings(forTypes: types, categories: nil)
UIApplication.shared.registerUserNotificationSettings(setting)
UIApplication.shared.registerForRemoteNotifications()

Etapa 4: Registre tokens por push na Braze

Após a conclusão do registro no APNs, o método a seguir deve ser alterado para passar o deviceToken resultante para a Braze, de modo que o usuário fique habilitado para notificações por push:

Adicione o código a seguir ao seu método application:didRegisterForRemoteNotificationsWithDeviceToken::

[[Appboy sharedInstance] registerDeviceToken:deviceToken];

Adicione o código a seguir ao método application(_:didRegisterForRemoteNotificationsWithDeviceToken:) do seu app:

Appboy.sharedInstance()?.registerDeviceToken(deviceToken)

Etapa 5: Ativar o tratamento de push

O código a seguir encaminha as notificações por push recebidas para a Braze e é necessário para registrar análises de push e tratamento de links. Certifique-se de chamar todo o código de integração de push na thread principal do seu aplicativo.

iOS 10+

Ao compilar para iOS 10+, recomendamos que você integre o framework UserNotifications e faça o seguinte:

Adicione o seguinte código ao método application:didReceiveRemoteNotification:fetchCompletionHandler: do seu aplicativo:

[[Appboy sharedInstance] registerApplication:application
                didReceiveRemoteNotification:userInfo
                      fetchCompletionHandler:completionHandler];

Em seguida, adicione o seguinte código ao método (void)userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler: do seu app:

[[Appboy sharedInstance] userNotificationCenter:center
                 didReceiveNotificationResponse:response
                          withCompletionHandler:completionHandler];

Tratamento de push em primeiro plano

Para exibir uma notificação por push enquanto o app está em primeiro plano, implemente userNotificationCenter:willPresentNotification:withCompletionHandler::

- (void)userNotificationCenter:(UNUserNotificationCenter *)center
       willPresentNotification:(UNNotification *)notification
         withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler {
  if (@available(iOS 14.0, *)) {
    completionHandler(UNNotificationPresentationOptionList | UNNotificationPresentationOptionBanner);
  } else {
    completionHandler(UNNotificationPresentationOptionAlert);
  }
}

Se a notificação em primeiro plano for clicada, o delegate de push do iOS 10 userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler: será chamado, e a Braze registrará um evento de clique de push.

Adicione o seguinte código ao método application(_:didReceiveRemoteNotification:fetchCompletionHandler:) do seu app:

Appboy.sharedInstance()?.register(application,
                                            didReceiveRemoteNotification: userInfo,
                                            fetchCompletionHandler: completionHandler)

Em seguida, adicione o seguinte código ao método userNotificationCenter(_:didReceive:withCompletionHandler:) do seu app:

Appboy.sharedInstance()?.userNotificationCenter(center,
                                               didReceive: response,
                                               withCompletionHandler: completionHandler)

Tratamento de push em primeiro plano

Para exibir uma notificação por push enquanto o app está em primeiro plano, implemente userNotificationCenter(_:willPresent:withCompletionHandler:):

func userNotificationCenter(_ center: UNUserNotificationCenter,
                              willPresent notification: UNNotification,
                              withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
  if #available(iOS 14.0, *) {
    completionHandler([.list, .banner]);
  } else {
    completionHandler([.alert]);
  }
}

Se a notificação em primeiro plano for clicada, o delegate de push do iOS 10 userNotificationCenter(_:didReceive:withCompletionHandler:) será chamado, e a Braze registrará um evento de clique de push.

Anterior ao iOS 10

O iOS 10 alterou o comportamento de modo que application:didReceiveRemoteNotification:fetchCompletionHandler: não é mais chamado quando um push é clicado. Por esse motivo, se você não atualizar para compilar com iOS 10+ e usar o framework UserNotifications, será necessário chamar a Braze a partir de ambos os delegates antigos, o que é uma mudança em relação à nossa integração anterior.

Para apps compilados com SDKs anteriores ao iOS 10, use as seguintes instruções:

Para ativar o rastreamento de abertura em notificações por push, adicione o seguinte código ao método application:didReceiveRemoteNotification:fetchCompletionHandler: do seu app:

[[Appboy sharedInstance] registerApplication:application
                didReceiveRemoteNotification:userInfo
                      fetchCompletionHandler:completionHandler];

Para dar suporte à análise de push no iOS 10, você também deve adicionar o seguinte código ao método delegate application:didReceiveRemoteNotification: do seu app:

[[Appboy sharedInstance] registerApplication:application
                didReceiveRemoteNotification:userInfo];

Para ativar o rastreamento de abertura em notificações por push, adicione o seguinte código ao método application(_:didReceiveRemoteNotification:fetchCompletionHandler:) do seu app:

Appboy.sharedInstance()?.register(application,
  didReceiveRemoteNotification: userInfo,
  fetchCompletionHandler: completionHandler)

Para dar suporte à análise de push no iOS 10, você também deve adicionar o seguinte código ao método delegate application(_:didReceiveRemoteNotification:) do seu app:

Appboy.sharedInstance()?.register(application,
  didReceiveRemoteNotification: userInfo)

Etapa 6: Deep linking

O deep linking de uma notificação por push para o app é tratado automaticamente por meio de nossa documentação padrão de integração de push. Se você quiser saber mais sobre como adicionar deep links a locais específicos do seu app, consulte nossos casos de uso avançados.

Etapa 7: Testes unitários (opcional)

Para adicionar cobertura de testes às etapas de integração que você acabou de seguir, implemente testes unitários de push.

New Stuff!