# Braze Documentation Index of all Developer Guide pages and their headings. ## Developer Guide - [Guia do desenvolvedor da Braze](/docs/pt-br/developer_guide/home/index.md) - [Como começar](/docs/pt-br/developer_guide/getting_started/index.md): Você pode acompanhar este guia ou consultar o Braze Learning para obter cursos guiados, como nossas jornadas de aprendizado para profissionais de marketing e desenvolvedores. - [Visão geral do SDK para desenvolvedores](/docs/pt-br/developer_guide/getting_started/sdk_overview/index.md): Você é um profissional de marketing e está procurando um resumo básico do SDK? Em vez disso, dê uma olhada em nossa visão geral para profissionais de marketing. - # ![curso do Braze Learning](https://learning.braze.com/path/developer/sdk-integration-basics){: style="float:right;width:120px;border:0;" class="noimgborder"}Visão geral do SDK para desenvolvedores {#braze-learning-course-imagebuster-assetsimgblicon3png-httpslearningbrazecompathdevelopersdk-integration-basics-stylefloatrightwidth120pxborder0-classnoimgbordersdk-overview-for-developers} - ## Desempenho do app {#app-performance} - ## Compatibilidade do SDK {#sdk-compatibility} - ## Análise de dados padrão e tratamento de sessões {#default-analytics-and-session-handling} - ## Upload e download de dados {#data-upload-and-download} - ## Bloqueio da coleta de dados {#blocking-data-collection} - ## Qual é a versão do SDK que estou usando? {#what-version-of-the-sdk-am-i-on} - [Visão geral da plataforma](/docs/pt-br/developer_guide/getting_started/platform_overview/index.md): Confira nosso curso gratuito Developer Learning Path junto com estes artigos. - # ![Curso do Braze Learning](https://learning.braze.com/path/developer){: style="float:right;width:120px;border:0;" class="noimgborder"}Primeiros passos: Visão geral da plataforma {#braze-learning-course-imagebuster-assetsimgblicon3png-httpslearningbrazecompathdeveloper-stylefloatrightwidth120pxborder0-classnoimgbordergetting-started-platform-overview} - ## O que é a Braze? {#what-is-braze} - ### SDK - ### Interface de usuário do dashboard {#dashboard-user-interface} - ### REST API - ## Análise de dados e ação {#data-analysis-and-action} - ### Análise de dados do app {#app-analytics} - ### Segmentação de usuários {#user-segmentation} - ## Mensagens em vários canais {#multichannel-messaging} - ### Componentes personalizáveis {#customizable-components} - ## Integração da Braze {#integrating-braze} - ## Recursos para adicionar aos favoritos {#resources-to-bookmark} - [Visão geral da integração](/docs/pt-br/developer_guide/getting_started/integration_overview/index.md): !Um diagrama de Venn com quatro círculos — descoberta, integração, garantia de qualidade e manutenção — centrado no "tempo para obter valor".{: style="max-width:50%;float:right;margin-left:15px;border:none;"} - # ![Curso do Braze Learning](https://learning.braze.com/sdk-integration-basics){: style="float:right;width:120px;border:0;" class="noimgborder"}Introdução: Visão geral da integração {#braze-learning-course-imagebuster-assetsimgblicon3png-httpslearningbrazecomsdk-integration-basics-stylefloatrightwidth120pxborder0-classnoimgbordergetting-started-integration-overview} - ## Descoberta e planejamento {#discovery} - ### Planejamento de campanhas {#campaign-planning} - ### Criação de requisitos de dados {#creating-data-requirements} - ### Planejamento de personalizações {#customizations-planning} - ### Como obter acesso ao dashboard {#getting-dashboard-access} - ### Espaços de trabalho e chaves de API {#workspaces-and-api-keys} - ## Integração {#integration} - ### Integração com parceiros de CDP {#cdp-integration-partners} - ### Integração do SDK da Braze {#braze-sdk-integration} - ### Usando a API da Braze {#using-the-braze-api} - ### Configuração da análise de dados do produto {#setting-up-product-analytics} - ### Migração de dados de usuários antigos {#migrating-legacy-user-data} - ### Configuração do rastreamento de sessão {#setting-up-session-tracking} - ### Rastreamento de eventos personalizados, atributos e eventos de compra {#tracking-custom-events-attributes-and-purchase-events} - ### Outras ferramentas {#other-tools} - ## Controle de qualidade {#qa} - ### Passando a Braze para os profissionais de marketing {#passing-braze-off-to-marketers} - ### Desenvolver para o futuro {#develop-for-the-future} - ## Manutenção {#maintenance} - ## Limites de taxa do SDK {#sdk-rate-limits} - ### Usuários ativos mensais CY 24-25, MAU universal, MAU web e MAU móvel {#monthly-active-users-cy-24-25-universal-mau-web-mau-and-mobile-mau} - ### Encontrando seus limites de taxa {#finding-your-rate-limits} - ### Solicitando limites de taxa mais altos {#requesting-higher-rate-limits} - ### Mudanças e suporte {#changes-and-support} - [Visão geral da arquitetura](/docs/pt-br/developer_guide/getting_started/architecture_overview/index.md): Em última análise, a Braze trata de dados. A plataforma da Braze, com o SDK, a REST API e as integrações com parceiros, permite que você agregue e atue em cima de seus dados. - # Como começar: Visão geral da arquitetura {#getting-started-architectural-overview} - ## Ingestão de dados {#ingestion} - ### Detalhamento das fontes de dados {#data-source-breakdown} - #### Funcionalidades baseadas em MongoDB {#mongodb-powered-features} - #### Funcionalidades baseadas em Snowflake {#snowflake-powered-features} - ### Fontes de dados de backend por meio da API da Braze {#backend-data-sources-through-the-braze-api} - ### Fontes de dados de frontend por meio do SDK da Braze {#frontend-data-sources-through-braze-sdk} - ### Integrações com parceiros {#partner-integrations} - ### Conexão direta com o data warehouse por meio da Ingestão de Dados na Nuvem da Braze {#direct-warehouse-connection-through-braze-cloud-data-ingestion} - ## Classificação {#classification} - ## Orquestração {#orchestration} - ### Feature Flags - ## Personalização {#personalization} - ## Ação {#action} - ### Canais de envio de mensagens {#messaging-channels} - ## Exportação de dados {#exporting-data} - ### Currents - ### Compartilhamento de dados Snowflake {#snowflake-data-sharing} - ### APIs de exportação da Braze {#braze-export-apis} - ### CSVs - ## Juntando tudo {#putting-it-all-together} - [Construindo com um LLM](/docs/pt-br/developer_guide/getting_started/build_with_llm/index.md): Assistentes de codificação com IA podem ajudar você a escrever código de integração, solucionar problemas e explorar recursos do SDK da Braze—mas apenas se tiverem o contexto correto. O servidor MCP da documentação da Braze fornece ao seu assistente de IA acesso direto à documentação da Braze, para que ele possa gerar trechos de código precisos e responder a perguntas técnicas com base nas referências mais recentes do SDK. - # Construindo com um LLM {#building-with-an-llm} - ## Conectando-se ao MCP da documentação da Braze {#connecting-to-the-braze-docs-mcp} - ### Configurando o Context7 {#setting-up-context7} - ## Escrevendo prompts para o desenvolvimento com o SDK da Braze {#writing-prompts-for-braze-sdk-development} - ### SDK do React Native {#react-native-sdk} - #### Inicializando o SDK {#initializing-the-sdk} - #### Registrando eventos personalizados com propriedades {#logging-custom-events-with-properties} - #### Configurando notificações por push {#setting-up-push-notifications} - #### Lidando com mensagens no app {#handling-in-app-messages} - ### SDK da Web {#web-sdk} - #### Inicializando o SDK - #### Rastreamento de eventos personalizados e compras {#tracking-custom-events-and-purchases} - #### Registrando-se para push na web {#registering-for-web-push} - #### Gerenciando atributos de usuário {#managing-user-attributes} - ## Documentação em texto simples {#plain-text-documentation} - [Visão geral da personalização](/docs/pt-br/developer_guide/getting_started/customization_overview/index.md): O Braze SDK é um kit de ferramentas avançado, mas, em um nível mais alto, ele oferece duas funcionalidades importantes: ajuda a coletar e sincronizar dados de usuários entre plataformas em um perfil de usuário consolidado e também lida com canais de envio de mensagens, como mensagens no app, notificações por push e Content Cards. Os artigos do Guia de Personalização pressupõem que você já tenha passado pelo processo de implementação do SDK. - # Visão geral da personalização {#customization-overview} - [Tutoriais do SDK Braze](/docs/pt-br/developer_guide/tutorials/index.md) - [Integre o SDK da Braze](/docs/pt-br/developer_guide/sdk_integration/index.md): Para conteúdo espelhado do README do SDK na documentação, veja Guias de repositório. - # !Logotipo da Braze{: style="float:right;width:120px;border:0;" class="noimgborder"}Integre o SDK da Braze {#braze-logo-imagebuster-assetsbrazeprimaryiconblacksvg-stylefloatrightwidth120pxborder0-classnoimgborderintegrate-the-braze-sdk} - ## About the Web Braze SDK - ## Integrate the Web SDK - ### Step 1: Install the Braze library - ### Step 2: Initialize the SDK - #### Troubleshooting missing sessions for anonymous users - ### Prerequisites - ### Step 1: Open the tag template gallery - ### Step 2: Add the initialization tag template - ### Step 3: Configure the tag - ### Step 4: Choose initialization options - ### Step 5: Set to Trigger on all pages - ### Step 6: Verify your integration - ## Filtering bot traffic {#bot-filtering} - ### Limitations of SDK-side bot detection - ### Implementing bot filtering - #### Require user interaction - #### Custom bot detection - ### Best practices - ## Optional configurations - ### Logging - #### Basic logging - #### Custom logging - ## Upgrading the SDK - ## Other integration methods - ### Accelerated Mobile Pages (AMP) - #### Step 1: Include AMP web push script - #### Step 2: Add subscription widgets - #### Step 3: Add helper-iframe and permission-dialog - #### Step 4: Create a service worker file - #### Step 5: Configure the AMP web push HTML element - ### Asynchronous Module Definition (AMD) - #### Disable support - #### Module loader - ### Electron {#electron} - ### Jest framework {#jest} - ### SSR frameworks {#ssr} - #### Framework-agnostic dynamic import - #### Shared hook for Next.js and Remix - #### Next.js (App Router) - #### Next.js (Pages Router) - #### Remix - #### Logging events and updating users - ### Tealium iQ - ### Vite {#vite} - ### Other tag managers - ## Integrating the Android SDK - ### Step 1: Update your Gradle build configuration - ### Step 2: Configure your braze.xml - ### Step 3: Add permissions to AndroidManifest.xml - ### Step 4: Enable delayed initialization (optional) - #### Step 4.1: Update your braze.xml - #### Step 4.2: Configure push analytics (optional) - ##### Explicitly queue {#explicitly-queue-push-analytics} - ##### Drop {#drop-push-analytics} - #### Step 4.3: Manually initialize the SDK - ### Step 5: Enable user session tracking - ## Testing session tracking - ## Optional configurations - ### Runtime configuration - ### Google Advertising ID - ### Location tracking - ### Logging - #### Enabling logs - #### Verifying verbose logs - #### Suppressing logs - ### Multiple API keys - ### Exclusive in-app message TalkBack - ### R8 and ProGuard - ## Integrating the Swift SDK - ### Prerequisites - ### Step 1: Install the Braze Swift SDK - #### Step 1.1: Import SDK version - #### Step 1.2: Select your packages - ##### About Extension libraries - #### Step 1.1: Install CocoaPods - #### Step 1.2: Constructing the Podfile - ##### About additional libraries - ###### Extension libraries - #### Step 1.3: Install the SDK - #### Updating the SDK using CocoaPods - #### Step 1.1: Download the Braze SDK - #### Step 1.2: Choose your frameworks - #### Step 1.3: Prepare your files - #### Step 1.4: Integrate your frameworks - #### Common errors for Objective-C projects - ### Step 2: Set up delayed initialization (optional) - #### Step 2.1: Prepare for delayed initialization - #### Step 2.2: Configure push analytics behavior (optional) - ##### Explicitly queue - ##### Drop - #### Step 2.3: Customize push automation (optional) - #### Step 2.4: Initialize the SDK - ### Step 3: Update your app delegate - ## Optional configurations - ### Logging - #### Log levels - #### Setting the log level - ## Integrating the Cordova SDK - ### Prerequisites - ### Step 1: Add the SDK to your project - ### Step 2: Configure your project - ## Platform-specific syntax - ### Integers - ### Booleans - ## Optional configurations {#optional} - ## Disabling automatic session tracking (Android only) {#disable-automatic-session-tracking} - ## About the Flutter Braze SDK - ## Integrating the Flutter SDK - ### Prerequisites - ### Step 1: Integrate the Braze library - ### Step 2: Complete native SDK setup - #### 2.1 Set up Android - ##### Provide credentials at compile time - ##### Provide credentials at runtime - #### 2.2 Set up iOS - #### 2.1 Set up Android - #### 2.2 Set up iOS - ### Step 3: Set up the plugin - #### Standard initialization - #### Delayed initialization - #### Platform-specific API keys - #### Re-initialization - ## Testing the integration - ## About the React Native Braze SDK - ## New Architecture compatibility - ## React and React Native version requirements - ## Integrating the React Native SDK - ### Prerequisites - ### Step 1: Integrate the Braze library - ### Step 2: Complete native setup - #### Method 1: Using the Expo plugin {#reactnative-using-the-expo-plugin} - ##### 2.1 Install the Braze Expo plugin - ##### 2.2 Add the plugin to your app.json - ###### Configuring Android push notification icons {#android-push-icons} - ##### 2.3 Build and run your application - #### Method 2: Using React Native CLI {#reactnative-using-react-native-cli} - ##### Set up Android - ##### Set up iOS - #### Method 1: Using the Expo plugin - ##### Step 2.1: Install the Braze Expo plugin - ##### Step 2.2: Add the plugin to your app.json - ###### Configuring Android push notification icons - ##### Step 2.3: Build and run your application - #### Method 2: Using React Native CLI - ##### Set up Android - ##### Set up iOS - ### Step 3: Initialize the SDK - #### Standard initialization - #### Delayed initialization - #### Platform-specific API keys - #### Re-initialization - ### Step 4: Test the integration (optional) - ## Next steps - ## Integrating the Roku SDK - ### Step 1: Add files - ### Step 2: Add references - ### Step 3: Configure - ### Step 4: Initialize Braze - ## Optional configurations - ### Logging - ## About the Unity Braze SDK - ## Integrating the Unity SDK - ### Prerequisites - ### Step 1: Choose your Braze Unity package - ### Step 2: Import the package - ### Step 3: Configure the SDK - #### Step 3.1: Configure AndroidManifest.xml - #### Step 3.2: Update AndroidManifest.xml with your package name - #### Step 3.3: Add gradle dependencies - #### Step 3.4: Automate the Unity Android integration - #### Step 3.1: Set your API key - ## Customizing the Unity package - ### Step 1: Clone the repository - ### Step 2: Export package from repository - ### Step 3: Import package into Unity - ## Switch to an automated integration (Swift only) {#automated-integration} - ## Optional configurations - ### Verbose logging - ### Prime 31 compatibility - ### Amazon Device Messaging (ADM) - ### Extending the Braze Unity player (Android only) {#extend-unity-player} - ## Troubleshooting - ### Error: "File could not be read" - ## Integrating the .NET MAUI SDK - ### Prerequisites - ### Step 1: Get the .NET MAUI binding - ### Step 2: Configure your Braze instance - #### Step 2.1: Configure the Braze SDK in Braze.xml - #### Step 2.2: Add required permissions to Android manifest - #### Step 2.3: Track user sessions and registering for in-app messages - ### Step 3: Test the integration - # ChatGPT app integration - ## Setup - ### Step 1: Get the Braze integration file - ### Step 2: Install dependencies - ## Implementation - ### Client-side integration (custom widgets) - #### Configure widget metadata - #### Set up the useBraze hook - #### Display Braze Content Cards - #### Track widget events - ### Server-side integration (MCP server) - #### Set up session information - #### Track user interactions - #### Track purchases and transactions - ## About the Braze Vega SDK - ## Integrating the Braze Vega SDK - ### Step 1: Install the Braze library - ### Step 2: Initialize the SDK - ## Optional configurations - ### Logging - #### Enable logging during initialization - #### Enable logging after initialization - #### Custom logging - ### Configuration options - ## Upgrading the SDK - ## Testing your integration - [Google Tag Manager com o SDK da Braze](/docs/pt-br/developer_guide/sdk_integration/google_tag_manager/index.md): Google Tag Manager (GTM) lets you remotely add, remove, and edit tags on your website without requiring a production code release or engineering resources. Braze offers the following templates for the Web SDK: - # Google Tag Manager com o SDK da Braze {#google-tag-manager-with-the-braze-sdk} - ## About Google Tag Manager for Web {#google-tag-manager} - ## Tag sequencing for Braze action tags - ## Log purchases with GTM - ## Logging custom events with GTM - ### Step 1: Push the event to the data layer - ### Step 2: Create a trigger in GTM - ### Step 3: Create a Custom HTML tag - ## Google's EU User Consent Policy - ## Prerequisites - ## Using Google Tag Manager for Android - ### Step 1: Create a trigger for custom events - ### Step 2: Log custom attributes - ### Step 3: Call changeUser() - ### Step 4: Add a custom tag provider {#adding-android-google-tag-provider} - ## Prerequisites - ## Using Google Tag Manager for Swift - ### Step 1: Create a trigger for custom events - ### Step 2: Log custom attributes - ### Step 3: Call changeUser() - ### Step 4: Add a custom tag provider {#adding-ios-google-tag-provider} - ## Solução de problemas {#troubleshooting} - [Configure a autenticação do SDK da Braze](/docs/pt-br/developer_guide/sdk_integration/authentication/index.md): Depois de ativar esse recurso em seu app, você pode configurar o dashboard da Braze para rejeitar quaisquer solicitações com um JSON Web Token (JWT) inválido ou ausente, o que inclui: - # Configurar autenticação do SDK {#set-up-sdk-authentication} - ## Como funciona {#how-it-works} - ## Configurando a autenticação {#setting-up-authentication} - ### Etapa 1: Configure seu servidor {#server-side-integration} - #### Etapa 1.1: Gerar um par de chaves pública/privada {#generate-keys} - #### Etapa 1.2: Crie um JSON Web Token para o usuário atual {#create-jwt} - ### Etapa 2: Configurar o SDK {#sdk-integration} - #### Etapa 2.1: Ative a autenticação no SDK da Braze. {#step-21-enable-authentication-in-the-braze-sdk} - #### Etapa 2.2: Definir o JWT do usuário atual {#step-22-set-the-current-users-jwt} - #### Etapa 2.3: Registre uma função de retorno de chamada para tokens inválidos {#sdk-callback} - ### Etapa 3: Ative a autenticação no dashboard {#braze-dashboard} - #### Opções de aplicação {#enforcement-options} - ## Gerenciamento de chaves públicas {#key-management} - ### Adição de uma chave pública {#adding-a-public-key} - ### Atribuir uma nova chave primária {#assign-a-new-primary-key} - ### Exclusão de uma chave {#deleting-a-key} - ## Análise de dados {#analytics} - ## Códigos de erro {#error-codes} - ## Perguntas frequentes (FAQ) {#faq} - #### Esse recurso precisa ser ativado em todos os meus apps ao mesmo tempo? {#faq-app-by-app} - #### O que acontece com os usuários que ainda estão em versões mais antigas do meu app? {#faq-sdk-backward-compatibility} - #### Que validade devo usar ao gerar um JWT? {#faq-expiration} - #### O que acontece se um JWT expirar no meio da sessão de um usuário? {#faq-jwt-expiration} - #### O que acontecerá se minha integração no lado do servidor falhar e eu não puder mais criar um JWT? {#faq-server-downtime} - #### Por que esse recurso usa chaves pública/privada em vez de segredos compartilhados? {#faq-shared-secrets} - #### Como as solicitações rejeitadas serão tentadas novamente? {#faq-retry-logic} - #### É possível usar a autenticação do SDK para usuários anônimos? {#faq-anonymous-users} - #### A autenticação do SDK funciona com aliases de usuário? {#faq-aliases} - #### Ativar a autenticação do SDK bloqueia a coleta de atividade não autenticada? {#faq-unauthenticated-collection} - [Depuração do SDK da Braze](/docs/pt-br/developer_guide/sdk_integration/debugging/index.md): Para uma investigação mais aprofundada, você também pode ativar o registro detalhado para capturar a saída detalhada do SDK e aprender a ler logs detalhados para canais específicos. - # Depuração do SDK da Braze {#debugging-the-braze-sdk} - ## Pré-requisitos {#prerequisites} - ## Depuração do SDK da Braze - ### Etapa 1: Feche seu app {#step-1-close-your-app} - ### Etapa 2: Crie uma sessão de depuração {#step-2-create-a-debugging-session} - ### Etapa 3: Selecione um usuário {#step-3-select-a-user} - ### Etapa 4: Reabra o app {#step-4-relaunch-the-app} - ### Etapa 5: Reproduza o erro {#step-5-complete-the-reproduction-steps} - ### Etapa 6: Encerre sua sessão {#step-6-end-your-session} - ### Etapa 7: Compartilhe ou exporte sua sessão (opcional) {#step-7-share-or-export-your-session-optional} - [Registro detalhado](/docs/pt-br/developer_guide/sdk_integration/verbose_logging/index.md): Quando algo não está funcionando como esperado—como uma notificação por push não chegando, uma mensagem no app não sendo exibida ou dados de usuários não sincronizando—os logs detalhados ajudam você a identificar a causa raiz. Em vez de adivinhar, você pode ver exatamente o que o SDK está fazendo em cada etapa. - # Registro detalhado - ## Quando usar o registro detalhado - ## Ativando o registro detalhado - ## Coletando registros - ## Lendo registros detalhados - ## Compartilhando registros com o suporte da Braze - [Lendo logs verbosos](/docs/pt-br/developer_guide/sdk_integration/reading_verbose_logs/index.md): Antes de começar, certifique-se de que você ativou o registro verboso e sabe como coletar logs na sua plataforma. - # Lendo logs verbosos {#reading-verbose-logs} - ## Sessões {#sessions} - ### Entradas de log principais {#key-log-entries} - ### O que verificar {#what-to-check} - ## Notificações por push {#push-notifications} - ### Registro de token {#token-registration} - ### O que verificar - ### Entrega e clique do push {#push-delivery-and-click} - ### O que verificar - ## Mensagens no app {#in-app-messages} - ### Entrega da mensagem {#message-delivery} - ### Exibição da mensagem e impressão {#message-display-and-impression} - ### Eventos de clique e botão {#click-and-button-events} - ### O que verificar - ## Content Cards - ### Sincronização do cartão {#card-sync} - ### Impressões, cliques e dispensas {#impressions-clicks-and-dismissals} - ### O que verificar - ## Deep links {#deep-links} - ### O que verificar - ## Identificação do usuário {#user-identification} - ## Solicitações de rede {#network-requests} - ### Estrutura da solicitação {#request-structure} - ### O que verificar - ## Abreviações comuns de eventos {#common-event-abbreviations} - ## Solução de problemas {#troubleshooting} - ### Quando um usuário pode ter 0 sessões registradas no perfil? {#when-might-a-user-have-0-sessions-recorded-against-their-profile} - ### Discrepâncias de dados ao usar o SDK e a REST API juntos {#user-data-discrepancies-when-using-the-sdk-and-rest-api-together} - ### Dados não chegam à Braze {#data-not-reaching-braze} - [Limites de taxa do SDK da Braze](/docs/pt-br/developer_guide/sdk_integration/rate_limits/index.md): A limitação de taxa do SDK da Braze utiliza os seguintes recursos para otimizar a performance, minimizar o consumo de bateria, reduzir o uso de dados e garantir a entrega confiável de dados: - # Limites de taxa do SDK da Braze {#braze-sdk-rate-limits} - ## Entendendo os limites de taxa do SDK {#understanding-sdk-rate-limits} - ### Processamento assíncrono {#asynchronous-processing} - ### Limitação de taxa adaptativa {#adaptive-rate-limiting} - ### Otimizações de rede {#networking-optimizations} - ## Melhores práticas {#best-practices} - ## Obtendo ajuda {#getting-help} - [Integre a Braze com os aplicativos ChatGPT](/docs/pt-br/developer_guide/sdk_integration/chatgpt_apps/index.md): !Um Content Card integrado ao app ChatGPT.{: style="float:right;max-width:30%;border:none;" } - # Integre a Braze com os aplicativos ChatGPT {#integrate-braze-with-chatgpt-apps} - ## Visão geral {#overview} - ### Principais benefícios {#key-benefits} - ## Pré-requisitos {#prerequisites} - # ChatGPT app integration - ## Setup - ### Step 1: Get the Braze integration file - ### Step 2: Install dependencies - ## Implementation - ### Client-side integration (custom widgets) - #### Configure widget metadata - #### Set up the useBraze hook - #### Display Braze Content Cards - #### Track widget events - ### Server-side integration (MCP server) - #### Set up session information - #### Track user interactions - #### Track purchases and transactions - [Sobre o gerenciamento de versões para o SDK da Braze](/docs/pt-br/developer_guide/sdk_integration/version_management/index.md): Todos os SDKs da Braze seguem a Especificação de Versionamento Semântico (SemVer), então, dado um número de versão MAJOR.MINOR.PATCH, recomendamos o seguinte: - # Sobre o gerenciamento de versões {#about-version-management} - ## Recomendações de versionamento {#versioning-recommendations} - ## Recebendo notificações de novos lançamentos {#getting-notified-of-new-releases} - ## Sobre problemas conhecidos {#about-known-issues} - [Guia de atualização do Android 13](/docs/pt-br/developer_guide/platforms/android/android_13/index.md): Refer to the Android 13 developer documentation for a full migration guide. - # Upgrading to Android 13 - ## Android 13 Braze SDK - ## Changes in Android 13 - ### Push permission {#push-permission} - #### Permission prompt timing {#push-permission-timing} - ## Preparing for Android 13 {#next-steps} - [Fazendo upgrade para o iOS 18](/docs/pt-br/developer_guide/platforms/swift/ios_18/index.md): A WWDC da Apple foi realizada de 9 a 11 de junho de 2024. Saiba mais sobre os anúncios em nossa publicação no blog ou continue lendo para saber como aproveitar o iOS 18 com a Braze. - # Fazendo upgrade para o iOS 18 {#upgrading-to-ios-18} - ## Alterações no iOS 18 {#changes-in-ios-18} - ### Live Activities no Apple Watch {#live-activities-on-apple-watch} - ### Apple Vision Pro - ### Notificações do iPhone no macOS {#iphone-notifications-on-macos} - ### Apple Intelligence - [Compatibilidade com o visionOS](/docs/pt-br/developer_guide/platforms/swift/visionos/index.md): A maioria dos recursos disponíveis no iOS também está disponível no visionOS, tais como: - # Compatibilidade com o visionOS - ## Recursos totalmente compatíveis - ## Recursos parcialmente suportados - ## Recursos incompatíveis - [Guia de atualização do SDK do iOS 14](/docs/pt-br/developer_guide/platforms/swift/_archived_updates/ios_14/index.md): A partir do iOS 14.5, a coleta de IDFA e determinados compartilhamentos de dados exigirão o novo prompt de permissão da estrutura AppTrackingTransparency (saiba mais). - # Guia de atualização do SDK do iOS 14 {#ios-14-sdk-upgrade-guide} - #### Resumo das mudanças significativas no iOS 14 {#summary-of-ios-14-breaking-changes} - ## Resumo do upgrade {#upgrade-summary} - ## Mudanças de comportamento no iOS 14 {#ios-14-behavior-changes} - ### Permissão de local aproximado {#approximate-location-permission} - #### Visão geral {#overview} - #### Geofences {#geofences} - #### Direcionamento para a localização {#location-tracking} - ### IDFA e transparência no rastreamento de aplicativos {#idfa} - #### Visão geral - #### Mudanças na coleta de IDFA da Braze {#changes-to-braze-idfa-collection} - ### Autorização push {#push-provisional-auth} - ## Novos recursos do iOS 14 {#ios-14-new-features} - ### Visão geral da privacidade do app e da coleta de dados {#app-privacy} - #### Questionário do portal do desenvolvedor da Apple {#apple-developer-portal-questionnaire} - #### Coleta de dados padrão da Braze {#braze-default-data-collection} - #### Coleta de dados opcional {#optional-data-collection} - [Guia de atualização do SDK do iOS 15](/docs/pt-br/developer_guide/platforms/swift/_archived_updates/ios_15/index.md): Como parte de nossos testes anuais de versões beta do iOS, identificamos uma alteração feita pela Apple que faz com que determinadas barras de navegação da interface do usuário apareçam transparentes em vez de opacas. Isso será visível no iOS 15 ao usar a interface padrão da Braze para Content Cards, ou quando deep links da web forem abertos dentro do seu app em vez de em um app de navegador separado. - # Guia de atualização do SDK do iOS 15 {#ios-15-sdk-upgrade-guide} - ## Alterações de transparência nas navegações da interface do usuário {#transparency-changes-to-ui-navigations} - ## Novas configurações de notificação {#notification-settings} - ### Modos de foco {#focus-mode} - ### Níveis de interrupção {#interruption-levels} - ### Resumo de notificações {#notification-summary} - ## Botões de localização {#location-buttons} - ### Uso de botões de local com a Braze {#using-location-buttons-with-braze} - ## E-mail da Apple {#mail} - ## Local do endereço IP do Safari {#safari-ip-address-location} - [Guia de upgrade do iOS 16](/docs/pt-br/developer_guide/platforms/swift/_archived_updates/ios_16/index.md): A Apple anunciou duas mudanças em sua funcionalidade de push para a web. - # Guia de upgrade do SDK para iOS 16 {#ios-16-sdk-upgrade-guide} - ## Mudanças no iOS 16 {#changes-in-ios-16} - ### Push para a web do Safari {#safari-web-push} - #### Push para a web no desktop (MacOS) {#macos-push} - #### Push para a web em dispositivos móveis (iOS e iPadOS) {#ios-push} - ## Como se preparar para o iOS 16 {#next-steps} - [Guia de atualização do iOS 17](/docs/pt-br/developer_guide/platforms/swift/_archived_updates/ios_17/index.md): O Braze Swift SDK e o Objective C SDK são compatíveis com versões anteriores do Xcode 14 e do Xcode 15 e com dispositivos iOS 17. - # Guia de atualização do iOS 17 - ## Compatibilidade com iOS 17 e Xcode 15 - ## Alterações no iOS 17 - ### Rastreamento de links e remoção de parâmetros UTM - ### Transparência no rastreamento de aplicativos - #### Manifestos de privacidade - #### Assinatura de código - ### SDK do Braze e privacidade - [Integração de extensões de navegador para a Web](/docs/pt-br/developer_guide/platforms/web/browser_extensions/index.md): Integre o Braze Web SDK em sua extensão de navegador para coletar análises de dados e exibir mensagens personalizadas para os usuários. Isso inclui as extensões do Google Chrome e os complementos do Firefox. - # Extensão do navegador {#browser-extension} - ## O que é suportado {#whats-supported} - ## O que não é suportado {#whats-not-supported} - ## Tipos de extensão {#extension-types} - ## Permissões {#permissions} - ## Primeiros passos {#getting-started} - ### Popups de extensão {#popup} - ### Script em segundo plano (somente Manifest v2) {#background-script} - ### Página de opções {#options-page} - ## Inicialização {#initialization} - ## Push {#push} - [Cabeçalhos de política de segurança de conteúdo para a Web](/docs/pt-br/developer_guide/platforms/web/content_security_policy/index.md): Este artigo é destinado a desenvolvedores que trabalham em sites que aplicam regras de CSP e se integram à Braze. Não se trata de um conselho sobre como você deve abordar a segurança. - # Cabeçalhos de política de segurança de conteúdo {#content-security-policy-headers} - ## Atributos de nonce {#nonce} - ## Diretivas {#directives} - ### connect-src {#connect-src} - ### script-src {#script-src} - ### img-src {#img-src} - ## Font Awesome {#font-awesome} - [Acessibilidade](/docs/pt-br/developer_guide/platforms/web/accessibility/index.md): O SDK Web da Braze suporta os padrões fornecidos pelas Diretrizes de Acessibilidade para Conteúdo da Web (WCAG 2.1). Mantemos uma pontuação de 100/100 no Lighthouse para Content Cards e mensagens no app em todas as nossas novas versões para manter nosso padrão de acessibilidade. - # Acessibilidade {#accessibility} - ## Pré-requisitos {#prerequisites} - ### Correções notáveis de acessibilidade {#notable-accessibility-fixes} - ## Recursos de acessibilidade suportados {#supported-accessibility-features} - ## Diretrizes de acessibilidade para integrações de SDK {#accessibility-guidelines-for-sdk-integrations} - ### Content Cards - #### Definindo uma altura máxima {#setting-a-maximum-height} - #### Considerações sobre a viewport {#viewport-considerations} - ### Mensagens no app {#in-app-messages} - ### Considerações para dispositivos móveis {#mobile-considerations} - #### Design responsivo {#responsive-design} - ### Testando acessibilidade {#testing-accessibility} - #### Lista de verificação de teste manual {#manual-test-checklist} - ### Problemas comuns de acessibilidade {#common-accessibility-issues} - [Suporte para smart TV para o SDK Web Braze](/docs/pt-br/developer_guide/platforms/web/smart_tvs/index.md): Para uma referência técnica completa, confira nossa Documentação JavaScript ou nossos aplicativos de exemplo para ver o Web SDK rodando em uma TV. - # Suporte para smart TV - ## Prerequisites - ## Configurando o SDK Web Braze - ## Análise de dados - ## Mensagens no app e Cartões de Conteúdo - [Integrações de TV e OTT para a Braze](/docs/pt-br/developer_guide/platforms/tv_and_ott/index.md): A seguir estão listados os recursos e os canais de envio de mensagens suportados atualmente. - # Integrações de TV e OTT {#tv-and-ott-integrations} - ## Plataformas e recursos {#platforms-and-features} - ## Guias de integração {#integration-guides} - ### Amazon Fire TV {#fire-tv} - ### Kindle Fire {#kindle-fire} - ### Android TV {#android-tv} - ### LG webOS {#lg-webos} - ### Samsung Tizen {#tizen} - ### Roku {#roku} - ### Apple TV OS {#tvos} - ### Apple Vision Pro {#vision-pro} - ## Direcionamento de apps {#app-targeting} - ## Headless UI {#custom-ui} - [Visão geral da integração para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/initial_sdk_setup/overview/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - [Integração do Carthage para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/initial_sdk_setup/installation_methods/carthage_integration/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Integração de Cartago - ## Importar o SDK - ### Versões anteriores - ## Próximas etapas - ## Integração somente do núcleo - [Integração do CocoaPods para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/initial_sdk_setup/installation_methods/cocoapods/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Integração com o CocoaPods {#cocoapods-integration} - ## Etapa 1: Instalar o CocoaPods {#step-1-install-cocoapods} - ## Etapa 2: Construindo o Podfile {#step-2-constructing-the-podfile} - #### Subspecs {#subspecs} - ## Etapa 3: Instalação do SDK da Braze {#step-3-installing-the-braze-sdk} - ## Próximas etapas {#next-steps} - ## Atualizando o SDK da Braze via CocoaPods {#updating-the-braze-sdk-via-cocoapods} - [Integração do Swift Package Manager para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/initial_sdk_setup/installation_methods/swift_package_manager/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # integração do Swift Package Manager - ## Etapa 1: Adicionando a dependência ao seu projeto - ### Importar versão do SDK - ### Selecionar pacotes - ## Etapa 2: Configurando seu projeto - ## Etapa 3: Editando o esquema do alvo - ## Próximos passos - [Opções de Integração Manual para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/initial_sdk_setup/installation_methods/manual_integration_options/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Integração manual - ## Etapa 1: Download do SDK da Braze - ### Opção 1: XCFramework Dinâmico - ### Opção 2: XCFramework estática para integração estática - ## Etapa 2: Adicionando bibliotecas iOS necessárias - ### integração SDWebImage - ### Monitoramento de localização opcional - ## Etapa 3: Cabeçalho de ponte Objective-C - ## Próximas etapas - [Complete a integração do SDK iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/initial_sdk_setup/completing_integration/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Complete a integração {#complete-the-integration} - ## Etapa 1: Atualize seu delegado do app {#step-1-update-your-app-delegate} - ## Etapa 2: Especifique seu cluster de dados {#step-2-specify-your-data-cluster} - ### Configuração do endpoint em tempo de compilação (recomendado) {#compile-time-endpoint-configuration-recommended} - ### Configuração do endpoint em tempo de execução {#runtime-endpoint-configuration} - ## Integração do SDK concluída {#sdk-integration-complete} - ## Personalização da Braze na inicialização {#customizing-braze-on-startup} - ## Appboy.sharedInstance() e a anulabilidade do Swift {#appboysharedinstance-and-swift-nullability} - ## Recursos adicionais {#additional-resources} - [Outras personalizações do SDK para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/initial_sdk_setup/other_sdk_customizations/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Outras personalizações do SDK {#other-sdk-customizations} - ## Nível de registro da Braze {#braze-log-level} - ### Níveis de registro {#log-levels} - ### Registro detalhado {#verbose-logging} - ### Definição do nível de registro {#setting-log-level} - ## Coleta opcional de IDFV - Swift {#optional-idfv-collection-swift} - ## Coleta opcional de IDFA {#optional-idfa-collection} - ### iOS 14.5 AppTrackingTransparency - ### Implementação da coleta de IDFA {#implementing-idfa-collection} - ##### Etapa 1: Implementar o ABKIDFADelegate {#step-1-implement-abkidfadelegate} - ##### Etapa 2: Definir o delegado durante a inicialização da Braze {#step-2-set-the-delegate-during-braze-initialization} - ## Tamanho aproximado do SDK do iOS {#ios-sdk-size} - [Guia de integração do SDK do Braze para iOS (opcional)](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/initial_sdk_setup/ios_sdk_integration/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Guia de integração do SDK do Braze para iOS - ## Visão geral da integração - ### Criar BrazeManager.swift - ##### Criar BrazeManager.swift - ### Inicializar o SDK - ##### Inicializar o SDK a partir de BrazeManager.swift - ##### Lidar com a inicialização do Appboy no AppDelegate.swift - ### Notificações por push - ##### Adicionar certificado push - ##### Registre-se para receber notificações por push - ##### Encaminhar métodos de notificação por push - ###### Etapa 1: Criar extensão para o código de notificação por push - ###### Etapa 2: Suporte a notificações remotas - ###### Etapa 3: Manuseio de notificações remotas - ###### Etapa 4: Encaminhar respostas de notificação - ### Acessar variáveis e métodos do usuário - ##### Criar variáveis e métodos de usuário - ### Análise de dados - ##### Criar método de evento personalizado de registro - ##### Criar método de atributos personalizados de registro - ##### Criar método de compra de registro - ### Mensagem no app - ##### Em conformidade com o ABKInAppMessageUIDelegate - ##### Adicionar métodos delegados - ### Cartões de conteúdo - ##### Criar variáveis e métodos do cartão de conteúdo - ## Próximas etapas - [Integração push para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/push_notifications/integration/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Integração push {#push-integration} - ## Etapa 1: Fazer upload do seu token APNs {#step-1-upload-your-apns-token} - ## Etapa 2: Ativar os recursos de push {#step-2-enable-push-capabilities} - ## Etapa 3: Registre-se para receber notificações por push {#step-3-register-for-push-notifications} - ### Usando o framework UserNotification (iOS 10+) {#using-usernotification-framework-ios-10} - ### Sem o framework UserNotifications {#without-usernotifications-framework} - ## Etapa 4: Registrar tokens por push na Braze {#step-4-register-push-tokens-with-braze} - ## Etapa 5: Ativar o tratamento de push {#step-5-enable-push-handling} - ### iOS 10+ - ### Pré-iOS 10 {#pre-ios-10} - ## Etapa 6: Deep linking {#step-6-deep-linking} - ## Etapa 7: Testes de unidade (opcional) {#step-7-unit-tests-optional} - [Personalização do push do iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/push_notifications/customization/index.md):

- [Botões de ação por push para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/push_notifications/customization/action_buttons/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Botões de ação {#push-action-buttons-integration} - ## Etapa 1: Adicionando categorias de push padrão do Braze - ## Etapa 2: Ativar o manuseio interativo de push - ## Personalização da categoria push - [Sons personalizados de notificações por push para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/push_notifications/customization/custom_sounds/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Sons personalizados - ## Etapa 1: Hospedagem do som no app - ## Etapa 2: Fornecimento ao dashboard de um URL de protocolo para o som - [Notificações por push avançadas para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/push_notifications/customization/rich_notifications/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # notificações ricas do iOS 10 - ## Criação de uma extensão de serviço - ## Configuração da extensão de serviço - ### Configurar a extensão de serviço para funcionar com o Braze - ### Exemplo de código - ## Criação de uma notificação Rich em seu dashboard - [Contagens de emblemas de notificação por push para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/push_notifications/customization/badges/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Emblemas - [Ignorar notificações push internas do Braze para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/push_notifications/customization/ignoring_internal_push/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Ignorar notificações push internas do Braze - ## Verificação de ações automáticas em seu app - ## Uso de métodos utilitários push internos do Braze - ## Exemplo de implementação {#internal-push-implementation-example} - [Configurações avançadas de push](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/push_notifications/customization/advanced_settings/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Configurações avançadas {#advanced-settings} - ## Extração de dados de pares de valores-chave push {#extracting-data-from-push-key-value-pairs} - ## Opções de alerta {#alert-options} - ## Adição do sinalizador content-available {#adding-content-available-flag} - ## Adição do sinalizador de conteúdo mutável {#adding-mutable-content-flag} - ## Atualizar o contador de badges do app {#update-app-badge-count} - ## Sons {#sounds} - ## ID de recolhimento {#collapse-id} - ## Vencimento {#expiry} - [Notificações por push silenciosas para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/push_notifications/silent_push_notifications/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Notificações por push silenciosas {#silent-push-notifications} - ## Envio de notificações por push silenciosas {#sending-silent-push-notifications} - ## Use notificações por push silenciosas para disparar o trabalho em segundo plano {#use-silent-push-notifications-to-trigger-background-work} - ## Limitações de notificações silenciosas do iOS {#ios-silent-notifications-limitations} - [Manual do Push para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/push_notifications/push_primer/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Integração do push primer - ## Etapa 1: Adicionar snippet no arquivo AppDelegate.m - ## Etapa 2: Anexar o verificador de eventos personalizado ao arquivo AppDelegate.m - ## Etapa 3: Configurar um manipulador de deep links - [Push Stories para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/push_notifications/push_story/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Configuração do story por push - ## Etapa 1: Ative o push em seu aplicativo - ## Etapa 2: Adição do direcionamento da extensão de conteúdo de notificação - ## Etapa 3: Ativar recursos - ### Adicionando um grupo de app - ## Etapa 4: Adição do framework Push Story ao seu app - ## Etapa 5: Atualização do Notification View Controller - ## Etapa 6: Definir o storyboard da extensão do conteúdo da notificação - ## Etapa 7: Definir o plist de extensão do conteúdo da notificação - ## Etapa 8: Atualização da integração do Braze em seu app principal - ##### Opção 1: Tempo de execução - ##### Opção 2: Info.plist - ## Próximas etapas - [Implementação avançada de notificações por push para iOS (opcional)](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/push_notifications/implementation_guide/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Guia de implementação de notificações por push {#push-notification-implementation-guide} - ## Extensões de app de conteúdo de notificação {#notification-content-app-extensions} - #### Requisitos {#requirements} - ### Configuração de categoria personalizada {#custom-category-configuration} - ## Caso de uso e passo a passo de implementação {#use-case-and-implementation-walkthrough} - ### Notificação por push interativa {#interactive-push-notification} - #### Configuração do dashboard {#dashboard-configuration} - #### Outros casos de uso {#other-use-cases} - ##### Pronto para registrar análise de dados? {#ready-to-log-analytics} - ### Notificações por push personalizadas {#personalized-push-notifications} - #### Configuração do dashboard {#dashboard-configuration} - #### Manuseio de pares chave-valor {#handling-key-value-pairs} - #### Outros casos de uso {#other-use-cases} - ##### Pronto para registrar análise de dados? {#ready-to-log-analytics} - ### Notificação por push de captura de informações {#information-capture-push-notification} - #### Configuração do dashboard {#dashboard-configuration} - #### Manipulação de ações de botões {#handling-button-actions} - ##### Dispensando pushes {#dismissing-pushes} - #### Outros casos de uso {#other-use-cases} - ##### Pronto para registrar análise de dados? {#ready-to-log-analytics} - ## Registro de análise de dados {#logging-analytics} - ### Registro com a API da Braze (recomendado) {#logging-with-the-braze-api-recommended} - ### Registro manual {#logging-manually} - #### Etapa 1: Configurar grupos de apps no Xcode {#step-1-configure-app-groups-within-xcode} - #### Etapa 2: Integrar trechos de código {#step-2-integrate-code-snippets} - ##### Salvando eventos personalizados {#saving-custom-events} - ##### Enviando eventos personalizados para a Braze {#sending-custom-events-to-braze} - ##### Salvando atributos personalizados {#saving-custom-attributes} - ##### Enviando atributos personalizados para a Braze {#sending-custom-attributes-to-braze} - ##### Salvando atributos do usuário {#saving-user-attributes} - ##### Enviando atributos do usuário para a Braze {#sending-user-attributes-to-braze} - ##### Arquivos auxiliares {#helper-files} - [Testando notificação por push para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/push_notifications/testing/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Testando {#push-testing} - [Testes de unidade de notificações por push para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/push_notifications/unit_tests/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Testes unitários {#unit-tests} - ## Etapa 1: Criação de um direcionamento de testes de unidade - ## Etapa 2: Adicione o SDK do Braze aos seus testes unitários - ## Etapa 3: Adicione o OCMock aos seus testes unitários - ## Etapa 4: Concluir a instalação das bibliotecas adicionadas - ## Etapa 5: Adição de testes push - ## Etapa 6: Executar o conjunto de testes - [Solução de problemas de notificação por push para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/push_notifications/troubleshooting/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Solução de problemas {#push-troubleshooting} - ## Noções básicas sobre o fluxo de trabalho Braze/APNs {#understanding-the-brazeapns-workflow} - #### Etapa 1: Configuração de certificado de push e perfil de provisionamento {#step-1-configuring-the-push-certificate-and-provisioning-profile} - #### Etapa 2: Os dispositivos se registram no APNs e fornecem à Braze os tokens de push {#step-2-devices-register-for-apns-and-provide-braze-with-push-tokens} - #### Etapa 3: Lançamento de uma Campaign de push da Braze {#step-3-launching-a-braze-push-campaign} - #### Etapa 4: Remoção de tokens inválidos {#step-4-removing-invalid-tokens} - ## Utilização dos registros de erros do push {#utilizing-the-push-error-logs} - ## Problemas de registro de push {#push-registration-issues} - #### Nenhum prompt de registro de push {#no-push-registration-prompt} - #### Nenhum usuário "push registrado" exibido no dashboard {#no-push-registered-users-showing-in-the-dashboard} - ## Dispositivos não estão recebendo notificações por push {#devices-not-receiving-push-notifications} - #### Usuários não estão mais "registrados para push" após o envio de uma notificação por push {#users-no-longer-push-registered-after-sending-a-push-notification} - ##### Incompatibilidade entre o certificado do dashboard e do app {#dashboard-and-app-certificate-mismatch} - ##### Desinstalações {#uninstalls} - ##### Regenerando seu perfil de provisionamento {#regenerating-your-provisioning-profile} - #### Usuários ainda estão "registrados para push" após o envio de uma notificação por push {#users-still-push-registered-after-sending-a-push-notification} - ##### App está em primeiro plano {#app-is-foregrounded} - ##### Notificação de teste agendada incorretamente {#test-notification-scheduled-incorrectly} - #### Usuário não "registrado para push" para o app que está sendo testado {#user-not-push-registered-for-the-app-being-tested} - ## As mensagens push não estão sendo enviadas {#push-messages-not-sending} - ## Erros do registro de atividade de mensagens {#message-activity-log-errors} - #### Recebido envio não registrado para token por push {#received-unregistered-sending} - #### Token de dispositivo não para tópico {#device-token-not-for-topic} - #### Envio de BadDeviceToken para token por push {#baddevicetoken-sending-to-push-token} - ## Problemas após a entrega do push {#issues-after-push-delivery} - #### Cliques de push não registrados {#push-clicks-not-logged} - #### Links da web não abrem com cliques em push {#web-links-from-push-clicks-not-opening} - #### Deep links de cliques push não abrem {#deep-links-from-push-clicks-not-opening} - #### Poucas ou nenhuma abertura direta {#few-or-no-direct-opens} - [Visão geral das mensagens no app para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/in-app_messaging/overview/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Mensagens no app {#in-app-messages} - ## Tipos de mensagens no app {#in-app-message-types} - ### Comportamentos esperados por tipos de mensagens {#expected-behaviors-by-message-types} - [Personalização de mensagens no app do iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/in-app_messaging/customization/index.md):

- [Definir delegados de mensagem no app para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/in-app_messaging/customization/setting_delegates/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Definir delegados - ## Delegado de mensagens no app - ## Delegado principal de mensagem no app - ## Declarações de métodos - ## Amostras de implementação - [Personalizar a orientação da mensagem no app para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/in-app_messaging/customization/customizing_orientation/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Personalizar orientação - ## Definindo a orientação para todas as mensagens no app - ## Como definir a orientação por mensagem no app - ## Declarações de métodos - [Personalize a manipulação de exibição de mensagens no app para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/in-app_messaging/customization/handling_in_app_display/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Exibição personalizada de mensagens no app {#custom-handling-in-app-message-display} - ## Substituição de mensagens no app antes da exibição {#overriding-in-app-messages-before-display} - ## Desativando o modo escuro {#disabling-dark-mode} - ## Ocultação da barra de status durante a exibição {#hiding-the-status-bar-during-display} - ## Registro de impressões e cliques {#logging-impressions-and-clicks} - ## Declarações de métodos {#method-declarations} - ## Amostras de implementação {#implementation-samples} - [Personalize o comportamento da mensagem no app ao clicar para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/in-app_messaging/customization/behavior_on_click/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Personalize o comportamento da mensagem no app ao clicar {#customize-in-app-message-behavior-on-click} - ## Personalização de cliques no corpo de mensagens no app {#customizing-in-app-message-body-clicks} - ## Personalização de cliques no botão de mensagens no app {#customizing-in-app-message-button-clicks} - ## Declarações de métodos {#method-declarations} - [Personalize o disparo de mensagens no app para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/in-app_messaging/customization/custom_triggering/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Disparo de mensagem personalizada no app - ## Etapa 1: Lidar com push silencioso e pares chave-valor - ## Etapa 2: Criar uma campanha push - ## Etapa 3: Crie uma campanha de mensagem no app - [mensagem no app em um controlador de visualização personalizado para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/in-app_messaging/customization/custom_view_controller/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Exibir mensagens no app em um controlador de visualização personalizado - ## Declarações de métodos - ## Amostras de implementação - [Dispensa de modais de mensagens no app para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/in-app_messaging/customization/modal_dismissal/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Dispensa com toque fora do modal {#dismiss-modal-on-outside-tap} - [Pares de valores-chave de mensagens no app para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/in-app_messaging/customization/key_value_pairs/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Extras de pares de valores chave - [Envio de mensagens no app para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/in-app_messaging/in-app_message_delivery/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Envio de mensagens no app - ## Tipos de disparo - ## Semântica de entrega - ## Intervalo de tempo mínimo entre disparos - ## Falha ao encontrar um disparador correspondente - ## Envio local de mensagens no app - ### A pilha de mensagens no app - #### Exibição de mensagens no app - #### Adição de mensagens no app à pilha - #### Retorno de mensagens no app à pilha - #### Descarte de mensagens no app - #### Enfileirar manualmente a exibição de mensagens no app - ### Criação e exibição de mensagens no app em tempo real - [Solicitação de revisão personalizada da App Store](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/in-app_messaging/custom_app_store_review_prompt/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Solicitação de revisão personalizada da App Store {#custom-app-store-review-prompt} - [Guia de implementação de mensagens no app para iOS (opcional)](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/in-app_messaging/implementation_guide/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Guia de implementação de envio de mensagens no app - ## Considerações de código - ### Subclasses de ABKInAppMessage - ## Casos de uso - ### Mensagem no app com slide personalizado - #### Adição de comportamento adicional à nossa UI padrão

- ### Mensagem modal personalizada no app - #### Configuração do dashboard - ### Mensagem completa e personalizada no app - #### Configuração do dashboard - #### Interceptação de toques em mensagens no app - [Guia avançado de implementação de mensagens no app – SharePlay](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/in-app_messaging/implementation_guide/shareplay/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Guia de implementação de mensagem no app do SharePlay {#shareplay-in-app-message-implementation-guide} - ## Visão geral {#overview} - ## Integração {#integration} - ### Etapa 1: Substituição e carregamento do XIB {#step-1-overriding-and-loading-xib} - ### Etapa 2: Configurar AVPlayer para mensagens no app {#step-2-configure-avplayer-for-in-app-messages} - #### Configuração do dashboard {#dashboard-configuration} - ### Etapa 3: Criar atividade de assistir em grupo {#step-3-create-group-watching-activity} - #### Preparação para a reprodução {#prepare-to-play} - ### Etapa 4: Abrir a mensagem no app a partir da API do SharePlay {#step-4-launch-in-app-message-from-shareplay-api} - ### Etapa 5: Saída de uma sessão em grupo ao dispensar a mensagem no app {#step-5-leaving-a-group-session-on-in-app-message-dismissal} - ### Configurar a visibilidade do botão SharePlay {#configure-shareplay-button-visibility} - [Solução de problemas de envio de mensagens no app para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/in-app_messaging/troubleshooting/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Solução de problemas em mensagens no app {#troubleshoot-in-app-messages} - ## Impressões {#impressions} - #### A análise de dados de impressões ou cliques não está sendo registrada {#impression-or-click-analytics-arent-being-logged} - #### As impressões são menores do que o esperado {#impressions-are-lower-than-expected} - ## A mensagem no app esperada não foi exibida {#expected-in-app-message-did-not-display} - ### Entrega de mensagens no app {#troubleshooting-in-app-message-delivery} - #### Verificar se as mensagens são solicitadas e retornadas {#check-if-messages-are-requested-and-returned} - #### Solução de problemas de mensagens que não estão sendo solicitadas {#troubleshoot-messages-not-being-requested} - ### Solução de problemas de mensagens que não estão sendo retornadas {#troubleshoot-messages-not-being-returned} - ### Exibição de mensagens no app {#troubleshooting-in-app-message-display} - [Integração do controlador de visualização de Content Cards para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/content_cards/integration/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Integração de Content Cards {#content-card-integration} - ## Modelo de dados de Content Cards {#content-cards-data-model} - ### Obtenção dos dados {#getting-the-data} - ## Modelo de Content Card {#content-card-model} - ### Propriedades do modelo de Content Card base - ABKContentCard {#base-content-card-model-properties-abkcontentcard} - ### Propriedades do Content Card de banner - ABKBannerContentCard {#banner-content-card-properties-abkbannercontentcard} - ### Propriedades do Content Card de imagem legendada - ABKCaptionedImageCard {#captioned-image-content-card-properties-abkcaptionedimagecard} - ### Propriedades do Content Card clássico - ABKClassicContentCard {#classic-content-card-properties-abkclassiccontentcard} - ## Métodos do cartão {#card-methods} - ## Integração do controlador de visualização de Content Cards {#content-cards-view-controller-integration} - ### Contexto de navegação {#navigation-context} - ### Contexto modal {#modal-context} - [Personalização de cartão de conteúdo do iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/content_cards/customization/index.md):

- [Estilo de Cartão de Conteúdo Personalizado para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/content_cards/customization/custom_styling/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Estilo Personalizado - ## Substituição de imagens padrão - ## Desativação do modo escuro - [Personalizando o feed do cartão de conteúdo para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/content_cards/customization/customizing_feed/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Personalizar o feed dos Cartões de Conteúdo - ## Personalizando a IU - ### Interface dinâmica - ### Interface de Usuário Estática - ## Fornecendo interfaces personalizadas - ## Substituindo Cartões de Conteúdo Populados - [Gerenciar cliques no cartão de conteúdo manualmente para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/content_cards/customization/handling_clicks_manually/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Gerenciar cliques manualmente - [Indicadores de lido e não lido do cartão de conteúdo para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/content_cards/customization/read_unread_indicators/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Indicadores de lido e não lido - ## Desativando o indicador de não visualizado - ## Personalizando o indicador de não visualizado - [Crachás de cartão de conteúdo para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/content_cards/customization/badges/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Emblemas - ## Solicitação de contagem de cartões de conteúdo não lidos - ## Exibição do número de cartões de conteúdo não visualizados na contagem do emblema do app - [Visualização de carrossel de cartão de conteúdo para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/content_cards/customization/use_cases/carousel_view/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Caso de uso: Visualização do carrossel - ## Implementação - ### Etapa 1: Criar um controlador de visualizações personalizado - ### Etapa 2: Implementar análise de dados - ### Etapa 3: Criar um observador de cartão de conteúdo - ## Considerações - [Atualize o Feed do Cartão de Conteúdo para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/content_cards/refreshing_the_feed/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Atualize o feed - ## Atualizando os cartões de conteúdo - [Use Múltiplos Fluxos de Cartões de Conteúdo para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/content_cards/multiple_feeds/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Uso de vários feeds de cartão de conteúdo - ## Etapa 1: Definição de pares de valores-chave em cartões - ## Etapa 2: Configurar um ouvinte de cartão de conteúdo - [Guia de implementação de Content Cards para iOS (opcional)](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/content_cards/implementation_guide/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Guia de implementação de Content Cards {#content-card-implementation-guide} - ## Considerações sobre o código {#code-considerations} - ### Content Cards como objetos personalizados {#content-cards-as-custom-objects} - ## Casos de uso {#sample-use-cases} - ### Content Cards como conteúdo suplementar {#content-cards-as-supplemental-content} - #### Configuração do dashboard {#dashboard-configuration} - ##### Pronto para registrar a análise de dados? {#ready-to-log-analytics} - ### Content Cards em um centro de mensagens {#content-cards-in-a-message-center} - #### Configuração do dashboard {#dashboard-configuration} - #### Explicação adicional {#further-explanation} - ##### Pronto para registrar a análise de dados? {#ready-to-log-analytics} - ### Content Cards interativos {#interactive-content-cards} - #### Configuração do dashboard {#dashboard-configuration} - ##### Pronto para registrar a análise de dados? {#ready-to-log-analytics} - ## Personalização do modo escuro {#dark-mode-customization} - ## Registro de impressões, cliques e descartes {#logging-impressions-clicks-and-dismissals} - #### Componentes de implementação

{#implementation-components} - ## Arquivos auxiliares {#helper-files} - [Rastrear Sessões para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/analytics/tracking_sessions/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Rastreamento de sessão para iOS - ## Ciclo de vida da sessão - ## Personalização do tempo limite da sessão - ## Teste de rastreamento de sessão - [Definir IDs de usuário para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/analytics/setting_user_ids/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Definir IDs de usuário para iOS - ## Sugestão de convenção de nomenclatura de ID de usuário - ## Atribuindo uma ID de usuário - ## Práticas recomendadas e notas para integração de ID do usuário - ### Automatic preservation of anonymous user history - ### Additional notes and best practices - ## Aliasing de usuários - [Rastrear eventos personalizados para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/analytics/tracking_custom_events/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Rastrear eventos personalizados para iOS {#track-custom-events-for-ios} - ## Adição de um evento personalizado {#adding-a-custom-event} - ### Adição de propriedades {#adding-properties} - ### Chaves reservadas {#event-reserved-keys} - ## Recursos adicionais {#additional-resources} - [Definir atributos personalizados para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/analytics/setting_custom_attributes/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Definir atributos personalizados para iOS {#set-custom-attributes-for-ios} - ## Atribuindo atributos de usuário padrão {#assigning-default-user-attributes} - ## Atribuindo atributos personalizados ao usuário {#assigning-custom-user-attributes} - ### Atributo personalizado com um valor da string {#custom-attribute-with-a-string-value} - ### Atributo personalizado com um valor inteiro {#custom-attribute-with-an-integer-value} - ### Atributo personalizado com um valor double {#custom-attribute-with-a-double-value} - ### Atributo personalizado com um valor booleano {#custom-attribute-with-a-boolean-value} - ### Atributo personalizado com um valor de data {#custom-attribute-with-a-date-value} - ### Atributo personalizado com um valor de array {#custom-attribute-with-an-array-value} - ### Removendo um atributo personalizado {#unsetting-a-custom-attribute} - ### Incrementando/decrementando atributos personalizados {#incrementingdecrementing-custom-attributes} - ### Definindo um atributo personalizado por meio da REST API {#setting-a-custom-attribute-via-the-rest-api} - ### Limites de valores de atributos personalizados {#custom-attribute-value-limits} - #### Informações adicionais {#additional-information} - ## Configurando inscrições de usuários {#setting-up-user-subscriptions} - ### Configurando inscrições de e-mail {#setting-email-subscriptions} - ### Configurando inscrições de notificação por push {#setting-push-notification-subscriptions} - [Registrar compras para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/analytics/logging_purchases/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Registrar compras para iOS {#log-purchases-for-ios} - ## Rastreamento de compras e receitas {#tracking-purchases-and-revenue} - ### Adição de propriedades {#properties-purchases} - ### Adição de quantidade {#adding-quantity} - ### Registre as compras no nível do pedido {#log-purchases-at-the-order-level} - ### Chaves reservadas {#reserved-keys} - ### REST API - [Monitoramento de localização para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/analytics/location_tracking/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Monitoramento de localização para iOS - ## Ativação do monitoramento automático de localização - ### Passagem de dados de localização para a Braze - [Rastreamento de desinstalação para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/analytics/uninstall_tracking/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Rastreamento de desinstalação para iOS {#uninstall-tracking-for-ios} - ## Etapa 1: Ativando o push em segundo plano {#step-1-enabling-background-push} - ## Etapa 2: Verificação do push em segundo plano da Braze {#step-2-checking-for-braze-background-push} - ## Etapa 3: Teste no dashboard {#step-3-test-from-the-dashboard} - ## Etapa 4: Ativar o rastreamento de desinstalação {#step-4-enable-uninstall-tracking} - [Desativar o rastreamento do SDK para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/analytics/disabling_tracking/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Desativar a coleta de dados para iOS - ## iOS SDK v5.7.0+ - [Deep linking para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/advanced_use_cases/linking/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Deep linking para iOS {#deep-linking-for-ios} - ## Etapa 1: Registrar um esquema {#step-1-register-a-scheme} - ## Etapa 2: Adicionar o esquema personalizado à lista de permissões (iOS 9+) {#step-2-allowlist-the-custom-scheme-ios-9} - ## Etapa 3: Implementar um handler {#step-3-implement-a-handler} - # Links universais {#universal-links} - ## App Transport Security (ATS) - ### Requisitos do ATS {#ats-requirements} - ### Atendendo aos requisitos do ATS {#handling-ats-requirements} - #### Confirme se todos os links estão em conformidade com o ATS (recomendado) {#confirm-all-links-are-ats-compliant-recommended} - #### Desativar parcialmente o ATS {#partially-disable-ats} - #### Desativar totalmente o ATS {#disable-ats-entirely} - ## Codificação de URL {#url-encoding} - ## Personalização {#linking-customization} - ### Personalização padrão do WebView {#default-webview-customization} - ### Personalização do tratamento de links {#linking-handling-customization} - #### Exemplo de integração: ABKURLDelegate {#integration-example-abkurldelegate} - ## Casos de uso frequentes {#frequent-use-cases} - ### Deep linking para as configurações do app {#deep-linking-to-app-settings} - [Controle de tráfego de rede fina para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/advanced_use_cases/fine_network_traffic_control/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Controle fino do tráfego de rede - ## Políticas de processamento de solicitações - ### Processamento automático de solicitações - ### Processamento manual de solicitações - ## Definição da política de processamento de solicitações - ### Definir política de solicitação na inicialização - ### Definir política de solicitação em tempo de execução - ## Desligamento manual da comunicação com o servidor em voo - [Localização para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/advanced_use_cases/localization/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Localização {#localization} - ## Idiomas suportados {#languages-supported} - [Integração de beacon para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/advanced_use_cases/beacon_integration/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Integração de beacons {#beacon-integration} - ## Beacons Infillion {#infillion-beacons} - [Local e Geofences para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/advanced_use_cases/locations_and_geofences/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Locais e geofences - ## Etapa 1: ativar push em segundo plano - ## Etapa 2: ativar geofences - ## Etapa 3: verificar o push em segundo plano da Braze - ## Etapa 4: adicionar NSLocationAlwaysUsageDescription ao seu Info.plist - ## Etapa 5: solicitar autorização do usuário - ## Etapa 6: ativar geofences no dashboard - ### Ativar geofences na página de locais: - ### Ativar geofences na página de configurações: - ## Desativando solicitações automáticas de geofence - ## Solicitação manual de geofences - [Google Tag Manager para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/advanced_use_cases/google_tag_manager/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Google Tag Manager para iOS - ## Inicialização do SDK {#initializing-ios-google-tag-provider} - ## Configuração do Google Tag Manager {#configuring-ios-google-tag-manager} - ### Eventos personalizados - ### Registro de atributos personalizados - ### Chamada de changeUser - ## Provedor de tags personalizadas do Braze SDK {#adding-ios-google-tag-provider} - [Armazenamento para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/storage/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Armazenamento {#storage} - ## Propriedades do dispositivo {#device-properties} - [Exemplos de aplicativos para iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/sample_apps/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Exemplos de aplicativos {#sample-apps} - ## Criação de aplicativos de teste {#building-test-applications} - [Changelog do iOS Swift SDK](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/changelog/swift_changelog/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Changelog do SDK do Swift para iOS - [Changelog para o SDK Objective-C do iOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/ios/changelog/objc_changelog/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Changelog do SDK Objective-C do iOS - # macOS - [Configuração inicial do SDK para MacOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/macOS/initial_sdk_setup/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Configuração inicial do SDK {#initial-sdk-setup} - ## Recursos compatíveis {#supported-features} - [Configuração inicial do SDK para tvOS](/docs/pt-br/developer_guide/platforms/legacy_sdks/tvos/initial_sdk_setup/index.md): AppboyKit (also known as the Objective-C SDK) is no longer supported and has been replaced by the Swift SDK. It will no longer receive new features, bug fixes, security updates, or technical support—however, messaging and analytics will continue to function as normal. To learn more, see Introducing the New Braze Swift SDK. - # Configuração inicial do SDK {#initial-sdk-setup} - ## Integração do SDK do tvOS com o CocoaPods {#tvos-sdk-cocoapods-integration} - ### Etapa 1: Instalar o CocoaPods {#step-1-install-cocoapods} - ### Etapa 2: Construindo o Podfile {#step-2-constructing-the-podfile} - ### Etapa 3: Instalação do SDK da Braze {#step-3-installing-the-braze-sdk} - ### Etapa 4: Atualização do delegate do seu app {#step-4-updating-your-app-delegate} - ### Etapa 5: Especifique seu endpoint personalizado ou cluster de dados {#step-5-specify-your-custom-endpoint-or-data-cluster} - #### Configuração do endpoint em tempo de compilação (recomendado) {#compile-time-endpoint-configuration-recommended} - #### Configuração do endpoint em tempo de execução {#runtime-endpoint-configuration} - ### Integração do SDK concluída {#sdk-integration-complete} - ### Atualizando o SDK da Braze via CocoaPods {#updating-the-braze-sdk-via-cocoapods} - ## Personalização da Braze na inicialização {#customizing-braze-on-startup} - ## Appboy.sharedInstance() e a anulabilidade do Swift {#appboysharedinstance-and-swift-nullability} - ## Opções de integração manual {#manual-integration-options} - ## Identificação de usuários e análise de dados {#identifying-users-and-reporting-analytics} - [Sobre Banners](/docs/pt-br/developer_guide/banners/index.md): Banners availability depends on your Braze package. Contact your account manager or customer success manager to get started. - # Banners - ## Prerequisites - ## Why use Banners? - ## Features - ## About Banners {#about-banners} - ### Placement IDs {#placement-id} - ### Banner priority {#priority} - ### Placement requests {#requests} - #### Rate limiting for refresh requests - ### Message delivery - ### Dimensions and sizing - ## Limitations - ## Next steps - [Gerenciar posicionamentos de Banner para o SDK da Braze](/docs/pt-br/developer_guide/banners/placements/index.md): When you create placements in your app or website, your app sends a request to Braze to fetch Banner messages for each placement. - # Gerenciar posicionamentos de Banner {#manage-banner-placements} - ## Sobre solicitações de posicionamento {#requests} - #### Rate limiting for refresh requests - ## Criar um posicionamento {#create-a-placement} - ### Pré-requisitos {#prerequisites} - ### Step 1: Create placements in Braze - ### Etapa 2: Atualize os posicionamentos no seu app {#requestBannersRefresh} - ### Etapa 3: Ouça as atualizações {#subscribeToBannersUpdates} - ### Etapa 4: Inserir usando o ID do posicionamento {#insertBanner} - ### Etapa 5: Envie um Banner de teste (opcional) {#handling-test-cards} - ## Registrar impressões {#log-impressions} - ## Registrar cliques {#logging-clicks} - ### Conteúdo padrão do Banner (automático) {#standard-banner-content-automatic} - ### Blocos de código personalizado {#custom-code-blocks} - ### Implementações de UI personalizadas (headless) {#custom-ui-implementations-headless} - #### Registrar impressões {#logging-impressions} - #### Registrar cliques - ## Registrar dispensas {#log-dismissals} - ### Pré-requisitos - ### Integrações {#integrations} - #### Integrações padrão de Banner (editor de arrastar e soltar) {#standard-banner-integrations-drag-and-drop-editor} - #### Blocos de código personalizado - ### Registrar análise de dados personalizada na dispensa do banner {#log-custom-analytics-on-banner-dismissal} - ### Limite de armazenamento de dispensas pendentes {#pending-dismissal-storage-cap} - ## Dimensões e tamanhos {#dimensions-and-sizing} - ## Propriedades personalizadas {#custom-properties} - ### Pré-requisitos - ### Acessar propriedades personalizadas {#access-custom-properties} - [Testes de Banners](/docs/pt-br/developer_guide/banners/testing/index.md): Antes de testar mensagens de Banner na Braze, você precisará criar uma Campaign de Banner na Braze. Além disso, verifique se o posicionamento que você deseja testar já está inserido no seu app ou site. - # Testes de Banners {#test-banners} - ## Pré-requisitos {#prerequisites} - ## Teste um Banner {#test-a-banner} - [Análise de dados do Banner](/docs/pt-br/developer_guide/banners/analytics/index.md): Once you've launched your campaign, you can return to the details page for that campaign to view key metrics. Navigate to the Campaigns page and select your campaign to open the details page. For sent in Canvas, refer to Canvas analytics. - # Análise de dados do Banner - ## Viewing analytics - ### Time range - ### Campaign details - #### Estimated Audience and Current Audience - #### Changes Since Last Viewed - ### Message Performance - ### Historical performance - ### Conversion event details - ### Conversion correlation - ## Retention report - ## Funnel report - [Migrar de Content Cards para Banners](/docs/pt-br/developer_guide/banners/migrating_from_content_cards/index.md): Banners oferecem várias vantagens sobre Content Cards para envio de mensagens em estilo banner: - # Migrar de Content Cards para Banners {#migrate-from-content-cards-to-banners} - ## Por que migrar para Banners? {#why-migrate-to-banners} - ### Produção acelerada {#accelerated-production} - ### Melhor experiência do usuário {#better-ux} - ### Persistência {#persistence} - ## Quando migrar {#when-to-migrate} - ## Quando manter os Content Cards {#when-to-keep-content-cards} - ## Guia de migração {#migration-guide} - ### Pré-requisitos {#prerequisites} - ### Inscrever-se para receber atualizações {#subscribe-to-updates} - #### Abordagem de Content Cards {#content-cards-approach} - #### Abordagem de Banners {#banners-approach} - ### Exibir conteúdo {#display-content} - #### Abordagem de Content Cards - #### Abordagem de Banners - ### Registrar análise de dados (implementações personalizadas) {#log-analytics-custom-implementations} - #### Abordagem de Content Cards - #### Abordagem de Banners - ### Obtendo propriedades {#getting-properties} - #### Abordagem de Content Cards - #### Abordagem de Banners - ### Tratamento de grupos de controle {#handling-control-groups} - #### Abordagem de Content Cards - #### Abordagem de Banners - ## Limitações {#limitations} - ### Migrando mensagens disparadas {#migrating-triggered-messages} - ### Diferenças de recursos {#feature-differences} - ### Limitações do produto {#product-limitations} - ### Limitações do SDK {#sdk-limitations} - ## Artigos relacionados {#related-articles} - [Tutorial: Exibindo um Banner pelo ID de Colocação](/docs/pt-br/developer_guide/banners/tutorial_displaying_banners/index.md): Before you can start this tutorial, verify that your Braze SDK meets the minimum version requirements: - # Tutorial: Exibindo um Banner pelo ID de Colocação - ## Prerequisites - ## Displaying banners for the Web SDK - #### 1. Enable debugging (optional) - #### 2. Subscribe to Banner updates - #### 3. Insert the Banner and handle control groups - #### 4. Refresh your Banners - #### 5. Add a container for your Banner - ## Prerequisites - ## Displaying banners for the Android SDK - #### 1. Enable debugging (optional) - #### 2. Subscribe to Banner updates - #### 3. Refresh your placements - #### 4. Define BannerView in your banners.xml - ## Prerequisites - ## Displaying banners for the Swift SDK - #### 1. Enable debugging (optional) - #### 2. Refresh your placements - #### 3. Initialize the Banner and provide a callback - #### 4. Enable Auto Layout constraints - #### 5. Anchor content and set height constraints - #### 1. Enable debugging (optional) - #### 2. Refresh your placements - #### 3. Create a view component - #### 4. Only display available Banners - #### 5. Only show BannerView after it loads - #### 6. Dynamically update Banner height - #### 7. Limit the Banner height - [Banners: Perguntas frequentes](/docs/pt-br/developer_guide/banners/faq/index.md): Banners are refreshed with their latest data whenever you call the refresh method—there's no need to resend or update your Banner campaign. - # Frequently asked questions - ## When do Banner updates appear for users? - ## How many placements can I request in a session? - ## How many Banner campaigns can be active simultaneously? - ## For campaigns sharing a placement, which Banner is displayed first? - ## Can I use Banners in my existing Content Card feed? - ## Can Banners include video? - ## Can I trigger a banner based on user actions? - ## Can users dismiss a Banner? - ## Can I export Banners campaign analytics using the Braze API? - ## When are users segmented? - ## How can I compose Banners to ensure the lowest latency? - ## Are all Liquid tags supported? - ## Can I capture click events? - [Cartões de Conteúdo no SDK do Braze](/docs/pt-br/developer_guide/content_cards/index.md): Using Content Cards for banner-style messages? Try out Banners— perfect for inline, persistent in-app and web messages. - # Cartões de conteúdo - ## Prerequisites - ## Standard feed UI - ## Testing Content Cards on the web - ## Card types and properties - ### Base card model - ### Image only - ### Captioned image - ### Classic - ## Control group - ## Card methods - ### Default feed methods - ### Custom feed methods - ## Best practices - ### Call methods in the correct order - ### Use cached cards to persist content across page loads - ### Log analytics for custom feeds - ## Using Google Tag Manager - ### Setting up Content Cards - ### Upgrading templates {#upgrading} - ### Troubleshooting {#troubleshooting} - #### Enable tag debugging {#debugging} - #### Enter debug mode - #### Verify tag sequencing for custom events {#tag-sequencing} - #### Enable verbose logging - ## Prerequisites - ## Google fragments - ## Card types and properties - ### Base card model {#base-card-for-android} - ### Image only {#banner-image-card-for-android} - ### Captioned image {#captioned-image-card-for-android} - ### Classic {#text-Announcement-card-for-android} - ## Card methods - ## Prerequisites - ## View controller contexts - ### Navigation - ### Modal - ## Base card model - ## Card methods - ## Prerequisites - ## Card Feeds - ## Content Cards - ## About Flutter Content Cards - ## Prerequisites - ## Card methods - ## Receiving Content Card data - ### Listen for Content Card data in the Dart layer - ### Forward Content Card data from the native iOS layer - #### Replaying the callback for Content Cards - ## About React Native Content Cards - ## Prerequisites - ## Cards methods - ## Card types and properties - ### Base card model - ### Image only - ### Captioned image - ### Classic - ### Control - ## Prerequisites - ## Setting up your tvOS app - ### Step 1: Create a new iOS app - ### Step 2: Get your app's API key - ### Step 3: Integrate BrazeKit - ### Step 4: Create your custom UI - ## Prerequisites - ## Displaying Content Cards natively {#unity-content-cards-native-ui} - ## Receiving Content Card data in Unity - ## Parsing Content Cards - ##### Example Content Cards callback - ## Refreshing Content Cards - ## Analytics - ## About .NET MAUI Content Cards - ## Prerequisites - ## Card types and properties - ### Base card model - ### Banner - ### Captioned image - ### Classic - ## Card methods - [Criar Content Cards](/docs/pt-br/developer_guide/content_cards/creating_cards/index.md): Using Content Cards for banner-style messages? Try out Banners— perfect for inline, persistent in-app and web messages. - # Criar Content Cards {#create-content-cards} - ## Criando um cartão {#creating-a-card} - ### Etapa 1: Criar uma interface de usuário personalizada {#step-1-create-a-custom-ui} - ### Etapa 2: Assine as atualizações do cartão {#step-2-subscribe-to-card-updates} - #### Etapa 2a: Criar uma variável privada de assinante {#step-2a-create-a-private-subscriber-variable} - #### Etapa 2b: Inscrever-se nas atualizações {#step-2b-subscribe-to-updates} - #### Etapa 2c: Cancelar inscrição {#step-2c-unsubscribe} - #### Etapa 2a: Criar uma variável privada de assinante - #### Etapa 2b: Inscrever-se nas atualizações - #### Etapa 2c: Cancelar inscrição - ##### Cancellable {#cancellable} - ##### AsyncStream - ### Etapa 3: Implementar análise de dados {#step-3-implement-analytics} - ### Etapa 4: Teste seu cartão (opcional) {#step-4-test-your-card-optional} - ## Posicionamentos de Content Cards {#content-card-placements} - ### Caixa de entrada de mensagens {#message-inbox} - #### Exemplo {#example} - ### Carrossel {#carousel} - ### Apenas imagem {#image-only} - [Personalizar cartões](/docs/pt-br/developer_guide/content_cards/customizing_cards/index.md): Using Content Cards for banner-style messages? Try out Banners— perfect for inline, persistent in-app and web messages. - [Personalize o estilo dos Content Cards](/docs/pt-br/developer_guide/content_cards/customizing_cards/style/index.md): A interface padrão dos Content Cards é importada da camada de interface do SDK da Braze. A partir daí, você pode ajustar certas partes do estilo do cartão, a ordem em que os cartões são exibidos e como o feed é mostrado aos seus usuários. - # Personalize o estilo dos Content Cards {#customize-the-style-of-content-cards} - ## Criando um estilo personalizado {#creating-a-custom-style} - ## Exemplos de personalização {#customization-examples} - ### Fonte personalizada {#custom-font} - ### Ícones fixados personalizados {#custom-pinned-icons} - ### Alterando a cor do indicador de não lido {#changing-the-unread-indicator-color} - ### Modo escuro {#dark-mode} - ### Desativando o indicador de não lido {#disabling-unread-indicator} - [Personalize o comportamento dos Content Cards](/docs/pt-br/developer_guide/content_cards/customizing_cards/behavior/index.md): A Braze permite que você envie cargas úteis de dados extras por meio de Content Cards para os dispositivos dos usuários usando pares de chave-valor. Eles podem ajudar a rastrear métricas internas, atualizar o conteúdo do app e personalizar propriedades. Adicione pares de chave-valor usando o dashboard. - # Personalize o comportamento dos Content Cards {#customize-the-behavior-of-content-cards} - ## Pares de chave-valor {#key-value-pairs} - ## Content Cards como conteúdo suplementar {#content-cards-as-supplemental-content} - ### Pares de chave-valor disparados por API {#api-triggered-key-value-pairs} - ## Content Cards como conteúdo interativo {#content-cards-as-interactive-content} - ## Emblemas de Content Cards {#content-card-badges} - ### Exibir o número de Content Cards não lidos como um emblema {#displaying-the-number-of-unread-content-cards-as-a-badge} - [Personalize o feed para Content Cards](/docs/pt-br/developer_guide/content_cards/customizing_cards/feed/index.md): A session refers to the period of time the Braze SDK tracks user activity in your app after it's launched. You can also force a new session by calling the changeUser() method. - # Personalize o feed para Content Cards {#customize-the-feed-for-content-cards} - ## About the session lifecycle - ## Atualizar o feed {#refreshing-the-feed} - ### Atualização automática {#automatic-refresh} - ### Atualização manual {#manual-refresh} - #### Completion handler {#completion-handler} - #### Async/Await - ### Sincronização completa vs. sincronização parcial {#full-sync-vs-partial-sync} - ### Limite de taxa {#rate-limit} - ## Personalização da ordem dos cartões exibidos {#customizing-displayed-card-order} - ## Personalização da mensagem de "feed vazio" {#customizing-empty-feed-message} - ## Implementando múltiplos feeds {#implementing-multiple-feeds} - ### Etapa 1: Definir pares de valores-chave nos cartões {#step-1-set-key-value-pairs-on-cards} - ### Etapa 2: Filtrar Content Cards {#step-2-filter-content-cards} - #### Etapa 2.1: Criar um manipulador personalizado {#step-21-create-a-custom-handler} - #### Etapa 2.2: Adicionar a um fragmento {#step-22-add-it-to-a-fragment} - [Registro de análise de dados](/docs/pt-br/developer_guide/content_cards/logging_analytics/index.md): When implementing your custom Content Cards, you can parse the Content Card objects and extract their payload data such as title, cardDescription, and imageUrl. Then, you can use the resulting model data to populate your custom UI. - # Registro de análise de dados {#log-analytics} - ## Logging analytics - ### Step 1: Create a private subscriber variable - ### Step 2: Subscribe to updates - ### Step 3: Unsubscribe - ### Step 1: Create a private subscriber variable - ### Step 2: Subscribe to updates - ### Step 3: Unsubscribe - ### Cancellable - ### AsyncStream - ## Logging events - ## Handling on-click behavior - ## Dispensas únicas maiores que impressões únicas {#unique-dismissals-higher-than-unique-impressions} - ## Análise de dados ausente nos Content Cards {#missing-content-cards-analytics} - ## ID do Content Card {#content-card-id} - [Deep linking em Content Cards](/docs/pt-br/developer_guide/content_cards/deep_linking/index.md): Neste momento, deep links de Content Cards não são suportados para o SDK Web da Braze. - # Deep linking em Content Cards {#deep-linking-in-content-cards} - ## Prerequisites - ## Creating a universal delegate - ## Deep linking to app settings - ## Customizing WebView activity {#CustomWebviewActivity} - ## Troubleshooting - ## Using Jetpack Compose - ## Prerequisites - ## Handling deep links - ### Step 1: Register a scheme {#register-a-scheme} - ### Step 2: Add a scheme allowlist - ### Step 3: Implement a handler - ## App Transport Security (ATS) - ### Working with ATS - ## Decoding URLs - ## Deep linking to app settings - ## Customization options {#customization-options} - ### Default WebView customization - ### Linking handling customization - #### Universal links {#universal-links} - ## Examples - ### BrazeDelegate - [Incorporar GIFs em Cartões de Conteúdo](/docs/pt-br/developer_guide/content_cards/embedding_gifs/index.md): Para SDKs wrapper não listados, use o método nativo relevante do Android ou Swift. Lembre-se de que os SDKs do Braze para Android e Swift não suportam GIFs animados nativamente, então você implementará GIFs em Cartões de Conteúdo usando ferramentas de terceiros. - # Incorporar GIFs em Cartões de Conteúdo - ## About GIFs - ## Integrating a custom image library - ### Step 1: Creating the image loader delegate - ### Fixing image loading for Android SDK 36.0.0 and later - ### Step 2: Setting the image loader delegate - ## Custom Image Loading with Jetpack Compose - ## Prerequisites - ## Integrating a custom image library - ### Step 1: Integrate SDWebImage - ### Step 2: Create a new Swift file - ### Step 3: Add GIFViewProvider - ### Step 4: Modify your AppDelegate.swift - [Tutorial: Criando uma Caixa de Entrada com Cartões de Conteúdo](/docs/pt-br/developer_guide/content_cards/content_card_inbox/index.md): Before you can use this feature, you'll need to integrate the Android Braze SDK. - # Tutorial: Criando uma Caixa de Entrada com Cartões de Conteúdo - ## Prerequisites - ## Criando uma caixa de entrada com Cartões de Conteúdo para Android (Compose) - #### 1\. Ativar depuração (opcional) - #### 2\. Construa uma visualização de UI - #### 3\. Inscreva-se para atualizações de Cartões de Conteúdo - #### 4\. Construa uma UI de caixa de entrada personalizada - #### 5\. Rastrear impressões e cliques - ## Criando uma caixa de entrada com Cartões de Conteúdo para Android (RecyclerView) - #### 1\. Ativar depuração (opcional) - #### 2\. Construa uma visualização de UI - #### 3\. Inscreva-se para atualizações de Cartões de Conteúdo - #### 4\. Construa uma UI de caixa de entrada personalizada - #### 5\. Rastrear impressões e cliques - ## Prerequisites - ## Criando uma caixa de entrada com Cartões de Conteúdo para SWIFT - #### 1\. Ativar depuração (opcional) - #### 2\. Construa uma visualização de interface - #### 3\. Inscreva-se para atualizações de Cartões de Conteúdo - #### 4\. Construa uma UI de caixa de entrada personalizada - #### 5\. Rastrear impressões e cliques - ## Prerequisites - ## Criando uma caixa de entrada com Cartões de Conteúdo para Web - #### 1\. Ativar depuração (opcional) - #### 2\. Construa a interface - #### 3\. Inscreva-se para atualizações de Cartões de Conteúdo - #### 4\. Construa os elementos da caixa de entrada - #### 5\. Rastrear impressões e cliques - [Mensagens no aplicativo para o SDK Braze](/docs/pt-br/developer_guide/in_app_messages/index.md): Before you can use this feature, you'll need to integrate the Web Braze SDK. However, no additional setup is required. - # Mensagem no app - ## Prerequisites - ## Message types - ## Prerequisites - ## Message types - ## Enabling in-app messages - ### Step 1: Register BrazeInAppMessageManager - ### Step 2: Update the manager's blocklist (optional) - ## Prerequisites - ## Message types - ## Enabling in-app messages - ### Step 1: Create an implementation of BrazeInAppMessagePresenter - ### Step 2: Handle no matching triggers - ## Prerequisites - ## About TV and OTT support - ## Prerequisites - ## Message types - ## Prerequisites - ## Message types - ## Enabling in-app messages - ### Customizing the in-app message presenter on iOS - ## Prerequisites - ## Message types - ## Data model - ### Messages - ### Buttons - ## Prerequisites - ## Message types - ## Enabling in-app messages - ### Step 1: Add an observer - ### Step 2: Access triggered messages - ## Message fields - ### Handling - ### Styling - ### Buttons - ## Prerequisites - ## Enabling in-app messages - ### Step 1: Create a new iOS app - ### Step 2: Get your app's API key - ### Step 3: Integrate BrazeKit - ### Step 4: Create your custom UI - ## Prerequisites - ## Message types - ## Prerequisites - ## Message types - ## Próximos passos - [Personalize mensagens no aplicativo para o SDK do Braze](/docs/pt-br/developer_guide/in_app_messages/customization/index.md): Before you can use this feature, you'll need to integrate the Web Braze SDK. - # Personalize mensagens no aplicativo - ## Prerequisites - ## Custom styles - ### Setting a default style - ### Customizing the z-index - ## Customizing message dismissals - ## Customizing display timing - ## Opening links in a new tab - ## Prerequisites - ## Setting custom manager listeners - ### Step 1: Implement the custom manager listener - #### Step 1.1: Implement IInAppMessageManagerListener - #### Step 1.2: Hook into IAM view lifecycle methods (optional) - ### Step 2: Instruct Braze to use the custom manager listener - #### Altering in-app messages before display - ## Setting custom factories - ### Step 1: Implement the factory - ### Step 2: Instruct Braze to use the factory - #### How it works - ## Custom styles - ### Setting a default style - ### Customizing the font - ## Message dismissals - ### Swiping to dismiss slideup messages - ### Disabling back button dismissals - ### Enabling outside tap dismissals - ## Customizing the orientation - ## Disabling dark theme {#android-in-app-message-dark-theme-customization} - ## Customizing the Google Play review prompt - ## Prerequisites - ## Setting up the UI delegate (required) - ### Step 1: Implement the BrazeInAppMessageUIDelegate protocol - ### Step 2: Assign the delegate object - ## On-click behavior - ### Click action types - ### Customizing on-click behavior - ### Handling the custom behavior - ## Swiping to dismiss slideup messages - ## Customizing modal dismissals - ## Customizing message orientation - ## Customizing display timing - ## Hiding the status bar - ## Disabling dark mode - ## Customizing the app store review prompt - ### Step 1: Set the in-app message delegate - ### Step 2: Disable the default App Store review message - ### Step 3: Create a deep link - ### Step 4: Set custom on-click behavior - ## Prerequisites - ## Methods for logging - ## Handling message data - ### Overriding the default UI delegate - ### Overriding the default native UI - ## Customizing the display behavior - ## Setting a custom listener - [Dispare mensagens no app através do SDK da Braze](/docs/pt-br/developer_guide/in_app_messages/triggering_messages/index.md): As mensagens no app são disparadas quando o SDK registra um dos seguintes tipos de eventos personalizados: Session Start, Push Click, Any Purchase, Specific Purchase e Custom Event (os dois últimos contendo filtros de propriedade robustos). - # Dispare mensagens no app {#trigger-in-app-messages} - ## Gatilhos de mensagem e entrega {#message-triggers-and-delivery} - ## Tipos de mensagens no app {#types-of-in-app-messages} - ### inapp (padrão) {#inapp-standard} - ### templatediam (com modelo) {#templatediam-templated} - ## Pares de chave-valor {#key-value-pairs} - ## Desabilitando gatilhos automáticos {#disabling-automatic-triggers} - ## Encadeando duas mensagens no app em uma sessão {#chaining-two-in-app-messages-in-one-session} - ## Substituindo o limite de frequência padrão {#overriding-the-default-rate-limit} - ## Disparando mensagens manualmente {#manually-triggering-messages} - ### Usando um evento do lado do servidor {#using-a-server-side-event} - #### Etapa 1: Crie um retorno de chamada push para receber o push silencioso {#step-1-create-a-push-callback-to-receive-the-silent-push} - #### Etapa 2: Crie uma Campaign de push silenciosa {#step-2-create-a-push-campaign} - #### Etapa 3: Crie uma Campaign de mensagem no app {#step-3-create-an-in-app-message-campaign} - #### Etapa 1: Lidar com push silencioso e pares de chave-valor {#step-1-handle-silent-push-and-key-value-pairs} - #### Etapa 2: Crie uma Campaign de push silenciosa {#step-2-create-a-silent-push-campaign} - #### Etapa 3: Crie uma Campaign de mensagem no app - ### Exibindo uma mensagem pré-definida {#displaying-a-pre-defined-message} - ### Exibindo uma mensagem em tempo real {#displaying-a-message-in-real-time} - ## Causas de atrasos em mensagens no app {#causes-of-in-app-message-delays} - ## Mensagens de intenção de saída para a Web {#exit-intent-messages-for-web} - [Mensagens no app em HTML](/docs/pt-br/developer_guide/in_app_messages/html_messages/index.md): Before you can use this feature, you'll need to integrate the Android Braze SDK. - # Mensagens no app em HTML {#html-in-app-messages} - ## Prerequisites - ## About HTML messages - ## Adding the interface to a WebView - ## Embedding YouTube content - ## Using deep links - ## Prerequisites - ## About HTML messages - ## Adding the interface to a WebView - ## Example: Logging a custom event - [Deep linking em mensagens no app para o SDK da Braze](/docs/pt-br/developer_guide/in_app_messages/deep_linking/index.md): Before you can use this feature, you'll need to integrate the Android Braze SDK. - # Deep linking em mensagens no app {#in-app-message-deep-linking} - ## Prerequisites - ## Creating a universal delegate - ## Deep linking to app settings - ## Customizing WebView activity {#CustomWebviewActivity} - ## Troubleshooting - ## Using Jetpack Compose - ## Prerequisites - ## Handling deep links - ### Step 1: Register a scheme {#register-a-scheme} - ### Step 2: Add a scheme allowlist - ### Step 3: Implement a handler - ## App Transport Security (ATS) - ### Working with ATS - ## Decoding URLs - ## Deep linking to app settings - ## Customization options {#customization-options} - ### Default WebView customization - ### Linking handling customization - #### Universal links {#universal-links} - ## Examples - ### BrazeDelegate - [Incorporar GIFs em mensagens no aplicativo para o SDK do Braze](/docs/pt-br/developer_guide/in_app_messages/gifs/index.md): Braze offers the ability to use a custom image library to display animated GIFs. Although the example below uses Glide, any image library that supports GIFs is compatible. - # Incorporar GIFs em mensagens no aplicativo - ## About GIFs - ## Integrating a custom image library - ### Step 1: Creating the image loader delegate - ### Fixing image loading for Android SDK 36.0.0 and later - ### Step 2: Setting the image loader delegate - ## Custom Image Loading with Jetpack Compose - ## Prerequisites - ## Integrating a custom image library - ### Step 1: Integrate SDWebImage - ### Step 2: Create a new Swift file - ### Step 3: Add GIFViewProvider - ### Step 4: Modify your AppDelegate.swift - [Registrar dados da mensagem no app através do SDK Braze](/docs/pt-br/developer_guide/in_app_messages/logging_message_data/index.md): Before you can use this feature, you'll need to integrate the Web Braze SDK. - # Registrar dados da mensagem no app - ## Prerequisites - ## Logging message data - ## Prerequisites - ## Logging message data - ## Accessing message data - ### Listen for in-app message data in the Dart layer - ### Forward in-app message data from the native layer - ### Replaying the callback for in-app messages (optional) - ## Prerequisites - ## Methods for logging - ## Handling message data - ### Overriding the default UI delegate - ### Overriding the default native UI - ## Prerequisites - ## Logging message data - ### Displayed messages - ### Clicked messages - ### Clicked buttons - ### After processing a message - ## Subscribing to in-app messages - ## Parsing messages - ## Logging message data - [Envie uma mensagem de teste para o SDK do Braze](/docs/pt-br/developer_guide/in_app_messages/sending_test_messages/index.md): After you set up a test segment, you can use it to test any of your Braze messaging channels. When set up correctly, this only needs to be done a single time. - # Sending test messages - ## Sending a test message - ### Step 1: Create a designated test segment - ### Step 2: Send the message - ## Test limitations - [Tutoriais](/docs/pt-br/developer_guide/in_app_messages/tutorials/index.md) - [Tutorial: Exibindo mensagens no app condicionalmente](/docs/pt-br/developer_guide/in_app_messages/tutorials/conditionally_displaying_messages/index.md): Before you can use this feature, you'll need to integrate the Web Braze SDK. No entanto, nenhuma configuração adicional é necessária. - # Tutorial: Exibindo mensagens no app condicionalmente - ## Prerequisites - ## Exibindo mensagens no app condicionalmente para Web - #### 1\. Remover chamadas para automaticallyShowInAppMessages() - #### 2\. Ativar depuração (opcional) - #### 3\. Inscreva-se para atualizações de mensagens no app - #### 4\. Criar lógica condicional - #### 5\. Exibir mensagens com showInAppMessage - ## Prerequisites - ## Exibição condicional de mensagens no app para Android - #### 1\. Ativar depuração (opcional) - #### 2\. Registrar retornos de chamada do ciclo de vida da atividade - #### 3\. Configure um listener de mensagem no app - #### 4\. Criar lógica condicional - #### 5\. Retorne ou descarte a mensagem - ## Prerequisites - ## Exibição condicional de mensagens no app para Swift - #### 1\. Implemente o BrazeInAppMessageUIDelegate - #### 2\. Ativar depuração (opcional) - #### 3\. Configure sua interface Braze e delegado - #### 4\. Substitua DisplayChoice com lógica condicional - [Tutorial: Personalizando o estilo usando pares chave-valor](/docs/pt-br/developer_guide/in_app_messages/tutorials/customizing_message_styling/index.md): Before you can use this feature, you'll need to integrate the Web Braze SDK. No entanto, nenhuma configuração adicional é necessária. - # Tutorial: Personalizando o estilo da mensagem usando pares chave-valor - ## Prerequisites - ## Personalizando o estilo da mensagem usando pares chave-valor para Web - #### 1\. Remover chamadas para automaticallyShowInAppMessages() - #### 2\. Ativar depuração (opcional) - #### 3\. Inscreva-se no manipulador de retorno de chamada da mensagem no app - #### 4\. Acesse a propriedade message.extras - #### 5\. Chame condicionalmente showInAppMessage - ## Prerequisites - ## Personalizando o estilo da mensagem usando pares chave-valor para Android - #### 1\. Ativar depuração (opcional) - #### 2\. Registrar retornos de chamada do ciclo de vida da atividade - #### 3\. Crie sua classe de fábrica de visualização personalizada - #### 4\. Delegar à fábrica padrão do Braze - #### 5\. Acesse pares chave-valor de inAppMessage.extras - #### 6\. Implemente um IInAppMessageViewFactory personalizado - ## Prerequisites - ## Personalizando o estilo da mensagem usando pares chave-valor para SWIFT - #### 1\. Implemente BrazeInAppMessageUIDelegate - #### 2\. Ativar depuração (opcional) - #### 3\. Prepare as mensagens antes que sejam exibidas - #### 4\. Acesse pares chave-valor de message.extras - #### 5\. Atualize os atributos de estilo da mensagem - [Tutorial: Adiar e restaurar mensagens acionadas](/docs/pt-br/developer_guide/in_app_messages/tutorials/deferring_triggered_messages/index.md): Before you can use this feature, you'll need to integrate the Web Braze SDK. No entanto, nenhuma configuração adicional é necessária. - # Tutorial: Adiar e restaurar mensagens acionadas - ## Prerequisites - ## Adiar e restaurar mensagens acionadas para Web - #### 1\. Remover chamadas para automaticallyShowInAppMessages() - #### 2\. Ativar depuração (opcional) - #### 3\. Inscreva-se no manipulador de retorno de chamada da mensagem no app - #### 4\. Adiar a instância message - #### 5\. Recuperar uma mensagem previamente adiada - #### 6\. Exibir a mensagem adiada - #### 7\. Exibir uma mensagem imediatamente - ## Prerequisites - ## Adiar e restaurar mensagens acionadas para Android - #### 1\. Criar uma instância Application singleton - #### 2\. Ativar depuração (opcional) - #### 3\. Registrar retornos de chamada do ciclo de vida da atividade - #### 4\. Configurar um ouvinte de mensagem no app - #### 5\. Crie lógica condicional - #### 6\. Crie um método para exibir mensagens adiadas - #### 7\. Dispare o método a partir da sua interface de usuário - ## Prerequisites - ## Adiar e restaurar mensagens disparadas para Swift - #### 1\. Implemente o BrazeInAppMessageUIDelegate - #### 2\. Ativar depuração (opcional) - #### 3\. Configure sua interface Braze e delegado - #### 4\. Substitua DisplayChoice por lógica condicional - #### 5\. Crie um método para mostrar mensagens adiadas - #### 5\. Dispare o método a partir da sua interface de usuário - [Solução de problemas de mensagens no app para o SDK da Braze](/docs/pt-br/developer_guide/in_app_messages/troubleshooting/index.md): Antes de depurar, adicione-se como usuário teste e revise Envio de mensagens de teste. - # Solução de problemas de mensagens no app {#troubleshoot-in-app-messages} - ## Comece aqui: identifique seu sintoma {#start-here-match-your-symptom} - ## Caminho de investigação padrão {#standard-investigation-path} - ## Mensagens no app do Canvas {#canvas-in-app-messages} - ## A mensagem no app não apareceu para um usuário {#in-app-message-not-shown-for-one-user} - ## A mensagem no app não apareceu em uma plataforma {#in-app-message-not-shown-on-one-platform} - ## A mensagem no app não apareceu para nenhum usuário {#in-app-message-not-shown-for-all-users} - ## Tempo e exibição atrasada {#timing-and-delayed-display} - ## Solução de problemas de entrega {#delivery-troubleshooting} - ### Solução de problemas de entrega {#troubleshooting-in-app-message-delivery} - #### Verifique se as mensagens estão sendo solicitadas e retornadas {#check-if-messages-are-requested-and-returned} - ##### Solução de problemas: mensagens não estão sendo solicitadas {#troubleshoot-messages-not-being-requested} - ##### Solução de problemas: mensagens não estão sendo retornadas {#troubleshoot-messages-not-being-returned} - ## Impressões e análise de dados {#impressions-and-analytics} - ## Solução de problemas de exibição por plataforma {#platform-specific-display-troubleshooting} - ### Troubleshooting display {#troubleshooting-in-app-message-display} - ### Troubleshooting display {#troubleshooting-in-app-message-display} - ### Troubleshooting display {#troubleshooting-in-app-message-display} - ### Troubleshooting asset loading (NSURLError code -1008) {#asset-loading} - #### Domains - #### Examples - ##### Netfox - ##### NetGuard - ##### XNLogger - [Notificações por push para o SDK Braze](/docs/pt-br/developer_guide/push_notifications/index.md): Se Redirect to web URL com Open web URL inside app não estiver selecionado, mas o link ainda abrir dentro do app, o app pode estar tratando a URL (por exemplo, com universal links no iOS ou App Links no Android). Para abrir o link no navegador, confirme que seu app delega a URL ao navegador do sistema quando o usuário toca na notificação, ou ajuste o tratamento de URLs do seu app para que a ação de clique corresponda à configuração do dashboard da Braze. Consulte a documentação de push da sua plataforma para saber como as ações de clique e o tratamento de URLs são configurados. - # Notificações por push {#push-notifications} - ## Prerequisites - ## Push protocols - ## Setting up push notifications - ### Step 1: Configure your service worker - ### Step 2: Register the browser - ### Step 3: Disable skipWaiting (optional) - ## Unsubscribing a user - ## Alternate domains - ### Use cases - ### Considerations - ### Setting up an alternate push domain - #### Step 1: Initiate prompting flow - #### Step 2: Register for push - #### Step 3: Communicate between domains (optional) - ## Frequently Asked Questions (FAQ) - ### Service workers - #### What if I can't register a service worker in the root directory? - #### Can I create a service worker using a Tag Manager? - ### Site security - #### Is HTTPS required? - #### When is a site considered "secure"? - #### What if a secure site is not available? - ## Prerequisites - ## Built-in features - ## About the push notification lifecycle {#push-notification-lifecycle} - ## Setting up push notifications - ### Rate limits - ### Step 1: Add Firebase to your project - ### Step 2: Add Cloud Messaging to your dependencies - ### Step 3: Enable the Firebase Cloud Messaging API - ### Step 4: Create a service account {#service-account} - ### Step 5: Generate JSON credentials {#json} - ### Step 6: Upload your JSON credentials to Braze - ### Step 7: Set up automatic token registration - ### Step 8: Remove automatic requests in your application class - ## Displaying notifications - ### Step 1: Register Braze Firebase Messaging Service - ### Step 2: Conform small icons to design guidelines - ### Step 3: Configure notification icons {#configure-icons} - #### Specifying icons in braze.xml - #### Specifying icon accent color - ### Step 4: Add deep links - #### Enabling automatic deep link opening - ## Handling foreground notifications - ### How it works - ### Customizing foreground behavior - #### Creating custom deep links - #### Adding deep links - #### Customizing back stack behavior - ### Step 5: Define notification channels - ### Step 6: Test notification display and analytics - #### Testing display - #### Testing analytics - #### Testing from command line - ## Conversation push notifications - ### Usage requirements - ## FCM quota exceeded errors - ### Best practices - #### Request a rate limit increase from FCM - #### Apply a workspace rate limit - ## Rate limits - ## Setting up push notifications - ### Step 1: Upload your APNs token - ### Step 2: Enable push capabilities - ### Step 3: Set up push handling - #### Step 3.1: Enable automation in the push property - #### Step 3.2: Override individual configurations (optional) - #### Step 3.1: Register for push notifications with APNs - #### Step 3.2: Register push tokens with Braze - #### Step 3.3: Enable push handling - ##### Default push handling - ##### Foreground push handling - ## Testing notifications {#push-testing} - ## Subscribing to push notifications updates - ## Handling foreground notifications - ### How it works - ## Push primers {#push-primers} - ## Dynamic APNs gateway management - ### Prerequisites - ### How it works - ### Frequently asked questions - #### Why was this feature introduced? - #### How does this impact push delivery performance? - #### Can I disable this feature? - ## About push notifications for Android TV - ## Prerequisites - ## Setting up push notifications - ## Testing Android TV push notifications - ## Best practices - ## Prerequisites - ## Enabling push deep linking - ## Disabling basic push notifications (iOS only) - ## Prerequisites - ## Setting up push notifications - ### Step 1: Complete the initial setup - #### Step 1.1: Register for push - #### Step 1.2: Get your Google Sender ID - #### Step 1.3: Update your braze.xml - #### Step 1.1: Upload APNs certificates - #### Step 1.2: Add push notification support to your app - ### Step 2: Listen for push notification events (optional) - ##### Push notification event fields - ### Step 3: Test displaying push notifications - ## Prerequisites - ## Setting up push notifications - ### Step 1: Register for a Huawei developer account - ### Step 2: Create a new Huawei app in the Braze dashboard - ### Step 3: Integrate the Huawei messaging SDK into your app - ### Step 4: Handle foreground notifications - ### Step 5: Test your push notifications (optional) - #### Step 5.1: Create a new push notification campaign - #### Step 5.2: Send a test push - #### Step 5.3: Set up Huawei segmentation (optional) - ## Prerequisites - ## Setting up push notifications {#setting-up-push-notifications} - ### Step 1: Complete the initial setup - #### Prerequisites - #### Step 1.1: Update your app.json file - #### Step 1.2: Add your Google Sender ID - #### Step 1.3: Add the path to your Google Services JSON - #### Step 1.1: Request for push permissions - #### Step 1.2 (Optional): Migrate your push key - ### Step 2: Request push notifications permission - #### Step 2.1: Listen for push notifications (optional) - ##### Push notification event fields - ### Step 3: Enable deep linking (optional) - #### Step 3.1: Store the push notification payload on app launch - #### Step 3.2: Handle deep links from a closed state - #### Step 3.1: Store the push notification payload on app launch {#step-3-1} - #### Step 3.2: Handle deep links from a closed state - #### Step 3.3: Enable Universal Links (optional) - ### Step 4: Handle foreground notifications - ### Step 5: Send a test push notification - ## Using the Expo plugin - ### Forwarding Android push to additional FMS - ### Using app extensions with Expo Application Services {#app-extensions} - ### Troubleshooting - #### Push notifications stopped working {#troubleshooting-stopped-working} - #### Device token won't register with Braze {#troubleshooting-token-registration} - #### Deep links from push notifications don't open {#troubleshooting-deep-links} - ## Prerequisites - ## Setting up Safari push for mobile - ### Step 1: Create a manifest file {#manifest} - ### Step 2: Link the manifest file {#manifest-link} - ### Step 3: Add a service worker {#service-worker} - ### Step 4: Add to home screen {#add-to-homescreen} - ### Step 5: Show the native push prompt {#push-prompt} - ## Next steps - ## Prerequisites - ## Setting up push notification - ### Step 1: Set up the platform - #### Step 1.1: Enable Firebase - #### Step 1.2: Set your Firebase credentials - #### Step 1.1: Verify integration method - #### Step 1.1: Enable ADM - ### Step 2: Configure push notifications - #### Step 2.1: Configure push settings {#unity_step-21-configure-push-settings} - #### Step 2.1: Upload your APNs token - #### Step 2.2: Enable automatic push - #### Step 2.3: Enable background push (optional) - #### Step 2.4: Disable automatic registration (optional) - #### Step 2.1: Update AndroidManifest.xml - #### Step 2.2: Store your ADM API key - #### Step 2.3: Add ADM Jar - #### Step 2.4: Add Client Secret and Client ID to your Braze dashboard - ### Step 3: Set push listeners - #### Step 3.1: Enable push received listener - #### Step 3.2: Enable push opened listener - #### Step 3.3: Enable push deleted listener - #### Push listener example - #### Step 3.1: Enable push received listener - #### Step 3.2: Enable push opened listener - #### Push listener example - ## Optional configurations - #### Deep linking to in-app resources - #### Adding Braze push notification icons - #### Push token callback - ## Prerequisites - ## Setting up push notifications - ### Step 1: Update your project - ### Step 2: Create your JSON credentials - ### Step 3: Upload your JSON credentials - ### Step 1: Complete the initial setup - ### Step 2: Request push notifications permission - [Personalize notificações por push para o SDK Braze](/docs/pt-br/developer_guide/push_notifications/customization/index.md): Before you can use this feature, you'll need to integrate the Android Braze SDK. You'll also need to set up push notifications. - # Personalize notificações por push - ## Prerequisites - ## Using a callback for push events {#push-callback} - ## Customizing notification display {#customization-display} - ### Step 1: Create your custom notification factory - ### Step 2: Set your custom notification factory - ## Rendering multicolor text - ### Supported HTML tags - ## Rendering inline images - ### How it works - ### Compatibility - ### Sending an inline image push - ## Settings - ### Notification ID {#notification-id} - ### Firebase Messaging Delivery priority {#fcm-priority} - ### Time to live (TTL) {#ttl} - ### Summary text {#summary-text} - ### Custom URIs {#custom-uri} - ### Notification display priority {#notification-priority} - ### Sounds {#sounds} - ## Prerequisites - ## Customizing action buttons {#push-action-buttons-integration} - ### Manually registering action buttons - #### Step 1: Adding Braze default push categories {#registering} - #### Step 2: Enable interactive push handling {#enable-push-handling} - ## Customizing push categories {#customizing-push-categories} - ### Step 1: Register a category - ### Step 2: Select your categories - ### Example: Custom push category {#example-custom-push-category} - ## Customizing badges - ## Customizing sounds - ### Step 1: Host the sound in your app - #### Converting sound files - ### Step 2: Provide a protocol URL for the sound - ## Settings - ### Key-value pairs - ### Alert options - ### Adding content-available flag - ### Adding mutable-content flag - ### Collapse ID - ### Expiry - ## Prerequisites - ## Settings - ### Time to live (TTL) {#ttl} - ### Summary text {#summary-text} - ### Custom URIs {#custom-uri} - ### Notification display priority - ### Sounds {#sounds} - ## Prerequisites - ## Push customization in React Native - ### iOS customization - ### Android customization - [Deep linking em notificações por push para o SDK Braze](/docs/pt-br/developer_guide/push_notifications/deep_linking/index.md): Before you can use this feature, you'll need to integrate the Android Braze SDK. - # Deep linking em notificações por push - ## Prerequisites - ## Creating a universal delegate - ## Deep linking to app settings - ## Customizing WebView activity {#CustomWebviewActivity} - ## Troubleshooting - ## Using Jetpack Compose - ## Prerequisites - ## Handling deep links - ### Step 1: Register a scheme {#register-a-scheme} - ### Step 2: Add a scheme allowlist - ### Step 3: Implement a handler - ## App Transport Security (ATS) - ### Working with ATS - ## Decoding URLs - ## Deep linking to app settings - ## Customization options {#customization-options} - ### Default WebView customization - ### Linking handling customization - #### Universal links {#universal-links} - ## Examples - ### BrazeDelegate - ## Prerequisites - ## Implementing deep linking - ### Step 1: Set up Flutter's built-in handling - ### Step 2: Forward data to the Dart layer (optional) - #### Example: Deep linking to an alert dialog - ## Prerequisites - ## Enabling push deep linking - [Guia de deep linking para iOS](/docs/pt-br/developer_guide/push_notifications/ios_deep_linking_guide/index.md): Para detalhes de implementação, consulte Deep linking. Para solução de problemas, consulte Solução de problemas de deep linking. - # Guia de deep linking para iOS {#ios-deep-linking-guide} - ## Escolhendo um tipo de link {#choosing-a-link-type} - ### Deep links com esquema personalizado {#custom-scheme-deep-links} - ### Links universais {#universal-links} - ### "Abrir URL da web dentro do app" {#open-web-url-inside-app} - ## O que você precisa para cada tipo de link {#what-you-need-for-each-link-type} - ### Deep links com esquema personalizado - ### Links universais - ### "Abrir URL da web dentro do app" - ## Quando você precisa de um arquivo AASA {#when-aasa} - ## Quando você precisa de código no app para lidar com links {#when-app-code} - ## Usando o Branch com a Braze {#branch} - [Solução de problemas de deep linking](/docs/pt-br/developer_guide/push_notifications/deep_linking_troubleshooting/index.md): Se um deep link de esquema personalizado (por exemplo, myapp://products/123) abrir seu app, mas não navegar para a tela pretendida: - # Solução de problemas de deep linking {#deep-linking-troubleshooting} - ## O deep link de esquema personalizado não abre a visualização correta {#custom-scheme-deep-link-doesnt-open-the-correct-view} - ## O link universal abre no Safari em vez do app {#universal-link-opens-in-safari-instead-of-the-app} - ### Verifique a permissão de Associated Domains {#verify-the-associated-domains-entitlement} - ### Valide o arquivo AASA {#validate-the-aasa-file} - ### Verifique o AppDelegate {#check-the-appdelegate} - ### Verifique a configuração do SDK da Braze {#verify-braze-sdk-configuration} - ### Verifique o problema do toque longo {#check-for-the-long-press-issue} - ## O deep link do e-mail não abre o app {#deep-link-from-email-doesnt-open-the-app} - ### Verifique o AASA do domínio de rastreamento de cliques {#verify-click-tracking-domain-aasa} - ### Verifique a cadeia de redirecionamento {#check-the-redirect-chain} - ## O deep link funciona a partir de push, mas não a partir de mensagens no app (ou vice-versa) {#deep-link-works-from-push-but-not-from-in-app-messages-or-vice-versa} - ### Verifique o BrazeDelegate {#check-the-brazedelegate} - ### Ative o registro detalhado {#enable-verbose-logging} - ### Verifique se há delegates de exibição personalizados {#check-for-custom-display-delegates} - ## "Open Web URL Inside App" mostra uma página em branco ou quebrada {#open-web-url-inside-app-shows-a-blank-or-broken-page} - ## Solução de problemas do Branch com a Braze {#branch} - ### Verifique se o BrazeDelegate encaminha para o Branch {#verify-the-brazedelegate-routes-to-branch} - ### Verifique o domínio do link do Branch {#check-branch-link-domain} - ### Ative o registro de ambos os SDKs {#enable-both-sdks-logging} - ### Verifique a configuração do dashboard do Branch {#check-branch-dashboard-configuration} - ### Teste os links do Branch de forma independente {#test-branch-links-independently} - ## Dicas gerais de depuração {#general-debugging-tips} - ### Use o registro detalhado {#use-verbose-logging} - ### Teste links em isolamento {#test-links-in-isolation} - ### Teste em um dispositivo físico {#test-on-a-physical-device} - [Configure notificações por push silenciosas para o SDK Braze](/docs/pt-br/developer_guide/push_notifications/silent/index.md): Before you can use this feature, you'll need to integrate the Android Braze SDK. You'll also need to set up push notifications. - # Notificações por push silenciosas - ## Prerequisites - ## Setting up silent push notifications - ## Prerequisites - ## iOS limitations - ## Setting up silent push notifications - ## Sending silent push notifications - ## Ignoring internal push notifications - ### Step 1: Check your app for automatic actions - ### Step 2: Use the internal push utility method - ## Prerequisites - ## Setting up silent push notifications - [Configure notificações por push ricas para o SDK Braze](/docs/pt-br/developer_guide/push_notifications/rich/index.md): Before you can use this feature, you'll need to integrate the Swift Braze SDK. You'll also need to set up push notifications. - # Notificações de Rich push - ## Prerequisites - ## Setting up rich push notifications - ### Step 1: Creating a service extension - ### Step 2: Setting up the notification service extension - ### Step 3: Adding an App Group - ### Step 4: Integrating rich push notifications - #### Adding the rich push framework to your app - #### Using your own UNNotificationServiceExtension - ### Step 5: Configuring the App Group in Braze - ### Step 6: Creating a rich notification in your dashboard - ## Prerequisites - ## Setting up rich push notifications - ### Step 1: Create a notification service extension - ### Step 2: Add a new target - ### Step 3: Reinstall your CocoaPods dependencies - ## Prerequisites - ## Using Expo to enable rich push notifications - [Configure histórias de push para o SDK do Braze](/docs/pt-br/developer_guide/push_notifications/push_stories/index.md): Before you can use this feature, you'll need to integrate the Swift Braze SDK. You'll also need to set up push notifications, which includes implementing the UNNotification framework. - # Stories por push - ## Prerequisites - ## Setting up Push Stories - ### Step 1: Adding the Notification Content Extension target {#notification-content-extension} - ### Step 2: Enable capabilities {#enable-capabilities} - #### Adding an App Group - ### Step 3: Adding the Push Story framework to your app {#enable-capabilities} - ### Step 4: Updating your notification view controller {#enable-capabilities} - #### Custom handling push story events - ### Step 5: Setting the Notification Content Extension plist {#notification-content-extension} - ### Step 6: Updating the Braze integration in your main app {#update-braze} - ## Prerequisites - ## Setting up push stories - ### Step 1: Create a notification content extension - ### Step 2: Configure your push app group - ### Step 3: Add a new target - ### Step 4: Reinstall your CocoaPods dependencies - ## Prerequisites - ## Enabling push stories - [Configure prompts de soft push para o SDK do Braze](/docs/pt-br/developer_guide/push_notifications/soft_push_prompts/index.md): Before you can use this feature, you'll need to integrate the Web Braze SDK. You'll also need to set up push notifications. - # Prompts de soft push para Web - ## Prerequisites - ## About soft push prompts - ## Setting up soft push prompts - ### Step 1: Create a push primer campaign - ### Step 2: Remove calls - ### Step 3: Update integration - [Análise de dados de push e registro de eventos personalizados](/docs/pt-br/developer_guide/push_notifications/logging_message_data/index.md): Antes de começar, conclua a integração inicial de notificações por push para a sua plataforma: - # Análise de dados de push e registro de eventos personalizados {#push-analytics-and-custom-event-logging} - ## Pré-requisitos {#prerequisites} - ## Análise de dados nativa de push vs. registro de eventos personalizados {#native-push-analytics-vs-custom-event-logging} - ## O que a Braze registra automaticamente {#what-braze-logs-automatically} - ## Preservando a análise de dados nativa de push com tratamento personalizado de push {#preserving-native-push-analytics-with-custom-push-handling} - ## Registrando dados personalizados a partir de cargas úteis de push {#logging-custom-data-from-push-payloads} - ### Opção A: Registrar com o endpoint /users/track {#option-a-log-with-the-userstrack-endpoint} - ### Opção B: Registrar com métodos do SDK após a inicialização do app {#option-b-log-with-sdk-methods-after-app-launch} - ## Registrando a partir de uma extensão de conteúdo de notificação (Swift) {#logging-from-a-notification-content-extension-swift} - ### Etapa 1: Configurar grupos de app no Xcode {#step-1-configure-app-groups-in-xcode} - ### Etapa 2: Escolher o que registrar {#step-2-choose-what-to-log} - #### Salvando eventos personalizados {#saving-custom-events} - #### Enviando eventos personalizados para a Braze {#sending-custom-events-to-braze} - #### Salvando atributos personalizados {#saving-custom-attributes} - #### Enviando atributos personalizados para a Braze {#sending-custom-attributes-to-braze} - #### Salvando atributos de usuário {#saving-user-attributes} - #### Enviando atributos de usuário para a Braze {#sending-user-attributes-to-braze} - #### Arquivo auxiliar RemoteStorage {#remotestorage-helper-file} - #### Arquivo auxiliar UserAttribute {#userattribute-helper-file} - #### Arquivo auxiliar de dicionário EventName {#eventname-dictionary-helper-file} - ## Analisando resultados {#analyzing-results} - ## Referências relacionadas {#related-references} - [Enviar Mensagens de Teste](/docs/pt-br/developer_guide/push_notifications/sending_test_messages/index.md): After you set up a test segment, you can use it to test any of your Braze messaging channels. When set up correctly, this only needs to be done a single time. - # Sending test messages - ## Sending a test message - ### Step 1: Create a designated test segment - ### Step 2: Send the message - ## Test limitations - [Exemplos avançados de notificações por push para o SDK da Braze](/docs/pt-br/developer_guide/push_notifications/examples/index.md): Before you can use this feature, you'll need to integrate the Android Braze SDK. You'll also need to set up push notifications. - # Exemplos avançados de notificações por push {#advanced-push-notification-examples} - ## Prerequisites - ## Custom notification layout - ### Step 1: Add a custom layout - ### Step 2: Create a custom notification factory - ### Step 3: Map custom data - ### Step 4: Set the custom notification factory - ### Step 5: Send the activity - #### Example curl command - #### Request parameters - ### Step 6: Update the activity - ## Personalized push notifications - ## Prerequisites - ## Notification content app extensions - ### Requirements - ## Interactive push notification - ### Dashboard configuration - ## Personalized push notifications - ### Dashboard configuration - ### Handling key-value pairs - #### Parsing Key-Value Pairs from Push Notifications - ## Information capture push notification - ### Dashboard configuration - ### Handling button actions - ### Dismissing pushes - [Sobre os estados de inscrição push](/docs/pt-br/developer_guide/push_notifications/subscription_states/index.md): A "Push Subscription State" in Braze identifies a user's global preference for their desire to receive push notifications. Because the subscription state is user-based, it is not specific to any individual app. Subscription states become helpful flags when deciding which users to target for push notifications. - # Sobre os estados de inscrição push - ## Push subscription states {#push-sub-states} - ### Push registration and reachable users - ### Updating push subscription states {#update-push-subscription-state} - #### Automatic opt-in (default) - #### SDK integration - #### REST API - ### Differences between push enablement and push subscription status - ### Imported push tokens (iOS) - ### Checking push subscription state - [Solução de problemas de notificações por push para o SDK da Braze](/docs/pt-br/developer_guide/push_notifications/troubleshooting/index.md): If you're experiencing issues after setting up push notifications, consider the following: - # Solução de problemas de notificações por push {#troubleshoot-push-notifications} - ## Troubleshooting - ## Understanding the Braze push workflow - ### Step 1: Configuring your Google Cloud API key - ### Step 2: Devices register for FCM and provide Braze with push tokens - ### Step 3: Launching a Braze push campaign - ### Step 4: Removing invalid tokens - ## Utilizing the push error logs - ## Troubleshooting scenarios - ### Push isn't sending - ### No "push registered" users showing in the Braze dashboard (prior to sending messages) - #### Incorrect sender ID - #### Braze registration not occurring - #### Google Play Services not present - #### Device not connected to the internet - ### Tapping push notification doesn't open the app - ### Push notifications bounced - #### Error: MismatchSenderID - #### Error: InvalidRegistration - #### Error: NotRegistered - ### Push notifications sent but not displayed on users' devices - #### Application was force quit - #### BrazeFirebaseMessagingService not registered - #### Firewall is blocking push - #### Custom notification factory returning null - ### "Push registered" users no longer enabled after sending messages - #### Application was uninstalled - #### Invalid Firebase Cloud Messaging server key - ### Push clicks not logged - ### Deep links not working - #### Verify deep link configuration - #### Verify custom handling logic - #### Disable back stack behavior - ## Understanding the Braze/APNs workflow - ### Step 1: Configuring the push certificate and provisioning profile - ### Step 2: Devices register for APNs and provide Braze with push tokens - #### Considerations for push token generation - ### Step 3: Launching a Braze push campaign - ### Step 4: Removing invalid tokens - ## Using the push error logs - ### Message Activity Log errors - #### Received unregistered sending to push token {#received-unregistered-sending} - #### Device token not for topic - #### BadDeviceToken sending to push token - ## Push registration issues - ### No push registration prompt - ### No "push registered" users showing in the dashboard (prior to sending messages) - ## Push notifications sent but not displayed on users’ devices - ### "Push registered" users no longer enabled after sending messages - #### Dashboard and app certificate mismatch - #### Application was uninstalled - #### Regenerating your provisioning profile - ### Messages not delivered to "push registered" users - #### App is foregrounded - #### Test notification scheduled incorrectly - ### User not "push registered" for the app being tested - ## Push clicks not logged {#push-clicks-not-logged} - ## Deep links not working - ### Web links from push clicks not opening - ### Deep links from push clicks not opening - ## Understanding the Braze push workflow - ### Step 1: Configuring your Google Cloud API key - ### Step 2: Devices register for FCM and provide Braze with push tokens - ### Step 3: Launching a Braze push campaign - ### Step 4: Removing invalid tokens - ## Utilizing the push error logs - ## Troubleshooting scenarios - ### Push isn't sending - ### No "push registered" users showing in the Braze dashboard (prior to sending messages) - #### Incorrect sender ID - #### Braze registration not occurring - #### Google Play Services not present - #### Device not connected to the internet - ### Tapping push notification doesn't open the app - ### Push notifications bounced - #### Error: MismatchSenderID - #### Error: InvalidRegistration - #### Error: NotRegistered - ### Push notifications sent but not displayed on users' devices - #### Application was force quit - #### BrazeFirebaseMessagingService not registered - #### Firewall is blocking push - #### Custom notification factory returning null - ### "Push registered" users no longer enabled after sending messages - #### Application was uninstalled - #### Invalid Firebase Cloud Messaging server key - ### Push clicks not logged - ### Deep links not working - #### Verify deep link configuration - #### Verify custom handling logic - #### Disable back stack behavior - ## Troubleshooting - ### Push doesn't appear after app is closed from task switcher - ### Custom notification factory not being set correctly - ## Quebras de linha em notificações por push {#push-linebreaks} - [Atividades ao Vivo para o SDK do Braze](/docs/pt-br/developer_guide/live_notifications/index.md) - [Atualizações ao vivo para o SDK Braze do Android](/docs/pt-br/developer_guide/live_notifications/live_updates/index.md): Você pode usar a interface IBrazeNotificationFactory para personalizar como as notificações por push da Braze são exibidas. Ao estender BrazeNotificationFactory, a Braze chamará o método createNotification() da sua fábrica antes que a notificação seja exibida ao usuário. Em seguida, será passada uma carga útil contendo pares de chave-valor personalizados enviados pelo dashboard da Braze ou pela REST API. - # Atualizações ao vivo para Android {#live-updates-for-android} - ## Como funciona {#how-it-works} - ## Exibindo uma atualização ao vivo {#displaying-a-live-update} - ### Prerequisites - ### Etapa 1: Criar uma fábrica de notificações personalizada {#step-1-create-a-custom-notification-factory} - ### Etapa 2: Mapear dados personalizados {#step-2-map-custom-data} - ### Etapa 3: Definir a fábrica de notificações personalizada {#step-3-set-the-custom-notification-factory} - ### Etapa 4: Enviar a atividade {#step-4-send-the-activity} - #### Exemplo de comando curl {#example-curl-command} - #### Parâmetros da solicitação {#request-parameters} - ### Etapa 5: Atualizar a atividade {#step-5-update-the-activity} - [Atividades ao vivo para o SDK Swift da Braze](/docs/pt-br/developer_guide/live_notifications/live_activities/index.md): !Atividade ao vivo de um rastreador de entregas em uma tela de bloqueio do iPhone. Uma barra de status com um carro está quase na metade. O texto diz "2 min until pickup"{: style="max-width:40%;float:right;margin-left:15px;"} - # Atividades ao vivo para Swift {#live-activities-for-swift} - ## Como funciona {#how-it-works} - ## Diagrama de sequência {#sequence-diagram} - ## Implementação de uma Atividade ao Vivo {#implementing-a-live-activity} - ### Prerequisites - ### Etapa 1: Crie uma atividade {#create-an-activity} - #### Exemplo {#example} - ### Etapa 2: Inicie a atividade {#start-the-activity} - #### Etapa 2.1: Adicione o BrazeKit à sua extensão de widget {#step-21-add-brazekit-to-your-widget-extension} - #### Etapa 2.2: Adicione o protocolo BrazeLiveActivityAttributes {#brazeActivityAttributes} - #### Etapa 2.3: Registre para push-to-start {#step-23-register-for-push-to-start} - ###### Exemplo - #### Etapa 2.4: Envie uma notificação push-to-start {#step-24-send-a-push-to-start-notification} - #### Exemplo - ### Etapa 3: Retome o rastreamento de atividades {#resume-activity-tracking} - ###### Exemplo - ### Etapa 4: Atualize a atividade {#update-the-activity} - ### Etapa 5: Encerre a atividade {#end-the-activity} - #### Organizando o descarte automático {#arranging-automatic-dismissal} - ## Rastreamento de Atividades ao Vivo {#tracking-live-activities} - ## Observar eventos de Atividade ao Vivo (opcional) {#observe-live-activity-events} - ### Configurar inscrições {#set-up-subscriptions} - ### subscribeToStateUpdates {#subscribe-to-state-updates} - #### Eventos com escopo de tipo {#type-scoped-events} - #### Eventos com escopo de instância {#instance-scoped-events} - ###### Exemplo - ### subscribeToErrors {#subscribe-to-errors} - #### Erros com escopo de tipo {#type-scoped-errors} - #### Erros com escopo de instância {#instance-scoped-errors} - ###### Exemplo - ### Lidar com atualizações de estado do conteúdo (opcional) {#handle-content-state} - #### Tipo de atributos único {#single-attributes-type} - #### Múltiplos tipos de atributos {#multiple-attributes-types} - ## Perguntas frequentes (FAQ) {#faq} - ### Funcionalidade e suporte {#functionality-and-support} - #### Quais plataformas suportam Atividades ao Vivo? {#what-platforms-support-live-activities} - #### Os apps React Native são compatíveis com Atividades ao Vivo? {#do-react-native-apps-support-live-activities} - #### A Braze oferece suporte a Atividades ao Vivo como uma Campaign ou etapa do Canvas? {#does-braze-support-live-activities-as-a-campaign-or-canvas-step} - ### Notificações por push e Atividades ao Vivo {#push-notifications-and-live-activities} - #### O que acontece se uma notificação por push for enviada enquanto uma Atividade ao Vivo estiver ativa? {#what-happens-if-a-push-notification-is-sent-while-a-live-activity-is-active} - #### Se as Atividades ao Vivo utilizam a funcionalidade de mensagens push, as notificações por push precisam estar ativadas para receber Atividades ao Vivo? {#if-live-activities-leverage-push-message-functionality-do-push-notifications-need-to-be-enabled-to-receive-live-activities} - #### As Atividades ao Vivo requerem push primers? {#do-live-activities-require-push-primers} - ### Tópicos técnicos e solução de problemas {#technical-topics-and-troubleshooting} - #### Como posso saber se as Atividades ao Vivo têm erros? {#how-do-i-know-if-live-activities-has-errors} - #### Depois de enviar uma notificação push-to-start, por que não recebi minha Atividade ao Vivo? {#after-sending-a-push-to-start-notification-why-havent-i-received-my-live-activity} - #### Depois de iniciar minha Atividade ao Vivo com push-to-start, por que ela não está recebendo novas atualizações? {#after-starting-my-live-activity-with-push-to-start-why-isnt-it-receiving-new-updates} - #### Estou recebendo uma resposta de acesso negado quando tento usar o endpoint liveactivity/update. Por quê? {#i-am-receiving-an-access-denied-response-when-i-try-to-use-the-liveactivityupdate-endpoint-why} - #### O endpoint messages/send compartilha os limites de taxa com o endpoint messages/liveactivity/update? {#does-the-messagessend-endpoint-share-rate-limits-with-the-messagesliveactivityupdate-endpoint} - [Feature Flags para o SDK do Braze](/docs/pt-br/developer_guide/feature_flags/index.md): When you're ready to create your own feature flags, check out Creating feature flags. - # Feature flags - ## Prerequisites - ## Use cases - ### Gradual rollouts - ### Remotely control app variables - ### Message coordination - ### Feature experimentation - ### Segmentation - ## Plan limitations - [Criação de Feature Flags](/docs/pt-br/developer_guide/feature_flags/create/index.md): To use feature flags, ensure your SDKs are up to date with at least these minimum versions: - # Create feature flags - ## Prerequisites - ### SDK version - ### Braze permissions - ## Creating a feature flag - ### Step 1: Create a new feature flag - ### Step 2: Fill out the details - ### Step 2a: Create custom properties - ### Step 4: Choose segments to target - ### Step 5: Set the rollout traffic {#rollout} - ## Multi-rule feature flag rollouts - ### Evaluation order - ### User qualification - ### "Everyone Else" rule - ### Re-ordering rules - ### Multi-rule feature flag use cases - #### Gradually release a checkout page - #### Reach internal testers first - ## Using the "enabled" field for your feature flags {#enabled} - ### Logging a feature flag impression {#impressions} - ### Accessing properties {#accessing-properties} - ### Getting a list of all feature flags {#get-list-of-flags} - ### Refreshing feature flags {#refreshing} - ### Listening for changes {#updates} - ## Checking user eligibility - ## Viewing the changelog - ## Segmenting with feature flags {#segmentation} - ## Best practices - ### Don't combine rollouts with Canvases or experiments - ### Naming conventions - ### Planning ahead - ### Be descriptive - ### Clean up old feature flags - [Flags de recursos no canva](/docs/pt-br/developer_guide/feature_flags/canvas/index.md) - [Experimentos de Feature Flag](/docs/pt-br/developer_guide/feature_flags/experiments/index.md): Before you can track user data in the experiment, your app needs to record when a user interacts with a feature flag. This is called a feature flag impression. Make sure to log a feature flag impression whenever a user sees or could have seen the feature you're testing, even if they're in the control group. - # Feature flag experiments - ## Prerequisites - ## Creating a feature flag experiment - ### Step 1: Create an experiment - ### Step 2: Add experiment variants - ### Step 3: Overwrite properties (optional) - ### Step 4: Choose users to target - ### Step 5: Distribute variants - ### Step 6: Assign conversions - ### Step 7: Review and launch - ## Reviewing the results - ### Campaign analytics - ### Feature flag experiment performance - [Perguntas frequentes](/docs/pt-br/developer_guide/feature_flags/faq/index.md): Braze supports feature flags on iOS, Android, and Web platforms with the following SDK version requirements: - # Frequently asked questions - ## Functionality and support - ### What platforms are Braze feature flags supported on? {#platforms} - ### What is the level of effort involved when implementing a feature flag? {#level-of-effort} - ### How can feature flags benefit Marketing teams? {#marketing-teams} - ### How can feature flags benefit Product teams? {#product-teams} - ### How can feature flags benefit engineering teams? {#engineering-teams} - ## Feature rollouts and targeting - ### Can a feature flag be rolled out to only a select group of users? {#target-users} - ### How does adjusting the rollout percentage affect users who were previously bucketed into the enabled group? {#random-buckets} - ## Technical topics - ### Can feature flags be used to control when the Braze SDK is initialized? {#initialization} - ### How frequently does the SDK refresh feature flags? {#refresh-frequency} - ### Are feature flags available while a user is offline? {#offline} - ### What happens if feature flags are refreshed mid-session? {#listen-for-updates} - ### Why aren't users in my Global Control Group receiving feature flags experiments? - ## Additional questions? - [Sobre a análise de dados do SDK da Braze](/docs/pt-br/developer_guide/analytics/index.md): Durante a sua implementação da Braze, certifique-se de discutir as metas de marketing com sua equipe, para que você possa decidir da melhor forma quais dados deseja rastrear e como deseja rastreá-los com a Braze. Como exemplo, veja nosso estudo de caso de aplicativo de táxi/viagem por aplicativo no final deste guia. - # Análise de dados {#analytics} - ## Dados coletados automaticamente {#automatically-collected-data} - ## Eventos personalizados {#custom-events} - ### Armazenamento de eventos personalizados {#custom-event-storage} - ### Propriedades do evento personalizado {#custom-event-properties} - ## Atributos personalizados {#custom-attributes} - ### Armazenamento de atributo personalizado {#custom-attribute-storage} - ### Tipos de dados de atributo personalizado {#custom-attribute-data-types} - #### Strings (caracteres alfanuméricos) {#strings-alphanumeric-characters} - #### Arrays {#arrays} - #### Datas {#dates} - #### Números {#integers} - #### Booleanos (verdadeiro/falso) {#booleans-truefalse} - ## Eventos de compra / rastreamento de receita {#purchase-events-revenue-tracking} - ## Caso de uso de táxi/viagem por aplicativo {#example-case} - ## Melhores práticas {#best-practices} - ### Práticas gerais recomendadas {#general-best-practices} - #### Usar propriedades de evento {#use-event-properties} - ### Melhores práticas de desenvolvimento {#development-best-practices} - #### Defina IDs de usuário para cada usuário {#set-user-ids-for-every-user} - #### Dê nomes legíveis a eventos e atributos personalizados {#give-custom-events-and-attributes-readable-names} - #### Registre atributos somente quando eles mudarem {#only-log-attributes-when-they-change} - #### Evite gerar nomes de eventos programaticamente {#avoid-programmatically-generating-event-names} - ### Limitações e restrições técnicas {#technical-limitations-and-constraints} - #### Restrições de comprimento {#length-constraints} - #### Restrições de conteúdo {#content-constraints} - #### Chaves reservadas {#reserved-keys} - #### Definições de valor {#value-definitions} - ### Analisando um campo de nome genérico {#parsing-a-generic-name-field} - [Definir IDs de usuários através do SDK da Braze](/docs/pt-br/developer_guide/analytics/setting_user_ids/index.md): Para wrapper SDKs não listados, use o método nativo relevante do Android ou Swift. - # Definir IDs de usuários {#set-user-ids} - ## Sobre usuários anônimos {#about-anonymous-users} - ### Prevenindo o rastreamento de usuários anônimos {#preventing-anonymous-user-tracking} - ## Definindo um ID de usuário {#setting-a-user-id} - ### Como o changeUser() funciona {#how-changeuser-works} - ## Aliases de usuário {#user-aliases} - ### Como funcionam {#how-they-work} - ### Definindo um alias de usuário {#setting-a-user-alias} - ## Melhores práticas para nomeação de IDs {#naming-best-practices} - [Defina atributos do usuário através do SDK do Braze](/docs/pt-br/developer_guide/analytics/setting_user_attributes/index.md): Para SDKs wrapper não listados, use o método nativo relevante do Android ou Swift. - # Definir atribuições do usuário - ## Prerequisites - ## Default user attributes - ### Predefined methods - ### Setting default attributes - ### Unsetting default attributes - ## Custom user attributes - ### Setting custom attributes - ### Unsetting custom attributes - ### Nesting custom attributes - ### Using the REST API - ## Setting user subscriptions - ### Unsubscribing a user from email - ### Unsubscribing a user from push - ## Prerequisites - ## Default user attributes - ### Predefined methods - ### Setting default attributes - ### Unsetting default attributes - ## Custom user attributes - ### Setting custom attributes - ### Unsetting custom attributes - ### Nesting custom attributes - ### Using the REST API - ## Setting user subscriptions - ### Setting email subscriptions - ### Setting push notification subscription - ## Prerequisites - ## Default user attributes - ### Supported attributes - ### Setting default attributes - ### Unsetting default attributes - ## Custom user attributes - ### Setting custom attributes - ### Incrementing or decrementing custom attributes - ### Unsetting custom attributes - ### Nesting custom attributes - ### Using the REST API - ## Setting user subscriptions - ### Setting email subscriptions - ### Setting push notification subscriptions - ## Prerequisites - ## Default user attributes - ### Supported attributes - ### Setting default attributes - ## Custom user attributes - ### Setting custom attributes - ### Unsetting custom attributes - ## Prerequisites - ## Default user attributes - ### Predefined methods - ### Setting default attributes - ## Custom user attributes - ### Settings custom attributes - ### Incrementing and decrementing custom attributes - ### Unsetting custom attributes - ### Using the REST API - ## Setting email subscriptions - ## Prerequisites - ## Default user attributes - ### Predefined methods - ### Setting default attributes - ### Unsetting default attributes - ## Custom user attributes - ### Setting custom attributes - ### Unsetting custom attributes - ### Using the REST API - ## Setting user subscriptions - ### Setting email subscriptions - ### Setting push notification subscriptions - ## Prerequisites - ## Logging custom attributes - ### Default user attributes - ### Custom user attributes - #### Unsetting custom attributes - #### Custom Attribute Arrays - [Registre eventos personalizados através do SDK da Braze](/docs/pt-br/developer_guide/analytics/logging_events/index.md): Para wrapper SDKs não listados, use o método nativo relevante do Android ou Swift. - # Registre eventos personalizados {#log-custom-events} - ## Registro de um evento personalizado {#logging-a-custom-event} - ## Adicionando propriedades de metadados {#adding-metadata-properties} - ## Melhores práticas {#best-practices} - ### Verificar eventos {#verify-events} - ### Verificar registro {#verify-log} - ### Verificar valores {#verify-values} - ## Solução de problemas de eventos personalizados {#troubleshooting-custom-events} - ### Verificando o gatilho do evento personalizado {#verifying-the-custom-event-trigger} - ### Eventos personalizados são registrados em um perfil anônimo {#custom-events-are-logged-to-an-anonymous-profile} - ### Verificando a configuração do registro de eventos personalizados {#verifying-custom-event-logging-setup} - [Registrar compras através do SDK Braze](/docs/pt-br/developer_guide/analytics/logging_purchases/index.md): Para SDKs wrapper não listados, use o método nativo relevante do Android ou Swift. - # Registrar compras - ## Registrando compras e receita - ### Adição de propriedades - ### Adição de quantidade - ### Usando a API REST - ## Registro de pedidos - ## Chaves reservadas - ## Moedas suportadas - [Registrar eventos de eCommerce pelo SDK da Braze](/docs/pt-br/developer_guide/analytics/logging_ecommerce_events/index.md): Para wrapper SDKs não listados, use o método nativo Android ou Swift correspondente. - # Registrar eventos de eCommerce {#log-ecommerce-events} - ## Esquemas de eventos {#event-schemas} - ## Android - ### Blocos de construção compartilhados {#shared-building-blocks} - ### Validação no lado do cliente {#client-side-validation} - ### Exemplos de código {#code-examples} - ## iOS - ### Exemplos de código - ## Web - ### Exemplos de código - ## Registro manual com logCustomEvent {#manual-logging-with-logcustomevent} - [Registre os dados do cartão de conteúdo através do SDK Braze](/docs/pt-br/developer_guide/analytics/logging_channel_data/content_cards/index.md): When implementing your custom Content Cards, you can parse the Content Card objects and extract their payload data such as title, cardDescription, and imageUrl. Then, you can use the resulting model data to populate your custom UI. - # Registre os dados do cartão de conteúdo - ## Logging analytics - ### Step 1: Create a private subscriber variable - ### Step 2: Subscribe to updates - ### Step 3: Unsubscribe - ### Step 1: Create a private subscriber variable - ### Step 2: Subscribe to updates - ### Step 3: Unsubscribe - ### Cancellable - ### AsyncStream - ## Logging events - ## Handling on-click behavior - [Registre os dados da mensagem no app através do SDK Braze](/docs/pt-br/developer_guide/analytics/logging_channel_data/in_app_messages/index.md): Before you can use this feature, you'll need to integrate the Web Braze SDK. - # Registre os dados da mensagem no app - ## Prerequisites - ## Logging message data - ## Prerequisites - ## Logging message data - ## Accessing message data - ### Listen for in-app message data in the Dart layer - ### Forward in-app message data from the native layer - ### Replaying the callback for in-app messages (optional) - ## Prerequisites - ## Methods for logging - ## Handling message data - ### Overriding the default UI delegate - ### Overriding the default native UI - ## Prerequisites - ## Logging message data - ### Displayed messages - ### Clicked messages - ### Clicked buttons - ### After processing a message - ## Subscribing to in-app messages - ## Parsing messages - ## Logging message data - [Registre os dados da notificação por push através do SDK Braze](/docs/pt-br/developer_guide/analytics/logging_channel_data/push_notifications/index.md): You can log analytics in real-time by making calls to the /users/track endpoint. To log analytics, send the braze_id value from the Braze dashboard to identify which user profile to update. - # Registre os dados da notificação por push - ## Logging data with the Braze API (recommended) - ## Manually logging data - ## Logging data with the Braze API (recommended) - ## Logging data manually - ### Step 1: Configure app groups within Xcode - ### Step 2: Integrate code snippets - #### Saving custom events - #### Sending custom events to Braze - #### Saving custom attributes - #### Sending custom attributes to Braze - #### Saving user attributes - #### Sending user attributes to Braze - #### Helper files - [Rastrear sessões através do SDK da Braze](/docs/pt-br/developer_guide/analytics/tracking_sessions/index.md): Para wrapper SDKs não listados, use o método nativo relevante do Android ou Swift. - # Rastrear sessões {#track-sessions} - ## About the session lifecycle - ## Definindo inatividade {#defining-inactivity} - ### Como a inatividade é medida {#how-inactivity-is-measured} - ### Configuração de tempo limite de sessão {#session-timeout-configuration} - ### Exemplo: entendendo cenários de inatividade {#example-understanding-inactivity-scenarios} - ### Rastreamento de inatividade personalizada {#tracking-custom-inactivity} - ## Inscrever-se para receber atualizações de sessão {#subscribing-to-session-updates} - ### Etapa 1: Inscrever-se para receber atualizações {#step-1-subscribe-to-updates} - ### Etapa 2: Testar rastreamento de sessão (opcional) {#step-2-test-session-tracking-optional} - ## Alterando o tempo limite padrão da sessão {#change-session-timeout} - ## Solução de problemas {#troubleshooting} - ### Perfil de usuário tem 0 sessões {#user-profile-has-0-sessions} - ### Alguns usuários não estão registrando sessões {#some-users-are-not-logging-sessions} - [Rastrear local através do SDK Braze](/docs/pt-br/developer_guide/analytics/tracking_location/index.md): To get a user's current location, use the geolocation API's getCurrentPosition() method. This will immediately prompt the user to allow or disallow tracking (unless they've already done so). - # Rastrear local - ## Logging the current location - ## Continuously tracking the location - ## Logging the current location - ## Continuously tracking the location - ## Disabling continuous tracking - ## Logging the current location - ### Step 1: Configure your project - ### Step 2: Log the user's location - ## Prerequisites - ## Setting the last known location - ## Setting a custom location attribute - ## Requesting location initialization (Android only) - ## Geofences - ### Manually requesting geofences - [Rastrear desinstalações através do SDK do Braze](/docs/pt-br/developer_guide/analytics/tracking_uninstalls/index.md): The Android Braze SDK uses Firebase Cloud Messaging (FCM) to send silent push notifications, which are used to collect uninstall tracking analytics. If you haven't already, set up or migrate to the Firebase Cloud Messaging API for push notifications. - # Rastrear desinstalações - ## Setting up uninstall tracking - ### Step 1: Set up FCM - ### Step 2: Manually detect uninstall tracking (optional) - ### Step 3: Remove automatic server pings - ### Step 4: Enable uninstall tracking - ## Setting up uninstall tracking - ### Step 1: Enable background push - ### Step 2: Ignore internal push notifications - ### Step 3: Send a test push (optional) - ### Step 3: Enable uninstall tracking - [Gerenciar a coleta de dados para o SDK da Braze](/docs/pt-br/developer_guide/analytics/managing_data_collection/index.md): This guide uses code samples from the Braze Web SDK 4.0.0+. To upgrade to the latest Web SDK version, see SDK Upgrade Guide. - # Gerenciar a coleta de dados {#manage-data-collection} - ## Disabling data tracking - ### Best practices - ## Resuming data tracking - ## Google Play privacy questionnaire {#privacy-questionnaire} - ### Questions - ### Data collection - ## Disabling data tracking - ## Wiping previously-stored data - ## Resuming data tracking - ## Apple's privacy manifest {#privacy-manifest} - ### What is tracking data? - ### What is a privacy manifest? - ### API tracking-data domains - ## Declaring Braze tracking data - ### Prerequisites - ### Step 1: Review your current policies - ### Step 2: Create a privacy manifest - ### Step 3: Add your endpoint to the privacy manifest - ### Step 4: Declare your tracking data - ### Step 5: Prevent infinite retry loops - ## Disabling data tracking - ## Wiping previously-stored data - ## Resuming data tracking - ## IDFV collection - ### Considerations - #### SDK Version - #### Downstream - ### Frequently asked questions - #### Will this change impact my existing users in Braze? - #### Can I turn this feature off after turning it on? - #### Can I still capture the IDFV value via Braze elsewhere? - ## Prerequisites - ## Disabling data tracking - ## Resuming data tracking - ## Wiping data - ## Flushing data - ## Setting ad-tracking enabled - ## Updating the tracking property allow list (iOS only) - ## Prerequisites - ## Wiping previously-stored data - ### Step 1: Clear the registry sections - ### Step 2: Re-initialize the Braze SDK - [Sobre o servidor MCP Braze](/docs/pt-br/developer_guide/mcp_server/index.md): The locally hosted Braze MCP server (beta) is sunsetting this summer. It will continue to work, but we're no longer adding endpoints or supporting the beta. A remote, Braze-hosted MCP server is coming to Early Access this summer. - # The Braze MCP server - ## Sunsetting the locally hosted Braze MCP server - ## What is Model Context Protocol (MCP)? - ## About the Braze MCP server - ## Usage example - ## Frequently Asked Questions (FAQ) {#faq} - ### Which MCP clients are supported? - ### What Braze data can my MCP client access? - ### Can my MCP client change Braze data? - ### Can I use a third-party MCP server for Braze? - ### Why doesn't the Braze MCP server offer PII access? - ### Can I reuse my API keys? - ### Is the Braze MCP server hosted locally or remotely? - ### Why is Cursor only listing functions? - ### What do I do when the agent returns an answer that looks incorrect? - ## Disclaimer - [Configure o servidor Braze MCP](/docs/pt-br/developer_guide/mcp_server/setup/index.md): The locally hosted Braze MCP server (beta) is sunsetting this summer. It will continue to work, but we're no longer adding endpoints or supporting the beta. A remote, Braze-hosted MCP server is coming to Early Access this summer. - # Setting up the Braze MCP server - ## Prerequisites - ## Setting up the Braze MCP server - ### Step 1: Install uv - ### Step 2: Create an API key {#create-api-key} - #### Campaigns - #### Canvas - #### Catalogs - #### Cloud Data Ingestion - #### Content Blocks - #### Custom Attributes - #### Events - #### KPIs - #### Media Library - #### Messages - #### Preference Center - #### Purchases - #### Segments - #### Sends - #### Sessions - #### SDK Authentication Keys - #### Subscription - #### Templates - ### Step 3: Get your identifier and endpoint - ### Step 4: Configure your MCP client {#configure-client} - ### Step 5: Send a test prompt - ## Troubleshooting - ### Terminal errors - #### uvx command not found - #### spawn uvx ENOENT error - #### Package installation fails - ### Client configuration - #### "This extension is not compatible with your device" - #### MCP client can't find the Braze server - #### Authentication errors - #### Connection timeouts or network errors - ## Disclaimer - [Use o servidor MCP do Braze](/docs/pt-br/developer_guide/mcp_server/usage/index.md): The locally hosted Braze MCP server (beta) is sunsetting this summer. It will continue to work, but we're no longer adding endpoints or supporting the beta. A remote, Braze-hosted MCP server is coming to Early Access this summer. - # Using the Braze MCP server - ## Prerequisites - ## Best practices - ## Usage examples - ### What are my available Braze functions? - ### Get details about a Canvas ID - ### Show me my recent Canvases - ### Create an email template - ### Update a content block - ## Disclaimer - [Funções de API disponíveis no servidor Braze MCP](/docs/pt-br/developer_guide/mcp_server/available_api_functions/index.md): The locally hosted Braze MCP server (beta) is sunsetting this summer. It will continue to work, but we're no longer adding endpoints or supporting the beta. A remote, Braze-hosted MCP server is coming to Early Access this summer. - # Braze MCP server functions - ## Prerequisites - ## Available Braze API functions - ### General functions - ### Campaigns - ### Canvases - ### Catalogs - ### Cloud Data Ingestion - ### Content Blocks - ### Custom Attributes - ### Events - ### KPIs - ### Media Library - ### Messages - ### Preference Centers - ### Purchases - ### Segments - ### Sends - ### Sessions - ### SDK Authentication Keys - ### Subscription - ### Templates - ## Disclaimer - [Primeiros passos com o BrazeAI Decisioning Studio™](/docs/pt-br/developer_guide/decisioning_studio/index.md): BrazeAI Decisioning Studio™ replaces A/B testing with decisioning agents that personalize everything, and maximize any metric: drive dollars, not clicks—with Decisioning Studio, you can optimize any business metric. - # BrazeAI Decisioning Studio™ - ## What is BrazeAI Decisioning Studio™? - ## Key features - ## About Decisioning Studio - ### How it works - ### Decisioning Agents vs. BrazeAI Agents - ## Decisioning Studio Go vs. Decisioning Studio Pro - ### Decisioning Studio Go - ### Decisioning Studio Pro - ### About this guide - ## Next steps - [Integrar o BrazeAI Decisioning Studio™](/docs/pt-br/developer_guide/decisioning_studio/integration/index.md): While BrazeAI Decisioning Studio™ works best with Braze, a variety of other platforms are already supported. We'll continue updating our documentation so you'll have everything you need—even if you're not using Braze. - # Integrating BrazeAI Decisioning Studio™ - ## Prerequisites - ## Integrating decision studio - ### Step 1: Get your endpoint URL - ### Step 2: Create an API key - ### Step 3: Contact your BrazeAI Decisioning Studio™ customer success manager - [Criação de agentes para o BrazeAI Decisioning Studio™](/docs/pt-br/developer_guide/decisioning_studio/building_agents/index.md): While BrazeAI Decisioning Studio™ works best with Braze, a variety of other platforms are already supported. We'll continue updating our documentation so you'll have everything you need—even if you're not using Braze. - # Building AI decisioning agents - ## About agents - ## Sample agents - ## Building an agent - ### Prerequisites - ### Step 1: Contact AI Expert Services - ### Step 2: Design your agent - ### Step 3: Set up your delivery platform - ### Step 4: Launch and monitor - [Envio de mensagens usando a REST API](/docs/pt-br/developer_guide/rest_api/sending_messages/index.md): Essa abordagem funciona com qualquer canal de envio de mensagens suportado pela API (WhatsApp, e-mail, SMS, push, Content Cards, webhooks e mais). - # Envio de mensagens usando a REST API {#sending-messages-using-the-rest-api} - ## Duas maneiras de enviar {#two-ways-to-send} - ## Opção 1: Enviar com conteúdo da mensagem na requisição (/messages/send) {#option-1-send-with-message-content-in-the-request-messagessend} - ### Exemplo: mensagem de modelo do WhatsApp {#example-whatsapp-template-message} - ### Exemplo: e-mail {#example-email} - ## Opção 2: Disparar uma campanha com conteúdo no dashboard (/campaigns/trigger/send) {#option-2-trigger-a-campaign-with-content-in-the-dashboard-campaignstriggersend} - ### Etapa 1: Crie uma campanha disparada por API {#step-1-create-an-api-triggered-campaign} - ### Etapa 2: Dispare a campanha via API {#step-2-trigger-the-campaign-via-the-api} - ## Verifique sua integração {#verify-your-integration} - ## Considerações {#considerations} - [Envio de mensagens SMS usando a REST API](/docs/pt-br/developer_guide/rest_api/sending_sms_messages/index.md): Isso pode ser especialmente útil para envio de mensagens transacionais de alto volume, onde o conteúdo é definido nos seus sistemas de backend. Por exemplo, você pode notificar os consumidores quando eles receberem uma mensagem de outro usuário, convidando-os a visitar seu site e verificar sua caixa de entrada. - # Envio de mensagens SMS usando a REST API {#sending-sms-messages-using-the-rest-api} - ## Pré-requisitos {#prerequisites} - ## Etapa 1: Criar uma Campanha da API {#step-1-create-an-api-campaign} - ## Etapa 2: Enviar uma mensagem SMS usando a API {#step-2-send-an-sms-message-using-the-api} - ### Exemplo de solicitação {#example-request} - ## Etapa 3: Verificar sua integração {#step-3-verify-your-integration} - ## Considerações {#considerations} - [Enviando mensagens de e-mail usando a REST API](/docs/pt-br/developer_guide/rest_api/sending_email_messages/index.md): Isso pode ser especialmente útil para envio de mensagens transacionais em que o conteúdo é definido nos seus sistemas de backend. Por exemplo, você pode notificar consumidores quando eles recebem uma mensagem de outro usuário, convidando-os a visitar seu site e verificar a caixa de entrada. - # Enviando mensagens de e-mail usando a REST API {#sending-email-messages-using-the-rest-api} - ## Pré-requisitos {#prerequisites} - ## Etapa 1: Criar uma Campanha da API {#step-1-create-an-api-campaign} - ## Etapa 2: Enviar um e-mail usando a API {#step-2-send-an-email-using-the-api} - ### Exemplo de solicitação {#example-request} - ## Etapa 3: Verificar sua integração {#step-3-verify-your-integration} - ## Considerações {#considerations} - [Recomendando produtos aos usuários](/docs/pt-br/developer_guide/rest_api/recommending_products/index.md): Com essa abordagem, você pode: - # Recomendando produtos aos usuários {#recommending-products-to-users} - ## Pré-requisitos {#prerequisites} - ## Etapa 1: Armazenar recomendações nos perfis de usuário {#step-1-store-recommendations-on-user-profiles} - ### Exemplo de requisição {#example-request} - ## Etapa 2: Recuperar metadados de produtos {#step-2-retrieve-product-metadata} - ### Opção A: Catálogos da Braze {#option-a-braze-catalogs} - #### Recomendar um item específico do catálogo {#recommend-a-specific-catalog-item} - #### Recomendar múltiplos itens do catálogo {#recommend-multiple-catalog-items} - #### Criar modelos de itens usando a recomendação do usuário {#template-items-using-a-users-recommendation} - ### Opção B: Conteúdo conectado {#option-b-connected-content} - ## Etapa 3: Verificar sua integração {#step-3-verify-your-integration} - ## Considerações {#considerations} - [Localização](/docs/pt-br/developer_guide/localization/index.md): Além do inglês, a Braze oferece suporte a vários idiomas para mensagens do SDK exibidas no seu app. - # Localização {#localization} - ## Sobre a localização {#about-localization} - ## Supported language codes - [Geofences](/docs/pt-br/developer_guide/geofences/index.md): Before you can use this feature, you'll need to integrate the Android Braze SDK. - # Geofences {#geofences} - ## Prerequisites - ## Setting up geofences {#setting-up-geofences} - ### Step 1: Enable in Braze - ### Step 2: Update build.gradle - ### Step 3: Update the manifest - ### Step 4: Enable Braze location collection - ### Step 5: Obtain location permissions from the end user - ### Step 6: Manually request geofence updates (optional) - #### Step 6.1: Disable automatic geofence requests - #### Step 6.2: Manually request Braze geofence with GPS coordinate - ## Prerequisites - ## Setting up geofences {#setting-up-geofences} - ### Step 1: Enable in Braze - ### Step 2: Enable your app's location services - #### Step 2.1: Add the BrazeLocation module - #### Step 2.2: Update your Info.plist - ### Step 3: Enable geofences in your code - #### Step 3.1: Enable background reporting (optional) - ### Step 4: Request authorization {#request-authorization} - ## Manually request geofences {#manually-request-geofences} - ### Step 1: Set automaticGeofenceRequests to false - ### Step 2: Call requestGeofences manually - ## Frequently Asked Questions (FAQ) {#faq} - #### Why am I not receiving geofences on my device? - ##### iOS operating system limitations - ##### Rate limiting - #### How does it work if I am using both Braze and non-Braze geofence features? - #### Can the Geofences feature be used while a device is offline? - #### Why are geofences not monitored when my app is backgrounded/terminated? - ## Prerequisites - ## Prerequisites - ## Setting up geofences {#setting-up-geofences} - ### Step 1: Enable in Braze - ### Step 2: Add dependencies - ### Step 3: Update your AndroidManifest.xml - ### Step 4: Configure Braze location collection - ### Step 5: Request location permissions at runtime - ### Step 6: Manually request geofence updates (optional) - ### Step 2: Add dependencies - ### Step 3: Configure location usage in Info.plist - ### Step 4: Enable geofences in your Braze configuration - ### Step 5: Enable background location updates (optional) - ### Step 6: Request location authorization - ## Prerequisites - ## Setting up geofences {#setting-up-geofences} - ### Step 1: Enable in Braze - ### Step 2: Complete native Android setup - ### Step 3: Complete native iOS setup - ### Step 4: Request geofences from JavaScript - ### Step 5: Manually request geofences (optional) - [Armazenamento](/docs/pt-br/developer_guide/storage/index.md): Por padrão, a Braze coletará as seguintes propriedades no nível de dispositivo para permitir a personalização de mensagens com base no dispositivo, no idioma e no fuso horário: - # Armazenamento {#storage} - ## Propriedades do dispositivo {#device-properties} - ## Armazenamento de cookies (apenas web) {#cookies} - ### Alterando o vencimento do cookie {#cookie-expiry} - ### Desativando cookies {#disable-cookies} - [Configurações de rede para o SDK da Braze](/docs/pt-br/developer_guide/network/index.md): Network offline mode is an optional feature that pauses or resumes outbound network requests from the Braze SDK at any point during runtime. Events are not lost during the offline state. This reference article covers how to integrate this mode. - # Configurações de rede {#network-settings} - ## Network offline mode - ## Network traffic control - ### Requesting processing policies - ### Manually flushing user data - ### Setting the request processing policy - [Referências, repositórios e apps de exemplo do Braze SDK](/docs/pt-br/developer_guide/references/index.md): Para conteúdo de README de repositórios espelhados na documentação, consulte Guias de repositório. - # Referências, repositórios e apps de exemplo {#references-repositories-and-sample-apps} - ## Lista de recursos {#list-of-resources} - ## Criando um app de exemplo {#building-a-sample-app} - ### Compilando o "Droidboy" {#building-droidboy} - ### Compilando o "Hello Braze" {#building-hello-braze} - ### Compilando apps de teste Swift {#building-swift-test-apps} - [Guias de repositório](/docs/pt-br/developer_guide/sdk_repository_guides/index.md): Escolha entre os seguintes guias de repositório por plataforma: - # Guias de repositório {#repository-guides} - ## Guias de repositório disponíveis {#available-repository-guides} - [Guia do repositório do Web SDK](/docs/pt-br/developer_guide/sdk_repository_guides/web/index.md): - ## Sobre o Braze Web SDK {#about-the-braze-web-sdk} - ### O que você pode fazer {#what-you-can-do} - ## Pré-requisitos {#prerequisites} - ### Obtendo suas credenciais {#getting-your-credentials} - ## Instalação {#installation} - ## Início rápido {#quick-start} - ## Referência de configuração {#configuration-reference} - ### Opções de inicialização {#initialization-options} - ## Recursos principais {#core-features} - ### Inicialização e configuração {#initialization-setup} - #### Inicialização básica {#basic-initialization} - #### Opções avançadas de inicialização {#advanced-initialization-options} - ### Gerenciamento de usuários {#user-management} - #### Alterar usuário {#change-user} - #### Definir atributos do usuário {#set-user-attributes} - #### Definir localização do usuário {#set-user-location} - #### Aliases de usuário e grupos de inscrições {#user-aliases-and-subscription-groups} - #### Logout do usuário {#user-logout} - ### In-App Messages - #### Exibição automática {#automatic-display} - #### Exibição manual {#manual-display} - #### Tratamento personalizado de In-App Messages {#custom-in-app-message-handling} - #### Registrar interações com In-App Messages {#log-in-app-message-interactions} - #### In-App Messages com HTML personalizado {#custom-html-in-app-messages} - ### Content Cards - #### Exibir Content Cards {#display-content-cards} - #### Inscrever-se para atualizações de Content Cards {#subscribe-to-content-cards-updates} - #### Registrar interações com Content Cards {#log-content-card-interactions} - #### Filtrar Content Cards {#filter-content-cards} - #### Solicitar atualização de Content Cards {#request-content-cards-refresh} - #### Content Cards personalizados {#custom-content-cards} - ### Notificações por push {#push-notifications} - #### Solicitar permissão de push {#request-push-permission} - #### Verificar suporte a push {#check-push-support} - #### Cancelar registro de push {#unregister-push} - ### Feature Flags {#feature-flags} - #### Obter Feature Flag {#get-feature-flag} - #### Inscrever-se para atualizações de Feature Flags {#subscribe-to-feature-flag-updates} - #### Registrar impressões de Feature Flags {#log-feature-flag-impressions} - #### Solicitar atualização de Feature Flags {#request-feature-flags-refresh} - ### Banners {#banners} - #### Obter e exibir banners {#get-and-display-banners} - #### Inscrever-se para atualizações de banners {#subscribe-to-banner-updates} - #### Solicitar atualização de banners {#request-banner-refresh} - ### Análise de dados e eventos {#analytics-events} - #### Registrar eventos personalizados {#log-custom-events} - #### Registrar compras {#log-purchases} - #### Solicitar envio imediato de dados {#request-data-flush} - ### Gerenciamento de sessões {#session-management} - #### Abrir sessão {#open-session} - #### Verificar status do SDK {#check-sdk-status} - #### Ativar/desativar SDK {#enabledisable-sdk} - ### Gerenciamento de dados {#data-management} - #### Limpar dados {#wipe-data} - #### Destruir SDK {#destroy-sdk} - #### Obter ID do dispositivo {#get-device-id} - #### Autenticação do SDK {#sdk-authentication} - #### Inscrever-se para falhas de autenticação {#subscribe-to-authentication-failures} - ## Padrões de integração {#integration-patterns} - ### Frameworks SSR {#ssr-frameworks} - ### Vite - ### Framework Jest {#jest-framework} - ### Asynchronous Module Definition (AMD) {#asynchronous-module-definition-amd} - #### Desativar suporte a AMD {#disable-amd-support} - #### Carregador de módulos {#module-loader} - ### Accelerated Mobile Pages (AMP) {#accelerated-mobile-pages-amp} - ### Electron - ### Integração via CDN {#cdn-integration} - ### Service Worker (notificações por push) {#service-worker-push-notifications} - ### Gerenciadores de tags {#tag-managers} - #### Tealium iQ - #### Outros gerenciadores de tags {#other-tag-managers} - ## Bibliotecas {#libraries} - ## Navegadores compatíveis {#supported-browsers} - ## Depuração e solução de problemas {#debugging-troubleshooting} - ## Font Awesome - ## Recursos adicionais {#additional-resources} - ## Fale com a gente {#contact} - [Guia do repositório do Android SDK](/docs/pt-br/developer_guide/sdk_repository_guides/android/index.md): - ## Sobre o Android SDK da Braze {#about-the-braze-android-sdk} - ## Início rápido {#quickstart} - ## Suporte de versão {#version-support} - ## Módulos {#modules} - ## Fale conosco {#contact} - [Guia do repositório do Swift SDK](/docs/pt-br/developer_guide/sdk_repository_guides/swift/index.md): - ## Sobre o Braze Swift SDK {#about-the-braze-swift-sdk} - ## Início rápido {#quickstart} - ## Suporte de versão {#version-support} - ## Gerenciadores de pacotes {#package-managers} - ## Bibliotecas {#libraries} - ## Exemplos {#examples} - ## Repositórios alternativos {#alternative-repositories} - ## Contato {#contact} - [Guia do repositório do JavaScript SDK](/docs/pt-br/developer_guide/sdk_repository_guides/javascript/index.md): - ## Sobre o Braze JavaScript SDK {#about-the-braze-javascript-sdk} - ### Visão geral da arquitetura {#architecture-overview} - ## Início rápido {#quickstart} - ## Pré-requisitos {#prerequisites} - ### Obtendo suas credenciais {#getting-your-credentials} - ## Integração {#integration} - ### Chamando a API {#calling-the-api} - ### Conceitos principais {#core-concepts} - #### Implementações obrigatórias {#required-implementations} - #### Envio de dados (Data Flushing) {#data-flushing} - ### Padrões de integração {#integration-patterns} - #### Integração básica {#basic-integration} - #### Implementação de armazenamento personalizado {#custom-storage-implementation} - #### Implementação de rede personalizada {#custom-network-implementation} - #### Tratamento de erros {#error-handling} - #### Gerenciamento de inscrições {#subscription-management} - ### Casos de uso comuns {#common-use-cases} - #### Identificação de usuário e rastreamento de atributos {#user-identification-and-attribute-tracking} - #### Registro de eventos e análise de dados {#event-logging-and-analytics} - #### Tratamento de mensagens no app {#in-app-message-handling} - ### Tratamento de erros e casos extremos {#error-handling-edge-cases} - #### Condições de erro comuns {#common-error-conditions} - ### Notas importantes de implementação {#important-implementation-notes} - ## Depuração / Solução de problemas {#debugging-troubleshooting} - ## Fale com a gente {#contact} - [Guia do repositório do Cordova SDK](/docs/pt-br/developer_guide/sdk_repository_guides/cordova/index.md): - ## Sobre o Cordova SDK da Braze {#about-the-braze-cordova-sdk} - ## Requisitos mínimos de versão {#minimum-version-requirements} - ## Instalando o SDK {#installing-the-sdk} - ## Executando o aplicativo de exemplo {#running-the-sample-application} - [Guia do repositório do Flutter SDK](/docs/pt-br/developer_guide/sdk_repository_guides/flutter/index.md): - ## Sobre o Braze Flutter SDK {#about-the-braze-flutter-sdk} - ## Início rápido {#quickstart} - ### Android - ### iOS - ### Dart - ## Suporte de versão {#version-support} - ## App de exemplo {#sample-app} - ## Fale conosco {#contact} - [Guia do repositório do React Native SDK](/docs/pt-br/developer_guide/sdk_repository_guides/react_native/index.md): - ## Sobre o Braze React Native SDK {#about-the-braze-react-native-sdk} - ### O que você pode fazer {#what-you-can-do} - ## Pré-requisitos {#prerequisites} - ## Instalação {#installation} - ## Início rápido {#quick-start} - ## Configuração nativa {#native-setup} - ### Android - ### iOS - ## Referência de configuração {#configuration-reference} - ### Android (braze.xml) - ### iOS (Braze.Configuration) - ## API JavaScript / TypeScript {#javascript-typescript-api} - ## Recursos principais {#core-features} - ### Gerenciamento de usuários {#user-management} - ### Mensagens no app {#in-app-messages} - ### Content Cards - ### Banners - ### Notificações por push {#push-notifications} - ### Feature Flags - ### Análise de dados e compras {#analytics-and-purchases} - ### Gerenciamento de dados e estado do SDK {#data-management-and-sdk-state} - ## Eventos {#events} - ## Notas de integração {#integration-notes} - ## - Jest: faça mock dos módulos nativos do react-native ou do Turbo module da Braze (consulte tests/jest.setup.js neste repositório para padrões). {#jest-mock-react-native-native-modules-or-the-braze-turbo-module-see-testsjestsetupjs-in-this-repo-for-patterns} - ## Suporte de versão {#version-support} - ## Plugin Braze Expo {#braze-expo-plugin} - ## App de exemplo {#sample-app} - ## Depuração e solução de problemas {#debugging-and-troubleshooting} - ## Recursos adicionais {#additional-resources} - ## Contato {#contact} - [Guia do repositório do Roku SDK](/docs/pt-br/developer_guide/sdk_repository_guides/roku/index.md): - ## Sobre o Braze Roku SDK {#about-the-braze-roku-sdk} - ## Integração inicial do SDK {#initial-sdk-integration} - ## Etapa 1: Adicionar arquivos {#step-1-add-files} - ## Etapa 2: Adicionar referências {#step-2-add-references} - ## Etapa 3: Configurar {#step-3-configure} - ## Etapa 4: Inicializar Braze {#step-4-initialize-braze} - ## Configuração de mensagens no app {#in-app-message-setup} - ## Integração básica do SDK concluída {#basic-sdk-integration-complete} - ## Referência adicional {#additional-reference} - [Guia do repositório do Unity SDK](/docs/pt-br/developer_guide/sdk_repository_guides/unity/index.md): - ## Sobre o Braze Unity SDK {#about-the-braze-unity-sdk} - ## Configuração do plugin {#plugin-setup} - ## Configuração da integração {#integration-setup} - ## Fale com o suporte {#contact} - [Guia do repositório do SDK .NET MAUI (Xamarin)](/docs/pt-br/developer_guide/sdk_repository_guides/xamarin/index.md): - ## Sobre o SDK .NET MAUI (Xamarin) da Braze {#about-the-braze-net-maui-xamarin-sdk} - ## Componentes {#components} - ## Versionamento {#versioning} - ### Bindings nativos {#native-bindings} - ### Xamarin e Xamarin.Forms {#xamarin-xamarinforms} - ## Dúvidas? {#questions} - [Changelogs](/docs/pt-br/developer_guide/changelogs/index.md): Você também pode encontrar uma cópia do changelog do SDK do Braze no GitHub. - # Changelogs do SDK da Braze - [Divulgações e Qualificações](/docs/pt-br/developer_guide/disclosures/index.md) - [Divulgação de vulnerabilidades de segurança](/docs/pt-br/developer_guide/disclosures/security_and_vulnerability_disclosure/index.md):