iOS SDK Cocoa Pods (Objetive C)
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.
@interface AppDelegate (){
PushNotificationManager *manager;
NSDictionary *userInfoDict;
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:
(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]];
manager = [PushNotificationManager sharedInstance];
manager.inngageAppToken = @"APP_TOKEN";
manager.inngageApiEndpoint = @"https://api.inngage.com.br/v1";
manager.defineLogs = YES;
manager.enabledShowAlertWithUrl = NO;
manager.enabledAlert = NO;
userInfoDict = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
return YES;
}
É 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];
}
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.
- (void)application:(UIApplication *)application
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
NSDictionary *jsonBody = @{ @"Nome":@"XXX" };
[manager handlePushRegistration:deviceToken identifier: @"USER_IDENTIFIER" customField:jsonBody];
if (userInfoDict != nil)
{
[manager handlePushReceived:userInfoDict messageAlert:YES];
}
}
- (void)application:(UIApplication *)application
didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
NSLog(@"Registration for remote notification failed with error: %@", error.localizedDescription);
[manager handlePushRegistrationFailure:error];
}
- (void)application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo {
[manager handlePushReceived:userInfo messageAlert:YES];
}
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:
- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler {
self.contentHandler = contentHandler;
self.bestAttemptContent = [request.content mutableCopy];
[NotificationManager prepareNotificationWithRequest:request andBestAttemptContent: self.bestAttemptContent andCompletionHander:^(UNNotificationContent *bestAttemptContent) {
self.contentHandler(bestAttemptContent);
}];
}
Send Event
func application(_ application: UIApplication) {
NSDictionary *eventValue = @{ @"produto":@"Bola de tenis" };
[manager handleSendEvent:appToken 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 Objective-C, deverá ser adicionado o seguinte código no seguinte método:
- (void)didReceiveNotification:(UNNotification *)notification {
[NotificationManager prepareNotificationContentWithNotification: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).
Updated 11 months ago