Helpaj paghoj, ekzemploj kaj teknikaj detaloj en pli klara aranĝo.
L'écosystème Militant propose un système de notifications push flexible permettant d'utiliser OneSignal, un serveur ntfy auto-hébergé, ou les deux simultanément.
---
Vous pouvez activer l'un, l'autre, ou les deux services en même temps via les variables d'environnement dans votre .env ou votre conteneur Docker.
| Mode | ONESIGNAL_ENABLED | NTFY_ENABLED | Description |
| :--- | :---: | :---: | :--- |
| Double diffusion (Recommandé / Par défaut) | true | true | Transition fluide sans coupure : envoie simultanément à OneSignal et à ntfy. Les utilisateurs ayant l'ancienne application continuent de recevoir leurs alertes par OneSignal, tandis que les nouvelles versions utilisent le serveur ntfy privé. |
| OneSignal seul | true | false | Fonctionnement classique 100% OneSignal. N'envoie aucune notification au serveur ntfy. |
| ntfy seul (100% Dégooglisé) | false | true | Fonctionnement 100% auto-hébergé et souverain. Aucun appel n'est passé vers OneSignal. Idéal pour couper toute dépendance externe. |
| Désactivé | false | false | Désactive complètement l'envoi de notifications push mobiles. |
---
ONESIGNAL_ENABLED : true (défaut) ou false.ONESIGNAL_APP_ID : L'identifiant public de l'application OneSignal (ex. 5605910e-2b91-4f2c-b842-78817d213761). Transmis au client mobile via /v1/settings.php.ONESIGNAL_REST_API_KEY : Clé secrète d'envoi OneSignal (os_v2_app_...). Ne jamais commiter dans Git, à renseigner dans le .env ou les variables Docker du conteneur.NTFY_ENABLED : true (défaut) ou false.NTFY_SERVER : URL de votre instance ntfy (ex. https://push.revlibertaire.com).NTFY_AUTH_TOKEN : (Optionnel) Jeton d'authentification Bearer (tk_...) si votre serveur ntfy exige une authentification pour l'écriture. Inutile si l'accès anonyme en écriture est accordé sur militant_*.NTFY_TOPIC_PREFIX : Préfixe des sujets ntfy (défaut: militant_u_). Les topics utilisateurs sont construits sous la forme militant_u_.---
OneSignal.login(externalId).
2. Configuration dynamique : Au démarrage, l'application mobile interroge /v1/settings.php pour récupérer onesignal_app_id.
3. Distribution : L'API contacte l'API REST OneSignal avec les tags et les filtres ciblés.militant_u_.
2. Gestion des priorités :
- Priorité 5 (Max) : Appels entrants audio/vidéo (déclenche sonnerie d'appel immédiate).
- Priorité 4 (High) : Messages instantanés privés ou de groupe.
- Priorité 3 (Default) : Interactions sociales (likes, commentaires, abonnements).
3. Payload unifié : Les données structurées (type, caller_id, room_id, chat_id, etc.) sont transmises dans le champ data en JSON ou dans les en-têtes HTTP ntfy.---
La version Web de Militant utilise le standard Web Push (Service Workers) pour les navigateurs indépendamment du push mobile :
ajax/push.php?action=vapid_key : Récupère la clé publique du serveur.ajax/push.php?action=subscribe : Enregistre une nouvelle souscription browser dans la table push_subscriptions.ajax/push.php?action=unsubscribe : Supprime la souscription.ajax/push.php?action=test : Envoie une notification de test au navigateur actuel.---
L'API propose un endpoint de test direct pour valider le fonctionnement de vos fournisseurs :
Exemple de test vers l'utilisateur ID 1 (déclenche OneSignal et/ou ntfy selon la configuration active)
curl -X POST https://api.ton-domaine.com/v1/notifications.php \
-H "Authorization: Bearer " \
-H "Content-Type: application/json" \
-d '{
"action": "test",
"user_id": 1,
"title": "Test de notification",
"message": "Ceci est un message de test"
}'
Le retour JSON détaille le statut d'envoi pour chaque fournisseur activé (onesignal et ntfy).