SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
24.11.2024

Aulas 129: Notificações Push com SwiftUI

Notificações push são uma ferramenta poderosa para engajar usuários e comunicar informações importantes, mesmo quando o aplicativo não está rodando. Nesta aula, vamos cobrir os fundamentos da configuração de notificações push em uma aplicação SwiftUI.

Introdução

Para utilizar notificações push, você precisa configurar seu aplicativo para recebê-las, gerenciar permissões e implementar a lógica necessária para lidar com as notificações recebidas. Este tutorial irá guiá-lo pelos passos para alcançar isso.

Pré-requisitos

  • Compreensão básica de SwiftUI
  • Xcode instalado
  • Uma conta de Desenvolvedor Apple (para configurar o aplicativo para notificações push)

Passo 1: Configurar o Aplicativo para Notificações Push

  1. Acesse as configurações do seu projeto no Xcode.
  2. Selecione a aba "Signing & Capabilities".
  3. Clique no botão "+" para adicionar uma capacidade e escolha "Push Notifications".
  4. Adicione a capacidade "Background Modes" e habilite "Remote notifications".

Passo 2: Solicitar Permissão para Notificações Push

Primeiro, precisamos solicitar permissão do usuário para enviar notificações. Isso geralmente é feito em uma view SwiftUI.

import SwiftUI
import UserNotifications

struct ContentView: View {
    var body: some View {
        VStack {
            Text("Bem-vindo às Notificações Push!")
                .padding()
            Button(action: requestNotificationPermission) {
                Text("Ativar Notificações")
            }
        }
        .onAppear(perform: registerForPushNotifications)
    }

    func requestNotificationPermission() {
        let center = UNUserNotificationCenter.current()
        center.requestAuthorization(options: [.alert, .badge, .sound]) { (granted, error) in
            if granted {
                print("Permissão concedida")
            } else {
                print("Permissão negada")
            }
        }
    }

    func registerForPushNotifications() {
        UNUserNotificationCenter.current().delegate = NotificationDelegate()
        DispatchQueue.main.async {
            UIApplication.shared.registerForRemoteNotifications()
        }
    }
}

class NotificationDelegate: NSObject, UNUserNotificationCenterDelegate {
    func userNotificationCenter(_ center: UNUserNotificationCenter,
                                 willPresent notification: UNNotification,
                                 withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
        completionHandler([.alert, .sound])
    }
}

Passo 3: Lidar com Notificações Remotas

Você precisa implementar os métodos de AppDelegate para lidar com o registro de notificações remotas e receber as notificações.

import UIKit
import SwiftUI

@main
struct YourApp: App {
    @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate

    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

class AppDelegate: NSObject, UIApplicationDelegate {
    func application(_ application: UIApplication,
                     didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
        let tokenParts = deviceToken.map { data in String(format: "%02.2hhx", data) }
        let token = tokenParts.joined()

        print("Token do Dispositivo: \(token)")
        // Envie este token do dispositivo para seu servidor
    }

    func application(_ application: UIApplication,
                     didFailToRegisterForRemoteNotificationsWithError error: Error) {
        print("Falha ao registrar: \(error)")
    }
}

Passo 4: Enviando Notificações Push

Para testar notificações push, você normalmente precisará de um servidor ou usar serviços de terceiros como Firebase Cloud Messaging (FCM) ou OneSignal. Aqui está um exemplo simplificado de como você poderia enviar uma notificação push usando Firebase:

  1. Configure o Firebase em seu projeto.
  2. Use o seguinte trecho de código para enviar uma notificação via Firebase Messaging:
import Firebase

func sendPushNotification(to token: String) {
    let notification: [String: Any] = [
        "to": token,
        "notification": [
            "title": "Olá!",
            "body": "Esta é uma notificação push de teste."
        ]
    ]

    let url = "https://fcm.googleapis.com/fcm/send"
    var request = URLRequest(url: URL(string: url)!)
    request.httpMethod = "POST"
    request.setValue("application/json", forHTTPHeaderField: "Content-Type")
    request.setValue("SUA_CHAVE_DE_SERVIDOR", forHTTPHeaderField: "Authorization")

    do {
        request.httpBody = try JSONSerialization.data(withJSONObject: notification, options: [])
    } catch let error {
        print("Erro: \(error.localizedDescription)")
    }

    let task = URLSession.shared.dataTask(with: request) { data, response, error in
        if let error = error {
            print("Erro ao enviar a notificação: \(error)")
            return
        }
        print("Notificação enviada com sucesso!")
    }
    task.resume()
}

Conclusão

Nesta aula, cobrimos os passos básicos para configurar e implementar notificações push em uma aplicação SwiftUI. Lembre-se de que notificações push não se tratam apenas de enviar mensagens – você precisa pensar sobre seus usuários e o valor que está oferecendo com cada notificação.

Sinta-se à vontade para expandir este exemplo, adicionando conteúdo mais dinâmico, integrando-o com um backend e melhorando a experiência do usuário com base nas interações dos usuários com as notificações. Boas codificações!

Video

Did you like this article? Rate it from 1 to 5:

Thank you for voting!