Ogni integrazione di notifiche push iOS inizia allo stesso punto: dimostrare ad Apple Push Notification service che sei autorizzato a inviare messaggi agli utenti della tua app. Apple ti offre due modi per farlo: una chiave di autenticazione APNs (.p8) o un certificato APNs (.p12), e la differenza tra loro è la differenza tra una credenziale che configuri una volta e una che dovrai rinnovare ogni anno, spesso nel momento peggiore possibile.
Questa guida spiega come funziona effettivamente l'autenticazione APNs, quando usare una chiave .p8 rispetto a un certificato .p12 e la manciata di errori che risalgono a un'errata configurazione.
Come funziona l'autenticazione APNs
Quando il tuo provider di notifiche push — PushEngage o il tuo server — invia una notifica, si connette all'API del provider APNs di Apple e deve dimostrare due cose: che è autorizzato a inviare per tuo conto e che è autorizzato a indirizzare l'ID bundle della tua app (il "topic" in termini APNs). La chiave .p8 e il certificato .p12 sono solo due modi diversi per dimostrarlo.
Il lato dispositivo è separato. La tua app si registra con APNs e riceve un token dispositivo: quella parte non cambia mai, indipendentemente dalla credenziale utilizzata dal tuo provider. L'autenticazione è esclusivamente una questione server-Apple, motivo per cui puoi cambiare metodo senza toccare il binario della tua app.
La chiave di autenticazione .p8 (usala)
La .p8 è una chiave di firma di token. Il tuo provider la utilizza per coniare token JSON Web di breve durata che autenticano ogni connessione ad APNs. Le sue proprietà la rendono la scelta predefinita per quasi tutti:
- Non scade mai. Nessun rinnovo annuale, nessuna interruzione delle notifiche push in una data dimenticata.
- Una chiave copre tutte le app nel tuo account sviluppatore. Se pubblichi una seconda app, la stessa chiave la autentica.
- Funziona sia per gli ambienti di sviluppo che di produzione, senza coppie di certificati sandbox/produzione.
- Viene trasmessa come tre valori: il file .p8 stesso, l'ID chiave di 10 caratteri e il tuo ID team.
Due cose da sapere prima di crearne una. Apple ti limita a due chiavi APNs attive per account, quindi le grandi organizzazioni dovrebbero trattare la creazione della chiave come un atto deliberato, non un'abitudine per progetto. E il file .p8 può essere scaricato una sola volta, al momento della creazione: salvalo in un posto dove il tuo team possa trovarlo, perché Apple non te lo fornirà più.
Il certificato .p12 (il percorso legacy)
Il .p12 è un certificato client TLS, esportato da Accesso Portachiavi dopo che Apple lo ha emesso. Autentica la connessione stessa anziché firmare i token. Funziona ancora, e alcune policy di sicurezza aziendale lo richiedono ancora, ma i suoi vincoli sono il motivo per cui Apple indirizza le nuove integrazioni verso la chiave:
- Scade ogni anno. La causa più comune di interruzione improvvisa e totale delle notifiche push è un certificato APNs scaduto silenziosamente.
- È limitato a una singola app. Ogni ID bundle necessita del proprio certificato e ogni certificato necessita del proprio calendario di rinnovo.
- Richiede un Mac. La procedura di esportazione della richiesta di firma e del portachiavi non ha un percorso solo tramite browser.
Quale dovresti usare?
| Chiave di autenticazione .p8 | Certificato .p12 | |
|---|---|---|
| Scade | Mai | Ogni 12 mesi |
| Ambito | Tutte le app nell'account | Un ID bundle |
| Ambienti | Sviluppo + produzione | Separati o combinati per certificato |
| Creato da | Qualsiasi browser | Mac con Accesso Portachiavi |
| Limite account | 2 chiavi attive | Coppie per app |
| Usa quando | Quasi sempre | La policy richiede certificati |
La risposta onesta: usa la chiave .p8 a meno che una policy di sicurezza non imponga il percorso del certificato. Meno parti in movimento, niente da rinnovare, una credenziale per il tuo intero portafoglio.
Creare una chiave .p8 in tre minuti
- Nel tuo account Apple Developer, vai su Certificati, Identificatori e Profili → Chiavi e registra una nuova chiave.
- Assegnale un nome, abilita la casella di controllo Apple Push Notifications service (APNs) e continua.
- Scarica il file .p8 (ricorda: un'unica possibilità) e annota il Key ID mostrato nella schermata di conferma e il tuo Team ID dalla pagina di appartenenza all'account.
- Carica tutti e tre i valori nel tuo provider di push. In PushEngage, questa è un'unica schermata nelle impostazioni della tua app: la guida alle credenziali APNs la illustra con screenshot.
Gli errori che questo spiega
Una sorprendente quantità di ticket "push non funziona" sono problemi di credenziali che indossano un travestimento. I soliti sospetti:
- BadDeviceToken — stai inviando il token di un'app creata in sandbox attraverso l'ambiente di produzione, o viceversa. Le build di debug da Xcode parlano con la sandbox; le build di TestFlight e App Store parlano con la produzione.
- TopicDisallowed — le credenziali non coprono l'ID del bundle che stai prendendo di mira. Tipico con certificati .p12 per app e una configurazione copiata e incollata.
- Fallimento improvviso del 100% delle consegne — un .p12 scaduto. Controlla la data di scadenza del certificato prima di controllare qualsiasi altra cosa.
- InvalidProviderToken — una chiave .p8 revocata, o la coppia errata di Key ID/Team ID insieme a un file valido.
Dove questo si inserisce nella tua integrazione
La credenziale APNs è il primo passo di una sessione di configurazione composta da un unico passaggio. Carica il .p8 su PushEngage una volta, e tutto ciò che segue — l'integrazione iOS SDK 1.0, i contenuti multimediali avanzati tramite la tua estensione di notifica, le campagne attivate e la consegna stessa — funzionano con essa senza ulteriori cerimonie. Se provieni da Firebase, la stessa chiave che hai dato a FCM funziona qui, il che è parte del motivo per cui la migrazione da FCM su iOS è un progetto di un pomeriggio.
Per il livello strategico che segue la configurazione, inizia con la guida al marketing push per app. E quando sei pronto per inviare, la guida completa alla configurazione di iOS ti accompagna dalla credenziale alla prima campagna in meno di un'ora.