0Pricing
Swift Academy · Lezione

Registrazione alle notifiche push

Richiedi l’autorizzazione e ottieni un token del dispositivo.

Registrazione alle notifiche push è una lezione Swift Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Swift Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Swift Academy include 4 lezioni in totale.

Come funziona il push dall'inizio alla fine

Una notifica push viaggia dal vostro server, attraverso Apple Push Notification service (APNs), fino a un dispositivo specifico. Il dispositivo dimostra la propria identità tramite un device token emesso da APNs. Prima di tutto questo, l'utente deve concedere l'autorizzazione e l'app deve registrarsi.

// Flow: App registers -> APNs returns device token ->
// you send token to your server -> server pushes via APNs

Il centro notifiche

UNUserNotificationCenter è l'unico oggetto da usare per tutto ciò che riguarda le notifiche locali e remote: richiedere l'autorizzazione, impostare il delegate, pianificare notifiche locali e leggere le impostazioni. Recuperate l'istanza condivisa.

import UserNotifications
let center = UNUserNotificationCenter.current()
// All notification configuration goes through center

Richiedere l'autorizzazione

Dovete chiedere l'autorizzazione all'utente prima di mostrare notifiche. requestAuthorization(options:) presenta la richiesta di sistema e restituisce l'informazione se l'utente ha accettato. Richiedete solo le opzioni necessarie: .alert, .sound, .badge.

import UserNotifications
func requestAuth() async throws -> Bool {
    let center = UNUserNotificationCenter.current()
    return try await center.requestAuthorization(
        options: [.alert, .sound, .badge])
}

Registrarsi con APNs

L'autorizzazione è distinta dalla registrazione. Dopo aver ottenuto l'autorizzazione, o contemporaneamente, chiamate registerForRemoteNotifications() sul main actor. In questo modo chiedete ad APNs un device token. La chiamata deve essere eseguita sul thread principale.

import UIKit
@MainActor
func registerForPush() {
    UIApplication.shared.registerForRemoteNotifications()
}

Ricevere il device token

In caso di successo, il metodo didRegisterForRemoteNotificationsWithDeviceToken del delegate dell'app viene chiamato con un token Data. Convertitelo in una stringa esadecimale e inviatelo al vostro server, che lo userà per indirizzare le notifiche a questo dispositivo.

import UIKit
func application(
    _ app: UIApplication,
    didRegisterForRemoteNotificationsWithDeviceToken
    deviceToken: Data) {
    let token = deviceToken.map {
        String(format: "%02x", $0) }.joined()
    print("APNs token:", token)
    // send token to your backend
}

Gestire gli errori di registrazione

La registrazione può non riuscire, ad esempio per assenza di rete, mancanza del diritto APNs o esecuzione in un ambiente non supportato. Implementate didFailToRegisterForRemoteNotificationsWithError per registrare l'errore e recuperare elegantemente, invece di causare un arresto anomalo.

import UIKit
func application(
    _ app: UIApplication,
    didFailToRegisterForRemoteNotificationsWithError
    error: Error) {
    print("Push registration failed:", error)
}

I token possono cambiare

Un device token non è permanente. Cambia quando l'utente ripristina un backup, reinstalla l'app o passa a un nuovo dispositivo. Registratevi sempre a ogni avvio e caricate il token più recente, sostituendo quello precedente sul server.

// Best practice: register on each launch,
// always upload the freshly received token,
// never cache a token as permanent.
let rule = "re-register every launch"
_ = rule

Controllare le impostazioni correnti

L'utente può revocare l'autorizzazione in un secondo momento dalle Impostazioni. Prima di fare affidamento sulle notifiche, interrogate getNotificationSettings per leggere lo stato corrente dell'autorizzazione e le funzionalità consentite.

import UserNotifications
func currentStatus() async -> UNAuthorizationStatus {
    let settings = await UNUserNotificationCenter
        .current().notificationSettings()
    return settings.authorizationStatus
}

Autorizzazione provvisoria

L'opzione .provisional consente alle notifiche di arrivare silenziosamente nel Centro notifiche senza mostrare subito una richiesta di autorizzazione. È un'ottima soluzione per permettere agli utenti di provare le notifiche prima di decidere, lasciando loro la possibilità di mantenerle o disattivarle.

import UserNotifications
func requestQuiet() async throws -> Bool {
    try await UNUserNotificationCenter.current()
        .requestAuthorization(
            options: [.alert, .sound, .provisional])
}

La capability necessaria

Niente di tutto questo funziona senza abilitare la capability Push Notifications nel target Xcode, che aggiunge il diritto aps-environment. Per la consegna in background, abilitate anche la capability Background Modes con Remote notifications.

// Xcode target > Signing & Capabilities:
//   + Push Notifications
//   + Background Modes > Remote notifications
let caps = "entitlements required"
_ = caps

Completare la registrazione

Un flusso di avvio ordinato consiste nel richiedere l'autorizzazione e, se viene concessa, registrarsi per le notifiche remote sul main actor. Il token arriverà quindi nel callback del delegate, pronto per essere caricato.

import UIKit
import UserNotifications
func setupPush() async {
    let center = UNUserNotificationCenter.current()
    let granted = (try? await center.requestAuthorization(
        options: [.alert, .sound, .badge])) ?? false
    if granted {
        await MainActor.run {
            UIApplication.shared.registerForRemoteNotifications()
        }
    }
}

Verifica rapida

Ricordate il rapporto tra autorizzazione e registrazione.

Riepilogo

Ha imparato a registrare l'app per le notifiche push:

  • Utilizzi UNUserNotificationCenter per richiedere l'autorizzazione per .alert/.sound/.badge.
  • Autorizzazione e registrazione sono operazioni separate; chiami registerForRemoteNotifications() sul main actor.
  • Converta il token Data in esadecimale e lo carichi sul server; effettui nuovamente la registrazione a ogni avvio, perché i token cambiano.
  • Abiliti la funzionalità Push Notifications e valuti l'autorizzazione .provisional.

Domande Frequenti

La lezione «Registrazione alle notifiche push» è gratuita?

Sì — il testo completo di «Registrazione alle notifiche push» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Swift Academy, passa a CoddyKit PRO. Il corso Swift Academy include 4 lezioni in totale.

Cosa imparerò in «Registrazione alle notifiche push»?

Richiedi l’autorizzazione e ottieni un token del dispositivo. Eserciti Swift Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Swift Academy?

Non è richiesta alcuna esperienza precedente. Swift Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «Registrazione alle notifiche push»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Swift Academy?

Sì. Ogni lezione Swift Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Registrazione alle notifiche push
  2. Gestione dei payload delle notifiche
  3. Attività e aggiornamento in background
  4. Azioni e categorie delle notifiche
← Torna a Swift Academy