Pular para o conteúdo

Personalizando o SDK do iOS

Integração

Anchor link to
Anchor link to

No seu arquivo Info.plist, adicione o array URL types com URL Identifier e URL Scheme.
No exemplo abaixo, o URL Scheme é com.pushwoosh e o URL Identifier é promotion.

No seu arquivo App Delegate (geralmente AppDelegate.m para iOS 12 e inferior, ou SceneDelegate.m para iOS 13 e superior), adicione a função de delegate openURL apropriada, conforme descrito no exemplo abaixo. O exemplo verifica a página correta, analisa o valor “id” da URL e abre o PromoPageViewController em resposta.

AppDelegate.swift

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
let components = URLComponents(url: url, resolvingAgainstBaseURL: false)
let page = components?.host
var promotionId: String?
if page == "promotion" {
return
}
let items = components?.queryItems ?? []
for item in items {
if item.name == "id" {
promotionId = item.value
}
}
//show PromoPageViewController
}

SceneDelegate.swift

func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
guard let urlContext = URLContexts.first else { return }
let components = URLComponents(url: urlContext.url, resolvingAgainstBaseURL: false)
let page = components?.host
var promotionId: String?
guard page == "promotion" else {
return
}
let items = components?.queryItems ?? []
for item in items {
if item.name == "id" {
promotionId = item.value
}
}
//show PromoPageViewController
}

Rastreamento de compras no aplicativo

Anchor link to

Por padrão, o rastreamento de compras no aplicativo está desativado. Se você deseja rastrear compras no aplicativo ao configurar Jornadas do Cliente (Customer Journeys), defina a flag Pushwoosh_PURCHASE_TRACKING_ENABLED como true no arquivo info.plist. Você pode encontrar uma lista de flags disponíveis na tabela.

Se você deseja rastrear compras no aplicativo manualmente, pode usar o código abaixo.

No método delegate paymentQueue:updatedTransactions:, chame o método sendSKPaymentTransactions do PushManager

func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
// In-Apps Tracking Pushwoosh code here
Pushwoosh.sharedInstance().sendSKPaymentTransactions(transactions)
// the rest of the code, consume transactions, etc
}
InAppTrackingViewController.swift

Notificações push de Geozones

Anchor link to

As notificações push de Geozones são encapsuladas em um framework separado, PushwooshGeozones.

  1. Adicione o PushwooshGeozones.framework ao seu projeto

Para adicionar o PushwooshGeozones.framework ao seu projeto usando um gerenciador de dependências, coloque as seguintes linhas no seu podfile ou cartfile:

pod 'PushwooshXCFramework/Geozones'

Alternativamente, você pode simplesmente arrastar e soltar o framework em Link Binaries With Libraries nas Build Phases do seu projeto.

  1. Adicione as seguintes chaves ao seu Info.plist:
  • NSLocationWhenInUseUsageDescription(obrigatório) para que o aplicativo rastreie Geozones apenas enquanto estiver em execução em primeiro plano.
  • NSLocationAlwaysAndWhenInUseUsageDescription(obrigatório) para que o aplicativo rastreie Geozones tanto em primeiro plano quanto em segundo plano e para mostrar um pop-up de diálogo de solicitação de permissão.
  • NSLocationAlwaysUsageDescription(opcional) para que o aplicativo rastreie Geozones o tempo todo; deve ser usado se seu aplicativo for direcionado para iOS 10 e versões anteriores.
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>for app to track Geozones in both conditions and to show a permission request dialog</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>for app to track Geozones only while running in the foreground</string>

  1. Importe o framework
import PushwooshGeozones
  1. Inicie o rastreamento de Geozones
PWGeozonesManager.shared()?.startLocationTracking()

GitHub reference

override func viewDidLoad() {
super.viewDidLoad()
// Inicie o rastreamento de Geozones quando necessário
PWGeozonesManager.shared().startLocationTracking()
}

Criando uma fila de Rich Media

Anchor link to

Caso haja várias páginas de Rich Media para exibir simultaneamente (por exemplo, eventos de gatilho para dois ou mais In-Apps ocorrem em um momento, ou uma página de Rich Media já está sendo exibida no momento em que um evento de gatilho diferente ocorre), você pode configurar uma fila para a exibição de páginas de Rich Media. Para criar uma fila, siga os passos descritos abaixo.

  1. Crie uma classe que implemente PWRichMediaPresentingDelegate:
@interface ChainedRichMediaPresentingDelegate () <PWRichMediaPresentingDelegate>
@property (nonatomic) NSMutableArray *queue;
@property (nonatomic) BOOL inAppIsPresenting;
@end
@implementation ChainedRichMediaPresentingDelegate
- (instancetype)init {
self = [super init];
if (self) {
_queue = [NSMutableArray new];
}
return self;
}
- (BOOL)richMediaManager:(PWRichMediaManager *)richMediaManager shouldPresentRichMedia:(PWRichMedia *)richMedia {
[_queue addObject:richMedia];
return !_inAppIsPresenting;
}
- (void)richMediaManager:(PWRichMediaManager *)richMediaManager didPresentRichMedia:(PWRichMedia *)richMedia {
_inAppIsPresenting = YES;
}
- (void)richMediaManager:(PWRichMediaManager *)richMediaManager didCloseRichMedia:(PWRichMedia *)richMedia {
_inAppIsPresenting = NO;
[_queue removeObject:richMedia];
if (_queue.count) {
[[PWRichMediaManager sharedManager] presentRichMedia:_queue.firstObject];
}
}
- (void)richMediaManager:(PWRichMediaManager *)richMediaManager presentingDidFailForRichMedia:(PWRichMedia *)richMedia withError:(NSError *)error {
[self richMediaManager:richMediaManager didCloseRichMedia:richMedia];
}
@end

2. Defina o delegate:

[PWRichMediaManager sharedManager].delegate = [ChainedRichMediaPresentingDelegate new];

Reprodução automática de um vídeo enviado em uma Notificação Rica com force touch

Anchor link to

Para fazer com que um vídeo enviado como um anexo de Notificação Rica seja reproduzido automaticamente quando a notificação for expandida sem qualquer interação do usuário, siga os passos abaixo:

  1. Adicione a Extensão de Conteúdo de Notificação ao seu projeto:
  • No Xcode, selecione File > New > Target.
  • Escolha Notification Content Extension.
  • Atribua um nome e conclua a configuração.
Extensão de Conteúdo de Notificação - Notificação Push Rica do iOS

Se solicitado com a mensagem “Activate scheme”, escolha Cancel.

Ativar Esquema de Conteúdo de Notificação
  1. Ajuste as propriedades e métodos na Extensão de Conteúdo da seguinte forma:
import UIKit
import UserNotifications
import UserNotificationsUI
import AVKit
class NotificationViewController: UIViewController, UNNotificationContentExtension {
var playerController: AVPlayerViewController!
@IBOutlet weak var playerBackgroundView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
// Faça qualquer inicialização de interface necessária aqui.
}
func didReceive(_ notification: UNNotification) {
let attachment = notification.request.content.attachments.first
playerController = AVPlayerViewController()
// Defina a altura programaticamente
// preferredContentSize.height = 250
if let url = attachment?.url {
setupVideoPlayer(url: url)
} else {
print("No valid URL...")
}
}
private func setupVideoPlayer(url: URL) {
guard let playerController = self.playerController else { return }
let player = AVPlayer(url: url)
playerController.player = player
playerController.view.frame = self.playerBackgroundView.bounds
playerBackgroundView.addSubview(playerController.view)
addChild(playerController)
playerController.didMove(toParent: self)
player.play()
}
  1. Incorpore uma UIView no MainInterface.storyboard:
UIView no MainInterface.storyboard
  1. Vincule o IBOutlet playerBackgroundView com a UIView que você acabou de adicionar:
Vincule o IBOutlet playerBackgroundView com a UIView
  1. Atualize o arquivo info.plist com a seguinte entrada:
UNNotificationExtensionUserInteractionEnabled = true
UNNotificationExtensionUserInteractionEnabled = true

Para anexar um vídeo à sua notificação, insira a URL de um vídeo no campo Media Attachment no Painel de Controle:

URL do vídeo no campo Media Attachment no Painel de Controle da Pushwoosh

Ao enviar uma notificação via solicitação da API /createMessage, inclua a URL no parâmetro “ios_attachment” e certifique-se de que a flag “mutable-content” esteja definida como `1`.

Som de push personalizado

Anchor link to

Para reproduzir um som personalizado ao receber uma notificação push, primeiro coloque o arquivo de áudio na pasta raiz do seu projeto.

Em seguida, especifique o nome do arquivo de som nos parâmetros de push – preencha o campo Sound das configurações específicas do iOS da sua mensagem ou especifique o nome do arquivo como um valor para o parâmetro “ios_sound” da solicitação da API createMessage.

O arquivo de áudio para som personalizado do iOS deve estar em um dos seguintes formatos: .aif, .caf, .wav. Certifique-se de especificar o formato no nome do arquivo; caso contrário, ele será ignorado pelo SDK do iOS da Pushwoosh.

Push Provisório do iOS

Anchor link to

Como funciona

Anchor link to

As notificações push provisórias aparecem silenciosamente na Central de Notificações do usuário, mas não na tela de bloqueio. Este tipo de push não precisa ser permitido explicitamente por um usuário: você pode começar a enviá-los assim que um usuário instalar e iniciar seu aplicativo.

No entanto, os usuários ainda podem se inscrever para suas notificações push proeminentes: ao abrir o Push Provisório, eles têm duas opções para escolher sua experiência – manter os pushes na Central de Notificações sem alertas e sons ou permitir que você envie pushes de forma proeminente para que apareçam na tela de bloqueio.

Os Pushes Provisórios são projetados para permitir que os usuários tomem decisões informadas sobre se gostariam de receber notificações do seu aplicativo. Como a solicitação de inscrição nativa da APN é mostrada aos usuários apenas uma vez e para se inscrever mais tarde, eles devem ir para as configurações do sistema do telefone, e alguns usuários podem não se inscrever por não saberem o valor que recebem com seus pushes. Os Pushes Provisórios dão aos usuários esse entendimento: eles podem ver qual conteúdo você entrega em notificações push e decidir se precisam ser notificados sobre esse conteúdo de forma proeminente.

Como implementar

Anchor link to

1. Integre o SDK do iOS da Pushwoosh seguindo o guia.

2. Adicione a seguinte string ao AppDelegate do seu projeto antes de chamar o método registerForPushNotifications():

if #available(iOS 12.0, *) {
Pushwoosh.sharedInstance().additionalAuthorizationOptions = UNAuthorizationOptions.provisional
}

É isso! Os usuários do aplicativo receberão mensagens diretamente em sua Central de Notificações assim que instalarem o aplicativo.

Compartilhe seu feedback conosco

Anchor link to

Seu feedback nos ajuda a criar uma experiência melhor, então adoraríamos ouvir de você se tiver algum problema durante o processo de integração do SDK. Se você enfrentar alguma dificuldade, não hesite em compartilhar suas ideias conosco através deste formulário.