Push

Identifiants

Téléversez une fois votre clé APNs d'Apple et votre compte de service Firebase. honkio les vérifie et ne les renvoie jamais.

Clé d'authentification APNs (iOS)

Dans votre compte Apple Developer, créez une clé avec le service de notifications push d'Apple activé et téléchargez le fichier .p8, qu'Apple ne vous laisse télécharger qu'une fois. Notez son identifiant de clé, votre identifiant d'équipe et l'identifiant de bundle de votre application.

Pas à pas, avec les réglages Xcode et Firebase : Configurer votre application.

Envoyez-les à POST /v1/push/apps sous apns.key_p8 (le texte de la clé), key_id, team_id et bundle_id. La clé doit être la clé EC P-256 que fournit Apple; toute autre sorte est refusée avec un 422 PUSH_CREDENTIAL_INVALID avant qu'Apple soit consulté. honkio chiffre la clé au repos et aucun point de terminaison ne la renvoie.

Apple permet de limiter une clé au bac à sable, à la production ou aux deux, et les clés plus anciennes fonctionnent pour les deux. honkio vérifie la clé auprès de chaque environnement au téléversement et l'accepte si elle fonctionne dans au moins un. La réponse montre sandbox_status et production_status séparément, ce qui indique quel environnement une clé restreinte couvre.

Un appareil enregistré pour un environnement que la clé ne couvre pas reçoit tout de même un envoi. Apple le refuse comme une erreur d'identifiant : l'envoi échoue, cet environnement est marqué invalide et push_app.credentials_invalid se déclenche. Un échec dans un environnement ne marque jamais l'autre comme invalide. NO_CREDENTIAL ne vaut que pour une application sans identifiant pour la plateforme de l'appareil.

const { data: pushApp, error } = await honkio.push.apps.create({
  name: 'Acme mobile',
  apns: {
    keyP8: process.env.APNS_KEY_P8 ?? '',
    keyId: 'ABC123DEFG',
    teamId: 'TEAM123456',
    bundleId: 'ca.acme.app',
  },
  fcm: { serviceAccountJson: process.env.FCM_SERVICE_ACCOUNT_JSON ?? '' },
})
if (error) throw new Error(error.message)
console.log(pushApp.id, pushApp.apns?.sandbox_status, pushApp.apns?.production_status, pushApp.fcm?.status)

Compte de service Firebase (Android)

Dans la console Firebase, ouvrez les paramètres du projet, puis Comptes de service, et générez une nouvelle clé privée. Envoyez le texte du fichier JSON dans fcm.service_account_json. Sa clé privée doit être la clé RSA-2048 que fournit Google. honkio le vérifie par un essai à blanc au téléversement et note l'identifiant du projet.

Le compte de service doit avoir l'autorisation d'envoyer des messages Firebase Cloud Messaging.

État des identifiants

Chaque identifiant est non vérifié, valide ou invalide. Un envoi qu'Apple ou Google accepte le marque valide, et un refus de l'identifiant lui-même le marque invalide. Un identifiant invalide est tout de même essayé aux envois suivants, de sorte qu'un refus passager ne bloque pas une plateforme.

Quand un identifiant devient invalide, vous recevez un webhook push_app.credentials_invalid pour ce changement. honkio revérifie aussi chaque jour les identifiants invalides ou inutilisés et écrit au propriétaire du compte quand l'un devient invalide.

Remplacez un identifiant avec PATCH /v1/push/apps/:id ; il est revérifié au téléversement. Les identifiants sont en écriture seule, et les applications et leurs identifiants sont communs aux modes test et production : créer, modifier ou supprimer une application exige donc une clé de production; une clé de test peut lire les applications et y enregistrer des appareils de test. Les téléversements et changements d'identifiants sont limités à 20 par heure par compte (429 RATE_LIMITED).