✅ Notifications désactivées par défaut - Respecte les bonnes pratiques de permissions
export const DEFAULT_SETTINGS = {
// ... autres paramètres
notification_enabled: false, // ❌ Désactivé par défaut
system_notifications: false, // ❌ Désactivé par défaut
summary_notifications: false, // ❌ Désactivé par défaut
// ...
}- Installation de l'app → Notifications désactivées
- Utilisateur va dans Paramètres → Voit le toggle notifications désactivé
- Utilisateur active le toggle →
requestNotificationPermissions()appelée automatiquement - Système demande permission → Dialog natif iOS/Android
- Permission accordée → Notifications configurées et planifiées
- Permission refusée → Message d'erreur à l'utilisateur
<Switch
value={settings.notification_enabled}
onValueChange={async (val) => {
const success = await updateSetting("notification_enabled", val)
if (success && val) {
// Request permissions and schedule notifications
const hasPermission = await requestNotificationPermissions()
if (hasPermission && user?.user_id) {
await scheduleAllDebtReminders(user.user_id)
Toast.success(t("settings.notificationsEnabled"))
} else {
Toast.error(t("settings.notificationPermissionsDenied"))
}
}
}}
/>export const requestNotificationPermissions = async (): Promise<boolean> => {
const { status: existingStatus } = await Notifications.getPermissionsAsync()
let finalStatus = existingStatus
if (existingStatus !== "granted") {
const { status } = await Notifications.requestPermissionsAsync() // 🚀 Demande permission
finalStatus = status
}
return finalStatus === "granted"
}✅ Logo des notifications configuré dans app.json :
{
"expo": {
"notification": {
"icon": "./assets/images/logo/logo-white.png"
}
}
}🎯 Parfait respect des bonnes pratiques :
- Pas de permissions demandées au démarrage
- Utilisateur contrôle total sur les notifications
- Permissions demandées uniquement quand l'utilisateur les active
- Messages clairs de succès/erreur
- Configuration complète des canaux Android