Integração iOS - CocoaPods
Compatibilidade
Essa implementação da SDK contempla apenas apps iOS desenvolvidos em SWIFT. Caso seu app seja desenvolvido em Objective-c acesse esse link
1 - Instalação
Para instalação da biblioteca, utilize o CocoaPods. No arquivo de Podfile adicione a seguinte linha para o projeto principal:
pod 'Inngage/Core'
Para os targets projetos de extensão, como Notification Service Extension e Notification Content Extension, que trabalha com os códigos específicos de notificação remota, insira a seguinte linha:
pod 'Inngage/NotificationExtension'
O projeto é separado em 2 modulos, o Core que possui seu escopo para gerenciamento de push notifications quando o aplicativo é aberto, e o NotificationExtension que gerencia os Push Notifications de bandeja, assim como Rich Push Notification.
Ainda no arquivo de Podfile, insira o seguinte post script, para desabilitar validações cujo não sejam designadas para API na compilação dos frameworks de extensão:
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['APPLICATION_EXTENSION_API_ONLY'] = 'NO'
end
end
end
Depois só executar o comando pod install no terminal, na pasta do projeto. A partir deste momento será utilizado o arquivo com a extensão .xcworkspace.
No projeto Example pode se verificar como o arquivo de Podfile foi escrito e atribuido os códigos descritos.
2 - Configuração
Projeto
É necessário configurar o projeto para que possua o Capabilities, que se encontra no arquivo .xcproject aberto direto pela raiz do projeto no Xcode na aba Signing & Capabilities. Habilitando o Push Notification e o Background modes os atributos Background fetch e Remote notifications.
Handle Notification
No projeto, no arquivo AppDelegate é necessário fazer algumas configurações para o funcionamento do SDK, para sincronia com a plataforma Inngage.
É necessário importar o SDK:
#import <Inngage/PushNotificationManager.h>
Incluindo as seguintes variáveis de classe.
var pushNotificationManager = PushNotificationManager.sharedInstance()
var userInfoDictionary: [String: Any]?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
pushNotificationManager?.inngageAppToken = "APP_TOKEN"
pushNotificationManager?.inngageApiEndpoint = "https://api.inngage.com.br/v1"
pushNotificationManager?.defineLogs = true
pushNotificationManager?.enabledShowAlertWithUrl = false
pushNotificationManager?.enabledAlert = false
if let userInfo = launchOptions?[UIApplication.LaunchOptionsKey.remoteNotification] as? [String: Any] {
self.userInfoDictionary = userInfo
}
return true
}
É necessário inserir o Token disponibilizado no console do Inngage para o direcionamento das chamadas do seu applicativo. Algumas variáveis estão disponíveis para configuração do SDK.
defineLogs (BOOL): Permite a visualização dos logs no console do Xcode.
enabledAlert (BOOL): Quando enviado um Push Notification sem URL, caso o usuário abra a notificação, quando o aplicativo estiver em modo ativo, será mostrado um alerta padrão do sistema, com o titulo e o texto da notificação enviada.
enabledShowAlerWithUrl (BOOL): Quando enviado um push notification contendo uma URL, o mesmo não mostra um Alert caso seja definido com o valor false. Esse atributo funciona quando o atributo enabledAlert possui o valor true.
- (void)application:(UIApplication *)application didRegisterUserNotificationSettings: (UIUserNotificationSettings
*)notificationSettings
{
[application registerForRemoteNotifications];
[manager handlePushRegisterForRemoteNotifications:notificationSettings];
}
Adicione as seguintes linhas de código na sua aplicação
//Este trecho realizará o registro do usuário na API de push notification, assim como as informações de device do mesmo, para disponibilização de novos push.
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
let userInfo = ["name": "XXX"]
pushNotificationManager?.handlePushRegistration(deviceToken, identifier: "USER_IDENTIFIER", customField: userInfo)
if let userInfoDictionary = userInfoDictionary {
pushNotificationManager?.handlePushReceived(userInfoDictionary, messageAlert: true)
}
}
//Este trecho registrará os casos de falha do registro de push notification.
func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
pushNotificationManager?.handlePushRegistrationFailure(error)
}
//Este trecho de código enviará o log para o servidor da Inngage sobre o recebimento do push.
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
pushNotificationManager?.handlePushReceived(userInfo, messageAlert: true)
}
N
Notification Service Extension
No projeto, é necessário configurar uma nova extensão no seu arquivo raiz .xcodeproj diretamente pelo Xcode. Assim adicionando a extensão de Notification Service Extension.
Uma nova sequência de arquivos será gerada. Caso o projeto seja na linguagem Objective-C, deverá ser adicionado o seguinte código no seguinte método:
override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
self.contentHandler = contentHandler
bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent)
NotificationManager.prepareNotification(with: request, andBestAttempt: bestAttemptContent) { [weak self] (bestAttemptContent) in
if let bestAttemptContent = bestAttemptContent {
self?.contentHandler?(bestAttemptContent)
}
}
}
Send Event
func application(_ application: UIApplicationdid, RegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
let eventValue = ["produto": "Bola de tenis"]
pushNotificationManager?.handleSendEvent(deviceToken, identifier: "USER_IDENTIFIER",eventName: "nome do evento",conversionValue:10.0,registration:"",conversionEvent:true,conversionNotId:"EE432423reRTF" ,eventValues: eventValue)
}
Temos 3 valores que são obrigatórios para podermos ter uma boa performance e integração com Inngage
eventName: Define o nome que voce ira enviar para voce poder identificar de forma rápida na plataforma
appToken: Precisamos validar suas credenciais.
Identifier ou registration (Firebase token): usamos pra identificar o usuário, pelo menos uma deve ser informada;
Você também pode adicionar valores avançados para esse evento,
eventValues: Array com chave e valor com dados que serão anexados ao evento.
A API de eventos também pode receber um evento de conversão, para isso existem os campos:
conversion_event: True
conversion_value: Valor monetário da conversão (Padrão FLOAT 11000.00)
conversion_notid: Opção para enviar o ID Único da Notificação da Inngage (NOTID), que foi recebido pelo app no momento do Push, para assim atribuir uma conversão a determinado Push
É necessário importar a seguinte classe: #import <Inngage/NotificationManager.h>.
Este trecho de código irá realizar a configuração das notificações remotas quando chegarem para o usuário final.
Notification Content Extension
No projeto, é necessário configurar uma nova extensão no seu arquivo raiz .xcodeproj diretamente pelo Xcode. Assim adicionando a extensão de .
Uma nova sequência de arquivos será gerada. Caso o projeto seja na linguagem Swift, deverá ser adicionado o seguinte código no seguinte método:
func didReceive(_ notification: UNNotification) {
NotificationManager.prepareNotificationContent(with: notification, andViewController: self)
}
É necessário importar a seguinte classe: #import <Inngage/NotificationManager.h>.
No arquivo de Info.plist é necessário informar um novo atributo, na seguinte categoria: NSExtension-> NSExtensionAttributes, com a seguinte chave UNNotificationExtensionUserInteractionEnabled e valor YES. Esse atributo permitirá que Rich Push Notifications tenham interações pelo usuário.
Estre trecho de código irá realizar a configuração de Rich Push Notifications quando houver interação do usuário por force touch ou long press na bandeja de notificações do sistema. Assim podendo ser apresentado para o usuário imagens (jpg, png, gif) e videos (mp4).
Projeto Sample
Disponibilizamos um projeto sample com a implementação da SDK. Você pode acessa-lo aqui:
https://github.com/inngage/inngage-ios
Updated about 1 year ago