Aviso: Não existe documentação legada disponível para este item, pelo que está a ver a documentação atual.
Pode agora implementar notificações push para a sua aplicação iOS utilizando o nosso SDK de Aplicações iOS. Precisaria da ajuda do seu programador, pois seria uma integração única antes de poder enviar notificações push utilizando o painel PushEngage.
Antes de Começar
- Precisará de ter o Xcode instalado no seu sistema.
- Uma conta de programador válida e um ID de Aplicação estão configurados no Portal de Programador Apple.
Seguiremos estes passos para ativar as notificações push para a sua Aplicação iOS.
- Configurar a Sua Aplicação
- Integrar o SDK iOS da PushEngage
- Inicializar o SDK iOS da PushEngage
- Criação da Extensão de Serviço de Notificação
- Inicialização do SDK PushEngage para a Extensão de Serviço de Notificação
- Criação da Extensão de Conteúdo de Notificação
- Inicialização do SDK PushEngage para a Extensão de Conteúdo de Notificação
- Adicionar Grupos de Aplicações
- Deep Linking
- Gerir Notificações em Primeiro Plano
- Resolução de Problemas
Configurar a Sua Aplicação
Ativar Notificações Remotas
1. Abra o seu projeto Xcode e selecione o projeto raiz no Navegador de Projetos. Escolha o seu principal alvo de aplicação.
2. Navegue para Assinatura & Capacidades. Certifique-se de que a capacidade Modos de Segundo Plano está adicionada. Se não estiver, adicione-a clicando no botão “+ Capacidade”.
3. Da mesma forma, certifique-se de que a capacidade Notificações Push está adicionada. Se não estiver, adicione-a utilizando o botão “+ Capacidade”.
Se a capacidade Notificações Push não estiver visível no Xcode. Precisa de seguir os passos abaixo:
1. Vá à sua conta de Programador Apple.
2. Navegue para Certificados, Identificadores & Perfis.
3. Selecione o identificador da sua Aplicação. Edite a configuração do seu ID de Aplicação e certifique-se de que Notificações Push está ativado.
4. Regresse ao Xcode e tente adicionar a capacidade “Notificações Push” novamente.
Ativar Modos de Segundo Plano
1. No seu projeto Xcode, navegue para Assinatura & Capacidades.
2. Dentro de Modos de Segundo Plano, ative tanto Notificações Remotas como Busca em Segundo Plano.
Este passo garante que a sua aplicação pode gerir eficientemente notificações remotas e buscas em segundo plano.
Aqui está o guia para criar o seu certificado APNs.
Integrar o SDK iOS da PushEngage
O SDK iOS da PushEngage está disponível como um pacote Swift e um pod CocoaPods. Pedimos que reveja ambos os métodos, mas utilize apenas um deles ao completar a sua configuração.
Integrar o SDK iOS da PushEngage com SPM
Para integrar o SDK iOS da PushEngage utilizando o Swift Package Manager, siga estes passos:
- Abra o Xcode e navegue para o seu projeto. Selecione o separador de dependências do pacote. Clique no botão +.

- Cole a URL
https://github.com/awesomemotive/pushengage-ios-sdkna barra de pesquisa. Clique em “Add Package”.

- Selecione o seu principal alvo da aplicação em “Add to Target” e clique em “Add Package”.

Integrar o SDK iOS da PushEngage com CocoaPods
Para integrar o SDK iOS da PushEngage usando CocoaPods, precisa de seguir estes passos:
Se o CocoaPods não estiver instalado, feche o seu projeto Xcode atual e execute o seguinte comando no diretório raiz do seu projeto
sudo gem install cocoapods
Execute o seguinte comando para inicializar um Podfile no seu projeto
pod init
Abra o Podfile recém-criado usando um editor de texto ou seguindo o comando no seu terminal no diretório raiz do projeto.
open Podfile
Adicione a dependência PushEngage sob o alvo do seu projeto. Certifique-se de que o seu Podfile se assemelha ao exemplo abaixo
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
target 'YourProjectName' do
# Add PushEngage SDK dependency
pod 'PushEngage'
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
end
Guarde o Podfile e execute os seguintes comandos no terminal.
pod repo update
pod install
Abra o ficheiro <project-name>.xcworkspace recém-criado no Xcode.
Inicializar o SDK iOS da PushEngage
Assim que tiver integrado o SDK, teremos de inicializar o SDK iOS no seu AppDelegate.
Usando a linguagem Swift, é assim que pode fazê-lo
import PushEngage
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
override init() {
super.init()
PushEngage.swizzleInjection(isEnabled: true)
}
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Set your PushEngage App ID (replace "APP_ID_FROM_PUSH_ENGAGE_DASHBOARD" with your actual App ID)
PushEngage.setAppId(key: "APP_ID_FROM_PUSH_ENGAGE_DASHBOARD")
// Start PushEngage initial info
PushEngage.setInitialInfo(for: application, with: launchOptions)
// Enable logs for debugging (optional)
PushEngage.enableLogs = true
return true
}
}
Usando a linguagem Objective-C, é assim que pode fazê-lo
#import "AppDelegate.h"
@import PushEngage;
@implementation AppDelegate
- (instancetype)init {
self = [super init];
if (self) {
[PushEngage swizzleInjectionWithIsEnabled:YES];
}
return self;
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Set your PushEngage App ID (replace "APP_ID_FROM_PUSH_ENGAGE_DASHBOARD" with your actual App ID)
[PushEngage setAppIdWithKey:@"APP_ID_FROM_PUSH_ENGAGE_DASHBOARD"];
// Set initial info
[PushEngage setInitialInfoFor:application with:launchOptions];
// Enable logs for debugging (optional)
[PushEngage setEnableLogs:YES];
return YES;
}
@end
Por vezes, ao usar SwiftUI, o AppDelegate pode não estar disponível por defeito. Nesses casos, pode inicializar o SDK PushEngage no seu ficheiro App principal. Eis um exemplo em SwiftUI
import SwiftUI
import PushEngage
@main
struct PEDemoApp: App {
@UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
class AppDelegate: NSObject, UIApplicationDelegate {
override init() {
super.init()
PushEngage.swizzleInjection(isEnabled: true)
}
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
PushEngage.setAppId(key: "APP_ID_FROM_PUSH_ENGAGE_DASHBOARD")
PushEngage.setIntialInfo(for: application,
with: launchOptions)
PushEngage.enableLogs = true
return true
}
}
Nota: Ao desenvolver a sua aplicação, pode achar útil ativar os logs do SDK PushEngage para fins de depuração. No entanto, é essencial desativar os logs na compilação de produção para evitar a exposição de informações sensíveis.
Criação da Extensão de Serviço de Notificação
A Extensão de Serviço de Notificação melhora a capacidade da sua aplicação iOS de receber notificações. Isto é usado para modificar o conteúdo da notificação ou para obter/processar quaisquer dados ao receber a notificação. Pode seguir os passos abaixo para criar uma Extensão de Serviço de Notificação:
1. Abra o Xcode e navegue até ao seu projeto. Escolha File » New » Target no menu.
2. Na janela de seleção de modelos, escolha Notification Service Extension e clique em Next.
3. Forneça um nome para a sua extensão, por exemplo, PushEngageNotificationServiceExtension, e clique em Finish.
4. Quando terminar de criar a Extensão de Serviço de Notificação, pode ser-lhe pedido para a ativar. Não a ative imediatamente.
Ativar a extensão mudaria o foco de depuração do Xcode da sua aplicação para a extensão. Se a ativar por engano, não se preocupe; pode voltar a depurar a sua aplicação dentro do Xcode.
Inicialização do SDK PushEngage para a Extensão de Serviço de Notificação
Para garantir o funcionamento correto do SDK PushEngage na sua Extensão de Serviço de Notificação iOS, precisa de seguir estes passos:
1. Abra o Podfile associado ao seu projeto.
2. Em seguida, precisa de adicionar a Dependência. Insira o seguinte trecho de código no seu Podfile:
target 'Your_Main_Application_Target' do
pod 'PushEngage'
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
target 'Your_Notification_Service_Extension_Target' do
pod 'PushEngage'
end
end
3. Execute os seguintes comandos no seu terminal dentro do diretório raiz do seu projeto:
pod repo update
pod install
4. No seu alvo de Extensão de Serviço de Notificação, importe o framework PushEngage e adicione o código de inicialização necessário. Veja como pode fazê-lo.
Usando Swift
import UserNotifications
import PushEngage
@available(iOSApplicationExtension 10.0, *)
class PushEngageNotificationServiceExtension: UNNotificationServiceExtension {
var contentHandler: ((UNNotificationContent) -> Void)?
var bestAttemptContent: UNMutableNotificationContent?
var request : UNNotificationRequest?
override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
self.request = request
self.contentHandler = contentHandler
self.bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent)
if let bestContent = bestAttemptContent {
PushEngage.didReceiveNotificationExtensionRequest(request, bestContentHandler: bestContent)
contentHandler(bestContent)
}
}
override func serviceExtensionTimeWillExpire() {
// Called just before the extension will be terminated by the system.
// 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 request = request ,let bestAttemptContent = bestAttemptContent {
guard let content = PushEngage.serviceExtensionTimeWillExpire(request, content: bestAttemptContent) else {
contentHandler(bestAttemptContent)
return
}
contentHandler(content)
}
}
}
Usando Objective-C
#import "NotificationService.h"
@import PushEngage;
@interface NotificationService ()
@property (nonatomic, strong) void (^contentHandler)(UNNotificationContent *contentToDeliver);
@property (nonatomic, strong) UNMutableNotificationContent *bestAttemptContent;
@property (nonatomic, strong) UNNotificationRequest *request;
@end
@implementation NotificationService
- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler {
self.request = request;
self.contentHandler = contentHandler;
self.bestAttemptContent = [request.content mutableCopy];
if (self.bestAttemptContent) {
[PushEngage didReceiveNotificationExtensionRequest:request bestContentHandler:self.bestAttemptContent];
contentHandler(self.bestAttemptContent);
}
}
- (void)serviceExtensionTimeWillExpire {
if (self.contentHandler && self.request && self.bestAttemptContent) {
UNNotificationContent *content = [PushEngage serviceExtensionTimeWillExpire:self.request content:self.bestAttemptContent];
if (content) {
self.contentHandler(self.bestAttemptContent);
return;
}
}
self.contentHandler(self.bestAttemptContent);
}
@end
Criação da Extensão de Conteúdo de Notificação
Para melhorar a forma como adiciona UI personalizada, terá de criar uma Extensão de Conteúdo de Notificação. Siga os passos abaixo para configurar a extensão:
1. No Xcode, vá a File » New » Target.
2. Selecione Notification Content Extension e clique em Next.
3. Não selecione “Ativar” no diálogo que aparece após clicar em Concluir. Cancelar mantém o Xcode a depurar a sua aplicação em vez da extensão. Se a ativar acidentalmente, volte a depurar a sua aplicação dentro do Xcode (ao lado do botão de execução).
4. No navegador de projetos, selecione o diretório do projeto de nível superior e selecione o destino NotificationContentExtension no projeto na lista de destinos criada no passo 2.
5. Defina o Destino de Implementação para iOS 10 ou superior, que é a versão do iOS que a Apple lançou com suporte para esta extensão.
Inicialização do SDK PushEngage para a Extensão de Conteúdo de Notificação
Para garantir o funcionamento correto do SDK da PushEngage na sua Extensão de Conteúdo de Notificação iOS, siga estes passos:
1. Abra o Podfile associado ao seu projeto.
2. Adicionar Dependência, insira o seguinte trecho de código no seu Podfile:
target 'Your_Main_Application_Target' do
pod 'PushEngage'
target 'Your_Notification_Content_Extension' do
pod 'PushEngage'
end
end
3. Execute os seguintes comandos no seu terminal dentro do diretório raiz do seu projeto:
pod repo update
pod install
4. No seu alvo de Extensão de Conteúdo de Notificação, importe o framework PushEngage e adicione o código de inicialização necessário. Veja como pode fazê-lo com alguns exemplos de elementos de UI:
Usando Swift
import UIKit
import UserNotifications
import UserNotificationsUI
import PushEngage
@available(iOSApplicationExtension 10.0, *)
class NotificationViewController: UIViewController, UNNotificationContentExtension {
fileprivate var hostingView: UIHostingController<ContentView>?
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = .white
}
func didReceive(_ notification: UNNotification) {
if(notification.request.content.categoryIdentifier == "your_identifier"){
let payLoad = PushEngage.getCustomUIPayLoad(for: notification.request)
//pass the payload to your custom View
let view = CustomView(payLoadInfo: payLoad)
hostingView = UIHostingController(rootView: view)
If let customView = self.hostingView {
addChild(hostingView!)
}
}
}
}
Objective-C:
#import "NotificationViewController.h"
#import <UserNotifications/UserNotifications.h>
#import <UserNotificationsUI/UserNotificationsUI.h>
@import PushEngage;
@import UIKit;
@interface NotificationViewController () <UNNotificationContentExtension>
@property IBOutlet UILabel *label;
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
@property (weak, nonatomic) IBOutlet UIButton *firstButton;
@property (weak, nonatomic) IBOutlet UIButton *secondButton;
@end
@implementation NotificationViewController
- (IBAction)firstbuttonAction:(id)sender {
// do what action you want to perform.
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any required interface initialization here.
}
- (void)didReceiveNotification:(UNNotification *)notification {
NotificationViewController * __block blockSelf = self;
CustomUIModel *object = [PushEngage getCustomUIPayLoadFor:notification.request];
dispatch_async(dispatch_get_main_queue(), ^{
blockSelf.label.text = object.title;
blockSelf.imageView.image = object.image;
[blockSelf.firstButton setTitle:object.buttons.firstObject.text forState:UIControlStateNormal];
[blockSelf.secondButton setTitle:object.buttons.lastObject.text forState:UIControlStateNormal];
blockSelf = NULL;
});
}
@end
Adicionar Grupos de Aplicações
Os Grupos de Aplicações são essenciais para a comunicação entre a aplicação principal, a extensão de serviço de notificação e a extensão de conteúdo. Pode seguir estes passos para adicionar Grupos de Aplicações ao seu projeto iOS:
Se já tem um grupo de aplicações e só quer usar esse, salte para o passo n.º 5.
1. No seu projeto Xcode, no navegador de projetos, selecione o diretório raiz do projeto e selecione o alvo principal da aplicação.
2. Navegue até ao separador "Signing & Capabilities".
3. Clique no botão “+ Capability” e selecione App Groups na lista.
4. Clique no botão + para adicionar um App Group. Adicione um nome único ao seu App Group e clique em OK.
5. Na área de edição principal, selecione o alvo principal da sua aplicação e crie um grupo de aplicações. Forneça o nome do grupo no Info.plist da sua aplicação com a chave PushEngage_App_Group_Key.
6. Adicione a mesma chave e valor no ficheiro Info.plist da Extensão de Serviço de Notificação.
7. Selecione o mesmo grupo de aplicações no Alvo Principal da Aplicação e na SuaExtensãoDeServiçoDeNotificação.
Certifique-se de que está a selecionar a sua extensão de serviço de notificação no passo acima.
Deep Linking
A ligação profunda permite que os seus subscritores naveguem diretamente para um ecrã específico dentro da aplicação ou para uma página web designada ao interagir com notificações push. Por defeito, se fornecer um URL válido, o subscritor será redirecionado para essa página web.
Tratamento de URLs Web:
- Forneça
PushEngageInAppEnabledcomo YES no Info.plist, e o URL será carregado dentro da aplicação usando WKWebview. - Forneça
PushEngageInAppEnabledcomo NO no Info.plist, se quiser que o seu subscritor seja redirecionado para o Safari para carregar o URL. - Forneça
PushEngageAutoHandleDeeplinkURLcomo YES no Info.plist, e o SDK irá tratar da ligação profunda de acordo com a configuraçãoPushEngageInAppEnabled. - Forneça
PushEngageAutoHandleDeeplinkURLcomo NO no Info.plist, e o controlo do tratamento da ligação profunda será dado à aplicação cliente a partir do SDK. - Se a ligação profunda não for um URL válido, terá de configurar a navegação usando
setNotificationOpenHandlernoAppDelegatedentro do métododidFinishLaunchingWithOptions. Isto permite-lhe navegar para um ecrã específico com base na string fornecida, como mostrado abaixo. Se não for configurado, o SDK simplesmente abrirá a aplicação.

Usando Swift:
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
override init() {
super.init()
// method Swizzling enabled for the application.
PushEngage.swizzleInjection(isEnabled: true)
}
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
PushEngage.setAppId(key: "APP_ID_FROM_PUSH_ENGAGE_DASHBOARD")
PushEngage.setInitialInfo(for: application,with: launchOptions)
// Notification open handler.
// deep linking screen
// here ShoesScreen and pepay are example deep link texts
PushEngage.setNotificationOpenHandler { (result) in
//replace this block with your own handling
let additionData = result.notification.additionalData
if result.notificationAction.actionID == "ShoesScreen" {
print(additionData ?? [])
let storyBoard = UIStoryboard(name: "Main", bundle: .main)
let viewController = storyBoard.instantiateViewController(withIdentifier: "SportViewController")
let navcontroller = application.windows.first?.rootViewController as? UINavigationController
navcontroller?.popToRootViewController(animated: true)
navcontroller?.pushViewController(viewController, animated: true)
} else if result.notificationAction.actionID == "SalesScreen" {
let storyBoard = UIStoryboard(name: "Main", bundle: .main)
let viewController = storyBoard.instantiateViewController(withIdentifier: "NotificationApiTestViewconttoller")
let navcontroller = application.windows.first?.rootViewController as? UINavigationController
navcontroller?.popToRootViewController(animated: true)
navcontroller?.pushViewController(viewController, animated: true)
} else if result.notificationAction.actionID == "pepay" {
let storyBoard = UIStoryboard(name: "Main", bundle: .main)
let viewController = storyBoard.instantiateViewController(withIdentifier: "PEPay")
let navcontroller = application.windows.first?.rootViewController as? UINavigationController
navcontroller?.popToRootViewController(animated: true)
navcontroller?.pushViewController(viewController, animated: true)
}
}
PushEngage.enableLogs = true
return true
}
}
Usando Objective-C :
@implementation AppDelegate
- (instancetype)init
{
self = [super init];
if (self) {
[PushEngage swizzleInjectionWithIsEnabled: YES];
}
return self;
}
typedef void (^PEnotificationOpenHandler)(PENotificationOpenResult * nonnull);
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
UNUserNotificationCenter.currentNotificationCenter.delegate = self;
PEnotificationOpenHandler actionHandler = ^void(PENotificationOpenResult *result) {
//replace this block with your own handling
if ([result.notificationAction.actionID isEqualToString: @"ShoesScreen"]) {
AddToCart *controller = [AddToCart new];
UINavigationController *navigationController = (UINavigationController *) application.windows.firstObject.rootViewController;
[navigationController popToRootViewControllerAnimated:YES];
[navigationController pushViewController:controller animated:YES];
} else if ([result.notificationAction.actionID isEqualToString: @"SalesScreen"]) {
SportsViewcontroller *controller = [SportsViewcontroller new];
UINavigationController *navigationController = (UINavigationController *) application.windows.firstObject.rootViewController;
[navigationController popToRootViewControllerAnimated:YES];
[navigationController pushViewController:controller animated:YES];
}
};
application.applicationIconBadgeNumber = 0;
[PushEngage setAppIdWithKey:@"APP_ID_FROM_PUSH_ENGAGE_DASHBOARD"];
[PushEngage setInitialInfoFor:application with:launchOptions];
[PushEngage setNotificationOpenHandlerWithBlock:actionHandler];
[PushEngage setEnableLogs:true];
return YES;
}
@end
Gerir Notificações em Primeiro Plano
Quando as notificações chegam em primeiro plano, tem de tomar uma decisão sobre mostrar ou não o alerta de notificação ao dispositivo. Para lidar com notificações em primeiro plano, utilize setNotificationWillShowInForgroundHandler
Se o bloco de conclusão não for chamado por si, o SDK chamará o bloco de conclusão após 29 segundos. Em qualquer caso, notificação silenciosa ou de alerta quando a aplicação está em modo de primeiro plano.
Usando Swift
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
override init() {
super.init()
// method Swizzling enabled for the application.
PushEngage.swizzleInjection(isEnabled: true)
}
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
PushEngage.setAppId(key: "APP_ID_FROM_PUSH_ENGAGE_DASHBOARD")
PushEngage.setInitialInfo(for: application, with: launchOptions)
// Notification handler when notification deliver's and app is in foreground.
PushEngage.setNotificationWillShowInForgroundHandler { notification, completion in
if notification.contentAvailable == 1 {
// in case the developer failed to set the completion handler. After 29 sec the handler will call from the SDK after 29 sec.
completion(nil)
} else {
completion(notification)
}
}
PushEngage.enableLogs = true
return true
}
}
Usando Objective-C
@implementation AppDelegate
- (instancetype)init
{
self = [super init];
if (self) {
[PushEngage swizzleInjectionWithIsEnabled: YES];
}
return self;
}
// please create this handlers
typedef void (^ _Nonnull PENotificationDisplayHandler)(PENotification * _Nullable);
-(BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
UNUserNotificationCenter.currentNotificationCenter.delegate = self;
[PushEngage setNotificationWillShowInForgroundHandlerWithBlock:^(PENotification * _Nonnull notification, PENotificationDisplayHandler completion) {
if (notification.contentAvailable == 1) {
completion(nil);
} else {
completion(notification);
}
}];
[PushEngage setAppIdWithKey:@"APP_ID_FROM_PUSH_ENGAGE_DASHBOARD"];
[PushEngage setInitialInfoFor:application with:launchOptions];
[PushEngage setEnableLogs:true];
return YES;
}
@end
Resolução de Problemas
Problema:
Está a experienciar problemas de compilação relacionados com sandboxing.
Solução:
- Abra o seu projeto no Xcode.
- Navegue até Definições de Compilação.
- Localize a opção User Script Sandboxing.
- Defina-a para No.
Problema:
Está a utilizar ambos os SDKs Firebase e PushEngage com o método swizzling ativado para ambos, e isso está a causar problemas.
Solução:
Desative o método swizzling para o SDK PushEngage e siga os passos manuais para lidar com os métodos PushEngage. Pode encontrar instruções detalhadas em:
Documentação do SDK iOS da PushEngage
Se quiser explorar mais capacidades do SDK iOS, pode consultar a nossa documentação detalhada da API.
Se encontrar algum problema, por favor contacte-nos clicando aqui. A nossa equipa de suporte poderá ajudá-lo.