diff --git a/mobile/app/notifications.tsx b/mobile/app/notifications.tsx index 7b0fdf9cd43..d20aacabb3c 100644 --- a/mobile/app/notifications.tsx +++ b/mobile/app/notifications.tsx @@ -13,7 +13,7 @@ import { ensureNotificationPermissions } from '../src/notifications/mobile-notif export default function NotificationsScreen() { const router = useRouter() const insets = useSafeAreaInsets() - const [pushEnabled, setPushEnabled] = useState(true) + const [pushEnabled, setPushEnabled] = useState(false) useFocusEffect( useCallback(() => { diff --git a/mobile/src/storage/preferences.ts b/mobile/src/storage/preferences.ts index efd4dc75c9b..7a588902d86 100644 --- a/mobile/src/storage/preferences.ts +++ b/mobile/src/storage/preferences.ts @@ -4,13 +4,18 @@ const PINS_PREFIX = 'orca:pins:' const PREFS_PREFIX = 'orca:prefs:' const NOTIF_KEY = 'orca:pushNotificationsEnabled' +// Why: default-off so the iOS notification permission prompt never +// fires until the user explicitly opts in via Settings → Notifications. +// Apple's review guideline 4.5.4 and HIG both prefer user-initiated +// permission prompts; default-on would fire the prompt the moment the +// desktop sent its first notification, which can read as unsolicited. export async function loadPushNotificationsEnabled(): Promise { try { const raw = await AsyncStorage.getItem(NOTIF_KEY) - if (raw === null) return true + if (raw === null) return false return raw === 'true' } catch { - return true + return false } }