Aller au contenu principal

Endpoints - Push Tokens

L'endpoint de push tokens permet d'enregistrer les tokens de notification push pour un appareil.

Enregistrer un token de notification

Enregistre ou met à jour le token de notification push pour un appareil.

Requête

POST /public/devices/:deviceId/push-token

Paramètres d'URL

  • deviceId (string, requis) : Identifiant unique de l'appareil/utilisateur

Corps de la requête

{
"token": "ExponentPushToken[xxxxxxxxxxxxxxxxxxxxxx]"
}

Paramètres

  • token (string, requis) : Token de notification push (format Expo Push Token)

Réponse

{
"id": "device-uuid",
"expoPushToken": "ExponentPushToken[xxxxxxxxxxxxxxxxxxxxxx]",
"createdAt": "2024-01-15T10:30:00.000Z",
"updatedAt": "2024-01-15T10:30:00.000Z"
}

Exemple d'utilisation

const deviceId = 'device-uuid';
const pushToken = 'ExponentPushToken[xxxxxxxxxxxxxxxxxxxxxx]';

const response = await fetch(
`https://api.wast-o.org/public/devices/${deviceId}/push-token`,
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
token: pushToken,
}),
}
);

const result = await response.json();
console.log(`Token enregistré pour l'appareil: ${result.id}`);

Génération du token Expo

Pour obtenir un token Expo Push Token, utilisez l'API Expo Notifications :

React Native (Expo)

import * as Notifications from 'expo-notifications';

async function registerForPushNotifications() {
const { status: existingStatus } = await Notifications.getPermissionsAsync();
let finalStatus = existingStatus;

if (existingStatus !== 'granted') {
const { status } = await Notifications.requestPermissionsAsync();
finalStatus = status;
}

if (finalStatus !== 'granted') {
alert('Permission refusée pour les notifications');
return;
}

const token = await Notifications.getExpoPushTokenAsync({
projectId: 'your-project-id',
});

return token.data;
}

// Utilisation
const token = await registerForPushNotifications();
const deviceId = getOrCreateDeviceId();

await fetch(
`https://api.wast-o.org/public/devices/${deviceId}/push-token`,
{
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ token }),
}
);

Web (avec Service Workers)

Pour les applications web, vous pouvez utiliser le Web Push API :

async function registerForWebPush() {
if (!('serviceWorker' in navigator) || !('PushManager' in window)) {
console.log('Push messaging non supporté');
return;
}

const registration = await navigator.serviceWorker.ready;
const subscription = await registration.pushManager.subscribe({
userVisibleOnly: true,
applicationServerKey: 'your-vapid-public-key',
});

// Convertir la subscription en format compatible
const token = JSON.stringify(subscription);

return token;
}

Schémas de données

Device

interface Device {
id: string;
expoPushToken?: string;
createdAt: string;
updatedAt: string;
}

Bonnes pratiques

  • Enregistrement au démarrage : Enregistrez le token dès que l'application démarre
  • Mise à jour : Mettez à jour le token si l'utilisateur réinstalle l'application
  • Gestion des erreurs : Gérez les cas où les permissions sont refusées
  • Sécurité : Ne partagez jamais les tokens dans des logs ou des messages d'erreur publics