Notifications (iOS & Android)
Detailed app behavior for notifications (ios & android).
- TV availability and upgrade notifications open the corrected story in the payload’s importing library (
/detail/tv/:id?instance_id=…). That library initializes status, episode downloads, and the Sonarr link before their first reads. Cold and warm taps retain the destination through sign-in/session restoration. A removed or inaccessible library shows Library unavailable; payloads without a library retain the default-library behavior. - Native push on both platforms via the same
MethodChannel: no Flutter Firebase plugin. iOS registers with APNs inAppDelegate.swift; Android obtains an FCM token natively (MainActivity.kt) and renders the gateway’s data-only messages itself (PushMessagingService.kt), so presentation matches iOS’s always-banner behavior. Tokens register with the backend per device; taps deep-link to the right screen (detail page, approvals, issue thread…). android/app/google-services.jsonis committed on purpose: it holds Firebase project identifiers, not secrets (the FCM send credential lives with the push gateway). Self-builders swap it for their own Firebase app’s file.- The app-icon badge (approvals count) is iOS-only: Android has no numeric badge API, so
setBadgeCountis a deliberate native no-op and launchers show their standard notification dot. - Push Notifications (
/settings/push-notifications): an account-wide Receive push notifications switch plus category choices for requests, media availability, media server access, resolved reports, and administrator alerts. Problem resolved sends a plain Ready to try again push only after the recipient’s own report closes successfully and opens that report when tapped. Questions and repair reviews notify admins through Problem reports and Fixes to review; an applied repair or unsuccessful closure never announces success to the reporter. Media server access covers Plex, Jellyfin, Emby, and Audiobookshelf and opens the access guide: account-server grants prompt setup or account details, pending Plex invitations prompt acceptance, and an immediately accepted Plex share says access is ready. Existing Plex-invite opt-outs carry over. Automatically approved requests is a separate admin choice, off by default. Saved choices survive either master switch being turned off. Device permission is shown separately, and permission prompts respect the account and server switches. Web users can manage preferences for their mobile devices. Request-decision events refresh live request status without showing a separate in-app banner.