github Thinline-Dynamic-Solutions/ThinLineRadio v26.04.020
v26.04.020 - Pager Alert Push Fixes

one hour ago

What's Fixed

Server — Pager alert VoIP push sent for all calls regardless of user preference

  • pager_alert: "true" was unconditionally added to every call notification, and VoIP tokens were included for all calls — meaning every iOS device with a VoIP token received a PushKit/CallKit wake for every call, even talkgroups where the user never enabled pager-style playback
  • resolveUserPagerAlert() now reads from the in-memory PreferencesCache (O(1), no DB round-trip) and returns whether the user has pager-style audio enabled for that specific talkgroup, with tone-set-level override support
  • VoIP tokens and the pager_alert flag are now only included when resolveUserPagerAlert() returns true for that user+talkgroup combination
  • Fix applied to both sendPushNotification (single-user) and sendBatchedPushNotificationWithToneSet (multi-user) paths

Server — resolveUserAlertSound hitting the database on every notification

  • resolveUserAlertSound was issuing a SELECT per user per call instead of using the in-memory cache
  • Both resolveUserAlertSound and the new resolveUserPagerAlert now read from PreferencesCache.GetPreference(), consistent with the alert engine and keyword matcher

Relay Server — content-available: 1 set on every iOS FCM message

  • content-available: 1 was instructing iOS to wake the app silently in the background for every push, including disconnect notifications
  • This caused the background FCM handler to trigger reconnect on disconnect notifications, restarting the scanner audio even when the user had closed the app
  • content-available: 1 is now only set when pager_alert == "true" is present in the payload

Don't miss a new ThinLineRadio release

NewReleases is sending notifications on new releases.