- live activities re-enabled for follower mode *only* when using a heartbeat
- temporary removal of semaphore to prevent app from hanging when using heartbeat (still unsure why)
- also widget data is stored in a new userDefaults variable based upon the app bundle to avoid cross-contamination if various versions are installed on the same device
if the raw glucose value > 3000 mg/dl, then something is seriously wrong, return an empty array.
this should finally result in a missed reading alert. Normally the user should have had many low alerts before this happens
a limit of 3000 should be enough, the values reported in the issue go above 20000
removed widget/watch specific/duplicated extensions, moved common data models to xDrip target and made sure targets are set correctly for all common files.
- Libre 3 or Dexcom G7 as heartbeat
- Libre 3 as heartbeat: avoids the need for audioPlayer that keeps the app alive in the background. When Libre 3 sends data, xDrip4iOS will wake up and fetch a reading from LibreView
- Dexcom G7 as heartbeat: only useful in combination with Loop. Loop must read the Dexcom G7 readings and upload to NightScout. xDrip4iOS will wake up when G7 sends data and will fetch the latest reading from NightScout. This occurs with a delay (Thread.sleep) of 1 second, to give time to loop to upload the reading to NightScout. Sometimes xDrip4iOS is still to early to fetch the reading. In that case, it may help to delete the heartbeat and recreate it.
- OmniPod as heartbeat: for OmniPod users, this is a useful additional heartbeat. OmniPod has the interesting 'feature' to disconnect and reconnect every few minutes. Which allows to call the heartbeat function.
- M5Stack as heartbeat: this is implemented as part of the M5Stack transmitter, it does not appear in the list of heartbeat devices. M5Stack will wake up xDrip4iOS if it didn't receive a reading from xDrip4iOS for more than 5 minutes. This allows xDrip4iOS to download the latest reading and send it to the M5Stack. Needs the latest release of M5stack or M5Stick-C software : https://github.com/JohanDegraeve/M5_NightscoutMon or https://github.com/JohanDegraeve/M5_StickC_xdrip_iOS
- the change required also to re-enable alarms, notifications, badge counter, ... when user has chosen followerBackgroundKeepAliveType disabled
- To use Libre 3 has heartbeat:
- First connect to Libre 3 with official Libre 3 app
- when connected, go to the iOS settings and read and note the name of the Libre (it's not something with ABBOTT in it, it's more like a random string)
- force close the Libre 3 app
- in xDrip4iOS, go to the bluetooth section
- add a new transmitter of type HeartBeat
- select Libre 3
- as transmitter id, fill in the name you read in the iOS settings, just 4 or 5 characters is enough. It's case insensitive.
- click the scan button. (you will not be asked to do NFC scan)
- wait till connected
- now reopen the official Libre 3 app
- To use Dexcom G7 as heartbeat:
- make sure you connected at least once to the Dexcom G7 with the official Dexcom app and/or Loop.
- Not necessary to force close other apps (like Official Dexcom G7 app and Loop)
- go to the iOS settings and read and note the name of the Dexcom G7. It's case insensitive.
- in xDrip4iOS, go to the bluetooth section
- add a new transmitter of type HeartBeat
- select Dexcom G7
- as transmitter id, fill in the name you read in the iOS settings.
- click the scan button. (you will not be asked to do NFC scan)
- wait till connected
- To use OmniPod as heartbeat:
- Force close any other app that connects to the OmniPod (that should only be Loop)
- - in xDrip4iOS, go to the bluetooth section
- add a new transmitter of type HeartBeat
- select OmniPod
- click the scan button
- wait till connected
- you can now reopen Loop
- remove old widget target
- remove references
- remove files
- keep a copy of the localized text files and extensions used by the old widget as they can be re-used (stored in TodayWidgetSaved folder)
- app builds cleanly without anything left of old widget
- include all user settings and also extra transmitter information if available
- change layout to mimic actual settings screen
- simplify dates/times to make more readable