Notificações push do iOS são essenciais para impulsionar o engajamento e retenção sustentados do usuário no seu aplicativo iOS. Elas permitem que você entregue atualizações em tempo real, lembretes e mensagens personalizadas diretamente aos seus usuários, melhorando a experiência geral do usuário e a aderência do seu aplicativo. Ao integrar o SDK do OneSignal com seu aplicativo, você pode aproveitar o Apple Push Notification Service (APNS) para garantir que suas notificações sejam entregues perfeitamente em dispositivos iOS. Este guia irá orientá-lo na integração do nosso SDK ao seu aplicativo iOS.
Create a new app by clicking New App/Website, or add a platform to an existing app in Settings > Push & In-App. Select the platform(s) you want to configure and click Next: Configure Your Platform.
Click Save & Continue after entering your credentials.
3
Save your App ID and install the SDK
Your App ID is displayed on the final screen. Copy and save it — you need it when initializing the SDK. Select your SDK platform, then follow the setup guide.
Use o mesmo App Group ID que você adicionou no passo 3.
Vá para OneSignalNotificationServiceExtension > Signing & Capabilities
Adicione App Groups
Adicione o mesmo group ID exato
Se você está usando um nome de App Group customizado e não group.your_bundle_id.onesignal, então certifique-se de adicionar seu App Group ID ao Info.plist tanto do App Target quanto do OneSignalNotificationServiceExtension Target! Veja o passo 3 para mais informações.
Navegue até a pasta OneSignalNotificationServiceExtension
Substitua o conteúdo do arquivo NotificationService.swift ou NotificationService.m pelo seguinte:
import UserNotificationsimport OneSignalExtensionclass NotificationService: UNNotificationServiceExtension { var contentHandler: ((UNNotificationContent) -> Void)? var receivedRequest: UNNotificationRequest! var bestAttemptContent: UNMutableNotificationContent? // Note this extension only runs when `mutable_content` is set // Setting an attachment or action buttons automatically sets the property to true override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) { self.receivedRequest = request self.contentHandler = contentHandler self.bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent) if let bestAttemptContent = bestAttemptContent { // DEBUGGING: Uncomment the 2 lines below to check this extension is executing// print("Running NotificationServiceExtension")// bestAttemptContent.body = "[Modified] " + bestAttemptContent.body OneSignalExtension.didReceiveNotificationExtensionRequest(self.receivedRequest, with: bestAttemptContent, withContentHandler: self.contentHandler) } } override func serviceExtensionTimeWillExpire() { // Use this as an opportunity to deliver your "best attempt" at modified content, otherwise the original push payload will be used. if let contentHandler = contentHandler, let bestAttemptContent = bestAttemptContent { OneSignalExtension.serviceExtensionTimeWillExpireRequest(self.receivedRequest, with: self.bestAttemptContent) contentHandler(bestAttemptContent) } }}
Você deve ver um erro porque o pacote OneSignal não está instalado. Isso será resolvido no próximo passo.
Esta seção irá guiá-lo na integração dos recursos principais do OneSignal. Ao final desta seção, você terá uma integração básica com nosso SDK permitindo que você acione mensagens no aplicativo e receba notificações push.
Adicione nosso SDK usando o Xcode Package Dependencies Manager (Swift Package Manager) ou CocoaPods. Existem 4 bibliotecas disponíveis. Se você não quer Mensagens no aplicativo e/ou rastreamento de localização, você pode omitir esses pacotes.
Biblioteca
Target
Necessário
OneSignalExtension
OneSignalNotificationServiceExtension
✅
OneSignalFramework
App
✅
OneSignalInAppMessages
App
Recomendado
OneSignalLocation
App
Opcional
Xcode Package Dependencies
CocoaPods
Navegue até File > Add Package Dependencies… e insira a URL para o repositório do OneSignal SDK:https://github.com/OneSignal/OneSignal-XCFrameworkSelecione o pacote onesignal-xcframework e clique em Add Package.Escolha Package Products para OneSignal-XCFramework.
Importante: Adicione o OneSignalExtension ao OneSignalNotificationServiceExtension Target.
Adicione o OneSignalFramework ao seu App Target.
Se você planeja usar mensagens no aplicativo (recomendado) e/ou rastreamento de localização, então adicione esses pacotes ao seu App Target também.
Requisitos: CocoaPods 1.16.2+ (Instruções de configuração usam CocoaPods 1.16.2).Abra seu Podfile e adicione o seguinte:
Podfile
# If platform is uncommented, set to the same value as your minimum deployment target in Xcode # platform :ios, '15.0' target 'your_project_name' do pod 'OneSignal/OneSignal', '>= 5.2.9', '< 6.0' # If your app does not use In-App messages, you can remove this: pod 'OneSignal/OneSignalInAppMessages', '>= 5.2.9', '< 6.0' # If your app does not use CoreLocation, you can remove this: pod 'OneSignal/OneSignalLocation', '>= 5.2.9', '< 6.0' # Your other pods here end target 'OneSignalNotificationServiceExtension' do pod 'OneSignal/OneSignal', '>= 5.2.9', '< 6.0' end
Adicione as dependências ao seu main app target e OneSignalNotificationServiceExtension target. Se platform estiver descomentado, certifique-se de que é o mesmo valor do minimum deployment target no Xcode.Execute o seguinte comando para baixar o pod do OneSignal iOS SDK e adicioná-lo ao seu projeto:pod repo update && pod installUma vez que a instalação estiver completa, certifique-se de abrir o arquivo XCWorkspace nomeado após seu projeto (ex.: <project-name>.xcworkspace)
Ao usar o pod do OneSignal iOS SDK, você deve usar exclusivamente o arquivo .xcworkspace para abrir o projeto.
Você pode encontrar os seguintes erros, aqui está como você pode resolvê-los.
ArgumentError - \[Xcodeproj] Unable to find compatibility version string for
object version `70`.
CocoaPods depende da gem Ruby xcodeproj para ler seus arquivos de projeto Xcode. Até agora, o lançamento mais recente do xcodeproj não reconhece object version 70, que foi introduzida pelo Xcode 16. Então quando CocoaPods tenta abrir seu arquivo .xcodeproj, ele falha com este erro.
Feche o Xcode.
Navegue até o arquivo ios/<your-app>.xcodeproj/project.pbxproj do seu projeto.
Altere esta linha: objectVersion = 70;
Substitua por: objectVersion = 55;
Salve, feche e execute novamente cd ios pod install cd ..
Dependendo da configuração de interface do seu Xcode, inicialize o OneSignal seguindo estas opções.
SwiftUI
Storyboard
Se estiver usando interface SwiftUI, navegue até seu arquivo <APP_NAME>App.swift e inicialize o OneSignal com os métodos fornecidos.Substitua YOUR_APP_ID pelo seu App ID do OneSignal encontrado no painel do OneSignal Settings > Keys & IDs. Se você não tem acesso ao aplicativo OneSignal, peça aos seus Team Members para convidá-lo.
import SwiftUIimport OneSignalFramework@mainstruct YOURAPP_NAME: App { //Connect the SwiftUI app to the UIKit app delegate @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate var body: some Scene { WindowGroup { ContentView() } }}class AppDelegate: NSObject, UIApplicationDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool { // Habilite log detalhado para debugging (remova em produção) OneSignal.Debug.setLogLevel(.LL_VERBOSE) // Inicialize com seu OneSignal App ID OneSignal.initialize("YOUR_APP_ID", withLaunchOptions: launchOptions) // Use este método para solicitar notificações push. // Recomendamos remover este método após testes e, em vez disso, usar mensagens no aplicativo para solicitar permissão de notificação. OneSignal.Notifications.requestPermission({ accepted in print("User accepted notifications: \(accepted)") }, fallbackToSettings: false) return true }}
Se estiver usando interface Storyboard, navegue até seu arquivo AppDelegate e inicialize o OneSignal com os métodos fornecidos.Substitua YOUR_APP_ID pelo seu App ID do OneSignal encontrado no painel do OneSignal Settings > Keys & IDs. Se você não tem acesso ao aplicativo OneSignal, peça aos seus Team Members para convidá-lo.
//AppDelegate.swiftimport UIKitimport OneSignalFramework@UIApplicationMainclass AppDelegate: UIResponder, UIApplicationDelegate {func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions:[UIApplication.LaunchOptionsKey: Any]?) -> Bool { // Habilite log detalhado para debugging (remova em produção) OneSignal.Debug.setLogLevel(.LL_VERBOSE) // Inicialize com seu OneSignal App ID OneSignal.initialize("YOUR_APP_ID", withLaunchOptions: launchOptions) // Use este método para solicitar notificações push. // Recomendamos remover este método após testes e, em vez disso, usar mensagens no aplicativo para solicitar permissão de notificação. OneSignal.Notifications.requestPermission({ accepted in print("User accepted notifications: \(accepted)") }, fallbackToSettings: false) return true}// Conteúdo restante da sua classe AppDelegate...}
Este guia ajuda você a verificar se a integração do OneSignal SDK está funcionando corretamente testando notificações push, registro de assinatura e mensagens no aplicativo.
O prompt de permissão push nativo deve aparecer automaticamente se você adicionou o método requestPermission durante a inicialização.
2
Verifique seu painel do OneSignal
Antes de aceitar o prompt, verifique o painel do OneSignal:
Vá para Audience > Subscriptions.
Você deve ver uma nova entrada com o status “Never Subscribed”.
3
Retorne ao aplicativo e toque em Allow no prompt.
4
Atualize a página de Subscriptions do painel OneSignal.
O status da assinatura agora deve mostrar Subscribed.
Você criou com sucesso uma assinatura mobile.
Assinaturas mobile são criadas quando usuários abrem seu aplicativo pela primeira vez em um dispositivo ou se eles desinstalarem e reinstalarem seu aplicativo no mesmo dispositivo.
Assinaturas de teste são úteis para testar uma notificação push antes de enviar uma mensagem.
1
Adicionar a Test Users.
No painel, ao lado da assinatura, clique no botão Options (três pontos) e selecione Add to Test Users.
2
Nomeie sua assinatura.
Nomeie a assinatura para que você possa identificar facilmente seu dispositivo mais tarde na aba Test Users.
3
Crie um segmento de usuários de teste.
Vá para Audience > Segments > New Segment.
4
Nomeie o segmento.
Nomeie o segmento Test Users (o nome é importante porque será usado mais tarde).
5
Adicione o filtro Test Users e clique em Create Segment.
Você criou com sucesso um segmento de usuários de teste.
Agora podemos testar o envio de mensagens para este dispositivo individual e grupos de usuários de teste.
Se todos os passos de configuração foram concluídos com sucesso, as assinaturas de teste devem receber uma notificação com uma imagem incluída:
Imagens aparecerão pequenas na visualização de notificação recolhida. Expanda a notificação para ver a imagem completa.
5
Verifique confirmed receipt.
No seu painel, vá para Delivery > Sent Messages, depois clique na mensagem para ver estatísticas.Você deve ver a estatística confirmed, significando que o dispositivo recebeu o push.
Você enviou com sucesso uma notificação através da nossa API para um segmento.
Não recebeu confirmed receipt? Revise o guia de solução de problemas aqui.
Tendo problemas? Copie e cole a requisição api e um log do início ao fim do lançamento do aplicativo em um arquivo .txt. Então compartilhe ambos com support@onesignal.com.
Mensagens no aplicativo permitem que você se comunique com usuários enquanto eles estão usando seu aplicativo.
1
Feche ou coloque seu aplicativo em segundo plano no dispositivo.
Isso é porque usuários devem atender aos critérios de público de mensagens no aplicativo antes que uma nova sessão inicie. No OneSignal, uma nova sessão inicia quando o usuário abre seu aplicativo depois que ele esteve em segundo plano ou fechado por pelo menos 30 segundos. Para mais detalhes, consulte nosso guia sobre como mensagens no aplicativo são exibidas.
2
Crie uma mensagem no aplicativo.
No seu painel OneSignal, navegue até Messages > In-App > New In-App.
Encontre e selecione a mensagem Welcome.
Defina seu Audience como o segmento Test Users que usamos anteriormente.
3
Personalize o conteúdo da mensagem se desejar.
4
Defina Trigger como 'On app open'.
5
Agende a frequência.
Em Schedule > How often do you want to show this message? selecione Every time trigger conditions are satisfied.
6
Torne a mensagem ativa.
Clique em Make Message Live para que ela esteja disponível para seus Test Users cada vez que eles abrirem o aplicativo.
7
Abra o aplicativo e veja a mensagem.
Depois que a mensagem no aplicativo estiver ativa, abra seu aplicativo. Você deve vê-la exibida:
Não está vendo a mensagem?
Inicie uma nova sessão
Você deve fechar ou colocar o aplicativo em segundo plano por pelo menos 30 segundos antes de reabrir. Isso garante que uma nova sessão seja iniciada.
Se você reinstalou ou trocou de dispositivo, adicione novamente o dispositivo às Test Users e confirme que ele faz parte do segmento Test Users.
Tendo problemas?
Siga Obtendo um Debug Log enquanto reproduz os passos acima. Isso gerará logging adicional que você pode compartilhar com support@onesignal.com e nós ajudaremos a investigar o que está acontecendo.
Você configurou com sucesso o OneSignal SDK e aprendeu conceitos importantes como:
Anteriormente, demonstramos como criar Assinaturas mobile. Agora vamos expandir para identificar Usuários através de todas as suas assinaturas (incluindo push, email e SMS) usando o OneSignal SDK. Vamos cobrir External IDs, tags, assinaturas multicanal, privacidade e rastreamento de eventos para ajudá-lo a unificar e engajar usuários através de plataformas.
Use um External ID para identificar usuários consistentemente através de dispositivos, endereços de email e números de telefone usando o identificador de usuário do seu backend. Isso garante que suas mensagens permaneçam unificadas através de canais e sistemas de terceiros (especialmente importante para Integrações).Defina o External ID com o método login do nosso SDK cada vez que eles forem identificados pelo seu aplicativo.
O OneSignal gera IDs únicos somente leitura para assinaturas (Subscription ID) e usuários (OneSignal ID).À medida que usuários baixam seu aplicativo em diferentes dispositivos, se inscrevem no seu site e/ou fornecem endereços de email e números de telefone fora do seu aplicativo, novas assinaturas serão criadas.Definir o External ID através do nosso SDK é altamente recomendado para identificar usuários através de todas as suas assinaturas, independentemente de como elas são criadas.
Tags são pares chave-valor de dados string que você pode usar para armazenar propriedades de usuário (como username, role ou preferências) e eventos (como purchase_date, game_level ou interações do usuário). Tags alimentam Personalização de mensagens e Segmentação avançadas permitindo casos de uso mais avançados.Defina tags com os métodos addTag e addTags do nosso SDK conforme eventos ocorrem no seu aplicativo.Neste exemplo, o usuário alcançou o nível 6 identificável pela tag chamada current_level definida com um valor de 6.
Podemos criar um segmento de usuários que têm um nível entre 5 e 10, e usar isso para enviar mensagens direcionadas e personalizadas:
Anteriormente vimos como nosso SDK cria assinaturas mobile para enviar mensagens push e no aplicativo. Você também pode alcançar usuários através de canais de email e SMS criando as assinaturas correspondentes.
Se o endereço de email e/ou número de telefone já existir no aplicativo OneSignal, o SDK irá adicioná-lo ao usuário existente, não criará duplicatas.Você pode visualizar usuários unificados através de Audience > Users no painel ou com a API View user.
Melhores práticas para comunicação multicanal
Obtenha consentimento explícito antes de adicionar assinaturas de email ou SMS.
Explique os benefícios de cada canal de comunicação aos usuários.
Forneça preferências de canal para que os usuários possam selecionar quais canais eles preferem.
Em vez de chamar requestPermission() imediatamente ao abrir o aplicativo, adote uma abordagem mais estratégica. Use uma mensagem no aplicativo para explicar o valor das notificações push antes de solicitar permissão.Para melhores práticas e detalhes de implementação, consulte nosso guia Solicitar permissões push.
Ouvir eventos de push, usuário e mensagens no aplicativo
Use os listeners do SDK para reagir a ações do usuário e mudanças de estado.O SDK fornece vários event listeners para você se conectar. Consulte nosso guia de referência do SDK para mais detalhes.
Por padrão, o SDK do OneSignal usa method swizzling para lidar automaticamente com os métodos de delegado de notificação push. Se seu aplicativo precisar desativar o swizzling (por exemplo, para evitar conflitos com outros SDKs ou para manter controle total sobre os métodos de delegado de notificação), você pode optar por sair via Info.plist.Quando o swizzling está desativado, você deve encaminhar manualmente os métodos de delegado de notificação para o SDK do OneSignal. Todos os outros recursos do SDK (listeners, observers, mensagens in-app, outcomes, etc.) continuam funcionando normalmente.
Adicione o seguinte ao Info.plist do seu aplicativo:
<key>OneSignal_disable_swizzling</key><true/>
Quando o SDK detecta esse flag, ele ignora todo o method swizzling na inicialização e registra um aviso lembrando você de implementar o encaminhamento manual.
Etapa 2. Definir o delegado do UNUserNotificationCenter
Defina seu AppDelegate como delegado do UNUserNotificationCenterantes de chamar OneSignal.initialize. Sem isso, a exibição de notificações em primeiro plano e o tratamento de toques em notificações não funcionarão.
// In application(_:didFinishLaunchingWithOptions:), BEFORE OneSignal.initialize()UNUserNotificationCenter.current().delegate = self
Exibição de notificações em primeiro plano:O SDK chama seu completion block com um objeto OSNotification. Se não for nil, o SDK quer que a notificação seja exibida — passe suas opções de apresentação preferidas. Se for nil (por exemplo, uma pré-visualização do IAM), não passe opções de apresentação.
O listener de ciclo de vida onWillDisplayNotification e as APIs preventDefault / display continuam funcionando com o encaminhamento manual. O SDK invoca seus listeners a partir de handleWillPresentNotificationInForegroundWithPayload.
Quando o swizzling está desativado, o SDK não pode interceptar alterações de badge. Use este método para definir a contagem de badges e manter o cache interno de badges do OneSignal sincronizado:
Aplicativos SwiftUI não têm um AppDelegate por padrão. Use @UIApplicationDelegateAdaptor para adicionar um e, em seguida, implemente todos os métodos de encaminhamento mostrados acima:
Swift
@mainstruct YourApp: App { @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate var body: some Scene { WindowGroup { ContentView() } }}class AppDelegate: NSObject, UIApplicationDelegate, UNUserNotificationCenterDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil) -> Bool { UNUserNotificationCenter.current().delegate = self OneSignal.initialize("YOUR_APP_ID", withLaunchOptions: launchOptions) return true } // Implement all the forwarding methods shown above}
Certifique-se de ter habilitado todos os recursos principais revisando o guia de Configuração de push mobile.Para detalhes completos sobre métodos disponíveis e opções de configuração, visite a Referência do Mobile SDK.
Parabéns! Você completou com sucesso o guia de configuração do Mobile SDK.
Need help?Chat with our Support team or email support@onesignal.comPlease include:
Details of the issue you’re experiencing and steps to reproduce if available
Your OneSignal App ID
The External ID or Subscription ID if applicable
The URL to the message you tested in the OneSignal Dashboard if applicable