Configuração inicial do SDK
Este artigo de referência aborda como instalar o SDK da Braze para React Native. A instalação do SDK da Braze para React Native fornece a funcionalidade básica de análise de dados e permite que você integre mensagens no app e cartões de conteúdo para iOS e Android com apenas uma base de código.
Pré-requisitos e compatibilidade
Para configurar esse SDK, é necessário o React Native v0.71 ou posterior. Para obter a lista completa de versões compatíveis, consulte nosso repositório do GitHub do React Native SDK.
Suporte à nova arquitetura do React Native
Usando a Braze com a nova arquitetura
O SDK da Braze para React Native é compatível com todos os apps que usam a nova arquitetura React Native a partir da versão 2.0.1+ do SDK.
A partir da versão 6.0.0 do SDK, a Braze passou por um upgrade interno para um módulo turbo React Native, que ainda pode ser usado com a nova arquitetura ou com a arquitetura de ponte herdada. Como o Turbo Module é compatível com versões anteriores, não são necessárias etapas de migração além das alterações de ruptura mencionadas no Changelog e que exigem o React Native v0.70+.
Se o seu app para iOS estiver em conformidade com RCTAppDelegate
e estiver seguindo nossa configuração anterior AppDelegate
nesta documentação ou no projeto de amostra do Braze, certifique-se de fazer referência às amostras na configuração nativa completa para evitar a ocorrência de falhas ao assinar eventos no Turbo Module.
Etapa 1: Integrar a biblioteca do Braze
1
npm install @braze/react-native-sdk
1
yarn add @braze/react-native-sdk
Etapa 2: Configuração nativa completa
Etapa 2.1: Instale o plug-in Braze Expo
Confira se sua versão do SDK da Braze para React Native seja, no mínimo, 1.37.0. Em seguida, instale o plug-in Braze Expo.
1
expo install @braze/expo-plugin
Etapa 2.2: Adicione o plug-in ao seu app.json
Em app.json
, adicione o plug-in Braze Expo. Você pode fornecer as seguintes opções de configuração:
Método | Tipo | Descrição |
---|---|---|
androidApiKey |
string | Necessário. A chave de API do seu aplicativo Android, localizada no dashboard do Braze em Manage Settings (Gerenciar configurações). |
iosApiKey |
string | Necessário. A chave de API para seu aplicativo iOS, localizada no dashboard do Braze em Manage Settings (Gerenciar configurações). |
baseUrl |
string | Necessário. O endpoint do SDK para seu app, localizado no dashboard da Braze em Gerenciar configurações. |
enableBrazeIosPush |
booleano | Somente iOS. Se deve usar a Braze para lidar com notificações por push no iOS. Introduzido no React Native SDK v1.38.0 e no Expo Plugin v0.4.0. |
enableFirebaseCloudMessaging |
booleano | Somente para Android. Define se deve usar o Firebase Cloud Messaging para notificações por push. Introduzido no React Native SDK v1.38.0 e no Expo Plugin v0.4.0. |
firebaseCloudMessagingSenderId |
string | Somente para Android. Seu ID de remetente do Firebase Cloud Messaging. Introduzido no React Native SDK v1.38.0 e no Expo Plugin v0.4.0. |
sessionTimeout |
inteiro | O tempo limite da sessão do Braze para seu aplicativo, em segundos. |
enableSdkAuthentication |
booleano | Define se deve ativar o recurso de autenticação do SDK. |
logLevel |
inteiro | Define o nível de registro para o seu aplicativo. O nível de registro padrão é 8 e registrará minimamente as informações. Para ativar o registro detalhado para depuração, use o nível de registro 0. |
minimumTriggerIntervalInSeconds |
inteiro | O intervalo de tempo mínimo, em segundos, entre os disparos. O padrão é 30 segundos. |
enableAutomaticLocationCollection |
booleano | Se a coleta automática de locais está ativada (se o usuário permitir). |
enableGeofence |
booleano | Se as geofences estão ativadas. |
enableAutomaticGeofenceRequests |
booleano | Se as solicitações de geofence devem ser feitas automaticamente. |
dismissModalOnOutsideTap |
booleano | Somente iOS. Se uma mensagem modal no app será descartada quando o usuário clicar fora da mensagem no app. |
androidHandlePushDeepLinksAutomatically |
booleano | Somente para Android. Se o SDK da Braze deve tratar automaticamente os deep links de push. |
androidPushNotificationHtmlRenderingEnabled |
booleano | Somente para Android. Define se o conteúdo do texto em uma notificação por push deve ser interpretado e renderizado como HTML usando android.text.Html.fromHtml . |
androidNotificationAccentColor |
string | Somente para Android. Define a cor de destaque da notificação do Android. |
androidNotificationLargeIcon |
string | Somente para Android. Define o ícone grande de notificação do Android. |
androidNotificationSmallIcon |
string | Somente para Android. Define o ícone pequeno de notificação do Android. |
iosRequestPushPermissionsAutomatically |
booleano | Somente iOS. Define se o usuário deve ser automaticamente solicitado a fornecer permissões push na inicialização do app. |
enableBrazeIosRichPush |
booleano | Somente iOS. Define se deve ativar recursos avançados de push para iOS. |
enableBrazeIosPushStories |
booleano | Somente iOS. Se deseja ativar os stories por push da Braze para iOS. |
iosPushStoryAppGroup |
string | Somente iOS. O grupo de app usado para o iOS Push Stories. |
Exemplo de configuração:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
{
"expo": {
"plugins": [
[
"@braze/expo-plugin",
{
"androidApiKey": "YOUR-ANDROID-API-KEY",
"iosApiKey": "YOUR-IOS-API-KEY",
"baseUrl": "YOUR-SDK-ENDPOINT",
"sessionTimeout": 60,
"enableGeofence": false,
"enableBrazeIosPush": false,
"enableFirebaseCloudMessaging": false,
"firebaseCloudMessagingSenderId": "YOUR-FCM-SENDER-ID",
"androidHandlePushDeepLinksAutomatically": true,
"enableSdkAuthentication": false,
"logLevel": 0,
"minimumTriggerIntervalInSeconds": 0,
"enableAutomaticLocationCollection": false,
"enableAutomaticGeofenceRequests": false,
"dismissModalOnOutsideTap": true,
"androidPushNotificationHtmlRenderingEnabled": true,
"androidNotificationAccentColor": "#ff3344",
"androidNotificationLargeIcon": "@drawable/custom_app_large_icon",
"androidNotificationSmallIcon": "@drawable/custom_app_small_icon",
"iosRequestPushPermissionsAutomatically": false,
"enableBrazeIosPushStories": true,
"iosPushStoryAppGroup": "group.com.example.myapp.PushStories"
}
],
]
}
}
Etapa 2.3: Crie e execute seu aplicativo
A pré-compilação do seu aplicativo gerará os arquivos nativos necessários para que o SDK da Braze funcione.
1
expo prebuild
Execute seu aplicativo conforme especificado nos documentos da Expo. Note que, para fazer qualquer alteração nas opções de configuração, será necessário fazer o pré-compilamento e executar o aplicativo novamente.
Etapa 2.1: Adicionar nosso repositório
Em seu projeto de nível superior build.gradle
, adicione o seguinte em buildscript
> dependencies
:
1
2
3
4
5
6
7
buildscript {
dependencies {
...
// Choose your Kotlin version
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.10")
}
}
Isso adicionará o Kotlin ao seu projeto.
Etapa 2.2: Configurar o SDK do Braze
Para se conectar aos servidores da Braze, crie um arquivo braze.xml
na pasta res/values
do projeto. Cole o código a seguir e substitua a chave de API e o ponto final por seus valores:
1
2
3
4
5
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="com_braze_api_key">YOU_APP_IDENTIFIER_API_KEY</string>
<string translatable="false" name="com_braze_custom_endpoint">YOUR_CUSTOM_ENDPOINT_OR_CLUSTER</string>
</resources>
Adicione as permissões necessárias ao seu arquivo AndroidManifest.xml
:
1
2
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
No Braze SDK versão 12.2.0 ou posterior, você pode obter automaticamente a biblioteca Android-sdk-location definindo importBrazeLocationLibrary=true
em seu arquivo gradle.properties
.
Etapa 2.3: Implemente o rastreamento da sessão do usuário
As chamadas para openSession()
e closeSession()
são tratadas automaticamente.
Adicione o seguinte código ao método onCreate()
de sua classe MainApplication
:
1
2
3
4
5
6
7
8
import com.braze.BrazeActivityLifecycleCallbackListener;
@Override
public void onCreate() {
super.onCreate();
...
registerActivityLifecycleCallbacks(new BrazeActivityLifecycleCallbackListener());
}
1
2
3
4
5
6
7
import com.braze.BrazeActivityLifecycleCallbackListener
override fun onCreate() {
super.onCreate()
...
registerActivityLifecycleCallbacks(BrazeActivityLifecycleCallbackListener())
}
Etapa 2.4: Lidar com atualizações de intenção
Se sua MainActivity tiver android:launchMode
definido como singleTask
, adicione o seguinte código à sua classe MainActivity
:
1
2
3
4
5
@Override
public void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
}
1
2
3
4
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
setIntent(intent)
}
Etapa 2.1: (Opcional) Configurar o Podfile para XCFrameworks dinâmicos
Para importar determinadas bibliotecas da Braze, como a BrazeUI, em um arquivo Objective C++, você precisará usar a sintaxe #import
. A partir da versão 7.4.0 do Braze Swift SDK, os binários têm um canal de distribuição opcional como XCFrameworks dinâmicos, que são compatíveis com essa sintaxe.
Se quiser usar esse canal de distribuição, substitua manualmente os locais de origem do CocoaPods em seu Podfile. Consulte o exemplo abaixo e substitua {your-version}
pela versão relevante que você deseja importar:
1
2
3
pod 'BrazeKit', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeKit.podspec'
pod 'BrazeUI', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeUI.podspec'
pod 'BrazeLocation', :podspec => 'https://raw.githubusercontent.com/braze-inc/braze-swift-sdk-prebuilt-dynamic/{your-version}/BrazeLocation.podspec'
Etapa 2.2: Instalar pods
Como o React Native vincula automaticamente as bibliotecas à plataforma nativa, você pode instalar o SDK com a ajuda do CocoaPods.
Na pasta raiz do projeto:
1
2
3
4
5
# To install using the React Native New Architecture
cd ios && RCT_NEW_ARCH_ENABLED=1 pod install
# To install using the React Native legacy architecture
cd ios && pod install
Etapa 2.3: Configurar o SDK do Braze
Importe o SDK da Braze na parte superior do arquivo AppDelegate.swift
:
1
import BrazeKit
No método application(_:didFinishLaunchingWithOptions:)
, substitua a chave de API e o endpoint pelos valores de seu app. Em seguida, crie a instância da Braze usando a configuração e crie uma propriedade estática em AppDelegate
para facilitar o acesso:
Nosso exemplo pressupõe uma implementação do RCTAppDelegate, que fornece várias abstrações na configuração do React Native. Se estiver usando uma configuração diferente para seu app, certifique-se de ajustar sua implementação conforme necessário.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil
) -> Bool {
// Setup Braze
let configuration = Braze.Configuration(
apiKey: "{BRAZE_API_KEY}",
endpoint: "{BRAZE_ENDPOINT}")
// Enable logging and customize the configuration here.
configuration.logger.level = .info
let braze = BrazeReactBridge.perform(
#selector(BrazeReactBridge.initBraze(_:)),
with: configuration
).takeUnretainedValue() as! Braze
AppDelegate.braze = braze
/* Other configuration */
return true
}
// MARK: - AppDelegate.braze
static var braze: Braze? = nil
Importe o SDK da Braze na parte superior do arquivo AppDelegate.m
:
1
2
#import <BrazeKit/BrazeKit-Swift.h>
#import "BrazeReactBridge.h"
No método application:didFinishLaunchingWithOptions:
, substitua a chave de API e o endpoint pelos valores de seu app. Em seguida, crie a instância da Braze usando a configuração e crie uma propriedade estática em AppDelegate
para facilitar o acesso:
Nosso exemplo pressupõe uma implementação do RCTAppDelegate, que fornece várias abstrações na configuração do React Native. Se estiver usando uma configuração diferente para seu app, certifique-se de ajustar sua implementação conforme necessário.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Setup Braze
BRZConfiguration *configuration = [[BRZConfiguration alloc] initWithApiKey:@"{BRAZE_API_KEY}"
endpoint:@"{BRAZE_ENDPOINT}"];
// Enable logging and customize the configuration here.
configuration.logger.level = BRZLoggerLevelInfo;
Braze *braze = [BrazeReactBridge initBraze:configuration];
AppDelegate.braze = braze;
/* Other configuration */
return YES;
}
#pragma mark - AppDelegate.braze
static Braze *_braze = nil;
+ (Braze *)braze {
return _braze;
}
+ (void)setBraze:(Braze *)braze {
_braze = braze;
}
Etapa 3: Uso
Depois de instalada, você pode import
a biblioteca em seu código React Native:
1
import Braze from "@braze/react-native-sdk";
Para saber mais, consulte nosso projeto de amostra.
Teste sua integração básica
Nesse ponto, você pode verificar se o SDK está integrado verificando as estatísticas da sessão no dashboard. Se você executar seu aplicativo em qualquer uma das plataformas, deverá ver uma nova sessão no dashboard (na seção Visão geral ).
Você pode iniciar uma sessão para um usuário específico chamando o seguinte código em seu app.
1
Braze.changeUser("userId");
Por exemplo, é possível atribuir o ID do usuário na inicialização do app:
1
2
3
4
5
6
7
8
9
10
11
12
13
import React, { useEffect } from "react";
import Braze from "@braze/react-native-sdk";
const App = () => {
useEffect(() => {
Braze.changeUser("some-user-id");
}, []);
return (
<div>
...
</div>
)
Em seguida, você pode procurar o usuário com some-user-id
no dashboard em User Search. Lá, é possível verificar se os dados da sessão e do dispositivo foram registrados.