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