Se você já desenvolve pra iOS a algum tempo, deve saber quão difícil era para testar notificações, que só podiam ser testadas no dispositivo com a configuração e instalação correta dos certificados. Note, eu disse era, pois com a chegada do Xcode 11.4 e o iOS 13.4, é possível fazer alguns testes direto no simulador. (O projeto completo desse post pode ser baixado aqui)
Existem duas maneiras de se fazer isso, e para as duas vamos precisar de um arquivo de payload no formato abaixo, com a extensão .apns. (se quiser saber mais sobre o serviço de push notification clique aqui)
{
"aps": {
"alert": {
"title": "Push Notification Demo",
"body": "Push notification in simulator!",
"sound": "default"
},
"badge": 10
},
"Simulator Target Bundle": "io.redspark.pushNotification"
}
Esse formato é o mesmo do arquivo que é enviado pelo servidor da aplicação, com uma única diferença da chave Simulator Target Bundle que deve ter como valor o bundle da aplicação, no nosso exemplo “io.redspark.pushNotification”
No aplicativo precisamos colocar o seguinte import e bloco de código no arquivo AppDelegate.swift, para que o app possa pedir permissão ao usuário para receber as notificações.
import UserNotifications
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
UNUserNotificationCenter.current()
.requestAuthorization(options: [.alert, .sound]) {(granted, error) in
// Make sure permission to receive push notifications is granted
print("Permission is granted: \(granted)")
}
return true
}
Agora vamos executar o app pra permitirmos o recebimento de notificações, no alerta que será exibido na primeira execução, clique em Allow.
Agora estamos prontos para enviar notificações para nosso app no simulador. Lembre-se que para aparecer a notificação o app deve estar fechado ou em segundo plano.
A primeira opção de envio é via terminal usando as ferramentas de linhas de comando do próprio Xcode (aquelas ferramentas que que são instaladas na primeira execução de todas as versões do Xcode) e vamos precisar tbm do identificador do simulador que vamos utilizar pra testar, no nosso exemplo utilizaremos o iPhone 11 Pro Max. Para pegar o identificador, no Xcode, clicamos no menu Window -> Devices and Simulators
Em seguida é só copiar o identificador do simulador.
Agora é só digitar o comando xcrun simctl push <identifier> <arquivo.apns>. No nosso caso o comando fica assim
xcrun simctl push D9695940-AE2D-40B1-94FE-736FC0537886 blog_push_alert.apns
Já a segunda forma é um pouco mais simples, basta arrastar o arquivo .apns para o simulador.
Em um próximo post, veremos algumas maneiras de interagir com as notificações no simulador.
Até breve.