Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/build/build-options.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

* Browser Build:
* If you have never built, see [*LoopFollow* Browser Build](lf-browser-build.md)
* If you are updating from v3.x or older, you need follow the one-time steps to [Update from *LoopFollow* v3.x](lf-browser-build.md#update-from-loopfollow-v3x){: target="_blank" }
* If you are updating from v5.x or older, you need follow the one-time steps to [Update to *LoopFollow* v6.x](lf-browser-build.md#update-to-loopfollow-v6x){: target="_blank" }
* Mac-Xcode: [Build *LoopFollow* Script for Mac-Xcode](#build-loopfollow-script-for-mac-xcode)

### Build *LoopFollow* Script for Mac-Xcode
Expand Down
77 changes: 6 additions & 71 deletions docs/build/lf-browser-build.md
Original file line number Diff line number Diff line change
Expand Up @@ -137,12 +137,14 @@ The `Add Identifier` &nbsp;<span class=notranslate>Action</span>&nbsp; should su

## Create `App Group`

New builders - just continue with the instructions as provided on this page.

### Update to *LoopFollow* v6.x

!!! important "Updating LoopFollow to version 6.0 and newer"
New builders - just follow the instructions as provided on this page.

This information admonition is for existing builders who need to update.

The addition of Live Activity requires adding the LoopFollow App Group. Your build will fail until you take these steps.
The addition of Live Activity requires adding the LoopFollow App Group. Your build will fail until you take these one-time steps.

If you are updating from an earlier version, **sync your fork** and then:

Expand All @@ -160,7 +162,7 @@ If you have never built the *LoopFollow* app with *Xcode* using your `TEAMID`, y
1. Open this link: [Register an App Group](https://developer.apple.com/account/resources/identifiers/applicationGroup/add/) on the *Apple Developer* site.
1. For **`Description`**, use `LoopFollow App Group`
1. For **`Identifier`**, enter `group.com.TEAMID.LoopFollow`, substituting your Team ID for `TEAMID`
* **You must replace `TEAMID` with your 10-digit Apple Developer ID - do not just copy the App Group Identifier above**
* **You must replace `TEAMID` with your 10-character Apple Developer ID - do not just copy the App Group Identifier above**
* A mistake here means you will not be able to build the *LoopFollow* app until you fix it
1. Click `Continue` and then `Register`.

Expand Down Expand Up @@ -353,70 +355,3 @@ Please do not remove an existing app if you have trouble building a new one. You
## Install on Phone

The [LoopDocs instructions: Install on Phone](https://loopkit.github.io/loopdocs/browser/phone-install) walk you through the steps to install the app to a phone. When going through those steps, replace your App Name for&nbsp;_<span translate="no">Loop</span>_. Everything else is the same.


!!! success "Adding Push Notifications Simplified with v4.4"
Provided in *LoopFollow* v4.4 and newer, you can run Add Identifiers to add the required `Push Notifications` capability.

For *LoopFollow* v4.0 through 4.3, you had to manually add that capability to the Identifier. Thanks to our friends at fastlane, who updated their tool, this manual action is no longer necessary.

## Legacy: Updating from v3.x

Given that a Browser Build must be rebuilt every 90 days, the instructions here are unlikely to be required.

### Update from *LoopFollow* v3.x

When updating from an older version of *LoopFollow*, v3.x or older, you need to add the `Push Notification` to the Identifier Capabilities:

* [Sync Your Fork](#sync-your-fork)
* [Run Add Identifiers](#run-add-identifiers) to add the new capability
* [Build Your App](#build-your-app)

> Repeat these steps if you use LoopFollow_Second or LoopFollow_Third.

#### Sync Your Fork

* Go to your *LoopFollow* fork and click on the Sync button

> ![sync the fork](img/github-build-check-fork-status.svg){width="700"}

#### Run Add Identifiers

* In your *LoopFollow* fork, select the Action tab and run the Add Identifiers Action
* Wait for a successful completion before trying to Build.

??? abstract "Detailed Instructions to Run Add Identifiers (Click to open/close)"
Refer to the graphic below for the numbered steps:

1. Click on the "Actions" tab of your repository
1. On the left side, click on "Add Identifiers"
1. On the right side, click "Run Workflow" to show a dropdown menu
* You will see your default branch (`main`)
* You can select a different branch, but typically, you run the default
1. Tap the green button that says "Run workflow"

![add identifiers using github actions](img/action-02-add-identifiers.svg){width="700"}
{align="center"}

The `Add Identifier` &nbsp;<span class=notranslate>Action</span>&nbsp; should succeed or fail in a few minutes.

* If you see the green check (:octicons-check-circle-fill-16:{: .passed }) continue to the next section
* If you see the red `X` (:octicons-x-circle-fill-16:{: .failed }):
* Use the Browser Build Errors page to resolve the error, then repeat the Action
* [Quick Reference for Browser Build Errors](https://loopkit.github.io/loopdocs/browser/bb-errors/#quick-reference-for-browser-build-errors)

#### Build Your App

* In your *LoopFollow* fork, select the Action tab and run the Build LoopFollow Action
* Wait for a successful completion and wait for the TestFlight upload (timing varies from a few minutes to a few hours) until trying to install the new build on your phone

??? abstract "Detailed Instructions to Build LoopFollow (Click to open/close)"
1. Click on the Actions tab of your *LoopFollow* repository
2. On the left side, click on `4. Build LoopFollow`
3. On the right side, click Run Workflow to show a dropdown menu
4. Tap the green button that says Run workflow.

> ![add identifiers](img/action-04-build.svg){width="700"}

**Once this completes, be sure to update from TestFlight to get the updated version of *LoopFollow* on your phone.**

98 changes: 31 additions & 67 deletions docs/faqs/lf-faqs.md
Original file line number Diff line number Diff line change
@@ -1,99 +1,63 @@
## Why do Notifications vanish before I can read them?

!!! tip "Pro Tip: Frequent Glucose Alerts"
If you are experiencing audible and visible glucose alerts every single minute, disable the *LoopFollow* > Settings > General > Persistent Notifications slider.
You need to modify your iPhone settings to make the banners persistent.

Note: this is completely different from the persistent notifications you may want enabled to see APNS messages returned from real-time responses to remote commands.
In iPhone Settings, select Notifications, then Apps and then *LoopFollow*.

- - -
For the banner style, select Persistent. Then each notification remains visibile until you swipe up.

## Why do I keep getting "App inactive for X minutes. Open to resume."? { #app-inactive-silent-tune }

This happens when *LoopFollow* isn't able to stay running in the background as intended. When *LoopFollow* is configured to use the *Silent Tune* method (playing silent audio to stay alive), the notification fires if that silent audio gets interrupted and the app becomes inactive.

A common reason is that another app temporarily takes control of audio — for example the iPhone alarm or apps like Microsoft Teams. While that other app holds the audio session, *LoopFollow* can't keep itself alive in the background. If it's just temporary, you can simply tap the notification to reopen the app and it will resume normally.

Another reason is if the app has been manually closed (swiping it away from the app switcher). In that case, the background activity stops completely, including *Silent Tune*, and the app needs to be opened again.
This also means that the current banner might be out of date if you haven't looked at your phone for a while.

- - -

## Why do I keep getting "App inactive for X minutes. Verify Bluetooth connectivity."? { #app-inactive-bluetooth }

This happens when *LoopFollow* isn't able to stay running in the background as intended. When *LoopFollow* is configured to use a Bluetooth heartbeat (RileyLink, Dexcom, or Omnipod Dash), it relies on regular Bluetooth signals from that device to wake itself up in the background. The notification fires when those signals stop arriving for several minutes.
## Why do I get audible and visible glucose alerts every single minute?

Common reasons:
If you are experiencing audible and visible glucose alerts every single minute, disable the *LoopFollow* > Settings > General > Persistent Notifications slider.

* **The Bluetooth device is out of range.** The phone and the heartbeat device need to stay within Bluetooth range — typically a few meters and worse through walls.
* **Bluetooth is turned off** on the phone, or the phone is in Airplane Mode without Bluetooth re-enabled.
* **The Bluetooth device has a low or dead battery.** RileyLink-style devices and expired Dexcom transmitters/sensors keep working only as long as their internal battery has enough power to advertise.
Note: this is completely different from the persistent notifications you may want enabled to see APNS messages returned from real-time responses to remote commands.

If the connection comes back on its own, the alert will stop. If it does not, check Bluetooth on the phone, move closer to the heartbeat device, and consider whether the device's battery has run out.

- - -

## Version Compatibility

This section consolidates version requirements for *LoopFollow* to work with *Loop* and *Trio*, and provides historical context for how remote control has evolved.

It also lists updates to the method for using Browser Build.
## Does using DASH as a Background App Refresh Type increase Pod failure rate?

### *LoopFollow* Version 6.0 and newer
No, it shouldn't.

With the addition of Live Activity to *LoopFollow*, the build directions for browser build were updated.
What is happening under the hood: when you pick DASH as your heartbeat, *LoopFollow* connects to the pod's normal BLE service and just listens in on the same notifications *Loop*/*Trio* is already getting. It's not poking the pod or asking it for anything extra — it's eavesdropping on traffic that is happening anyway.

* If you use Browser Build, your automatic build will fail until you add the new Identifier, create the `LoopFollow App Group` and include the `LoopFollow App Group` in the capabilities for the *LoopFollow* Identifiers.
* Instructions start here: [Add LoopFollow App Group](../build/lf-browser-build.md#create-app-group){: target="_blank" }
Because both apps, *LoopFollow* + (*Trio* or *Loop*), are on the same phone, iOS only opens one actual BLE connection to the pod and shares it between them. So from the pod's perspective there is just one controller talking to it, same as always. Whether one app is listening or two, the pod is doing the exact same radio work.

### *LoopFollow* and *Loop* Compatibility
*LoopFollow* tagging along will not affect the pod battery.

| Feature | Minimum Versions Required |
|:--|:--|
| *Loop* Remote Control via APNS | *LoopFollow* 3.2 or newer; any version of *Loop* |
| Real-time APNS response from *Loop* phone | *LoopFollow* 4.6 or newer; *Loop* v3.11.1 or newer |

With *LoopFollow* 3.2 and newer, *Loop* remote commands include Meal, Bolus and Override control. *LoopFollow* no longer requires the *Nightscout* site to be configured with the APNS credentials — Read access for the *Nightscout* URL is sufficient.

With *LoopFollow* 3.1 and older, *Loop* remote commands were limited to Overrides, required the *Nightscout* site to be configured with the APNS credentials, and required a token with `careportal` access.
- - -

### *LoopFollow* and *Trio* Compatibility
## Why do I need APN credentials to use Live Activity?

!!! important "Breaking Change: *Trio* Remote Command Users"
*Trio* users must have matching versions of *LoopFollow* and *Trio* for remote control to work.
* When *LoopFollow* uses Silent Tunes as Background Refresh, it is not able to update the Live Activity display while the phone is locked unless APN are available
* The decision was made to require APN for Live Activity regardless of Background Refresh selection

* *Trio* 0.6 (or newer) requires *LoopFollow* 4.0 (or newer)
* *Trio* 0.5.1.28 (or older) requires *LoopFollow* 3.2.11 (or older)
- - -

Remote control commands stop working if versions are not matched. You do **not** need to reconfigure your credentials when upgrading — your existing settings continue to work. However, *LoopFollow* Browser Build users must update their Identifiers when upgrading from v3.x: see [Legacy: Updating from v3.x](../build/lf-browser-build.md#legacy-updating-from-v3x){: target="_blank" }.
## Why do I keep getting "App inactive for X minutes. Open to resume."? { #app-inactive-silent-tune }

| Feature | Minimum Versions Required |
|:--|:--|
| *Trio* Remote Control via APNS | *LoopFollow* 4.0 or newer; *Trio* 0.6 or newer |
| Real-time APNS response from *Trio* phone | *LoopFollow* 4.0 or newer; *Trio* 0.6 or newer |
| Nightscout Careportal (Temp Targets only) | Available for all *Trio* versions |
| *Nightscout* OpenAPS pill display | *Nightscout* 15.0.2 or newer with *Trio* 0.5.x or newer |
This happens when *LoopFollow* isn't able to stay running in the background as intended. When *LoopFollow* is configured to use the *Silent Tune* method (playing silent audio to stay alive), the notification fires if that silent audio gets interrupted and the app becomes inactive.

With *Trio* 0.2.x, *LoopFollow* only supports Temp Targets via the *Nightscout* Careportal, which requires a token with `careportal` access. Once updated to *Trio* 0.5.x or newer, the full *Trio* Remote Control options are available.
A common reason is that another app temporarily takes control of audio — for example the iPhone alarm or apps like Microsoft Teams. While that other app holds the audio session, *LoopFollow* can't keep itself alive in the background. If it's just temporary, you can simply tap the notification to reopen the app and it will resume normally.

For those following a looper using *Trio* 0.2.x, the only remote setting option in *LoopFollow* is *Nightscout* (Careportal). With this selection:
Another reason is if the app has been manually closed (swiping it away from the app switcher). In that case, the background activity stops completely, including *Silent Tune*, and the app needs to be opened again.

* The *LoopFollow* phone sends commands to *Nightscout*, which then forwards commands to the *Trio* phone
* The *Nightscout* display will be updated first
* If there is an issue sending the Careportal request, it might not reach the *Trio* phone
* After the next *Nightscout* download, *LoopFollow* display will reflect whether commands completed the full round trip
- - -

### APNS Keys Do Not Need to Be in Nightscout
## Why do I keep getting "App inactive for X minutes. Verify Bluetooth connectivity."? { #app-inactive-bluetooth }

With *LoopFollow* 3.2 and newer, the APNS credentials are entered directly in the *LoopFollow* app. They do **not** need to be embedded in the *Nightscout* site for remote control to work. This simplifies *Nightscout* configuration, especially for those using a paid *Nightscout* service.
This happens when *LoopFollow* isn't able to stay running in the background as intended. When *LoopFollow* is configured to use a Bluetooth heartbeat (RileyLink, Dexcom, or Omnipod Dash), it relies on regular Bluetooth signals from that device to wake itself up in the background. The notification fires when those signals stop arriving for several minutes.

The APNS credentials only need to be in *Nightscout* if you also use *Nightscout* Careportal or the *LoopCaregiver* app to send remote commands.
Common reasons:

## *LoopFollow* Feature History
* **The Bluetooth device is out of range.** The phone and the heartbeat device need to stay within Bluetooth range — typically a few meters and worse through walls.
* **Bluetooth is turned off** on the phone, or the phone is in Airplane Mode without Bluetooth re-enabled.
* **The Bluetooth device has a low or dead battery.** RileyLink-style devices and expired Dexcom transmitters/sensors keep working only as long as their internal battery has enough power to advertise.

The feature history is summarized below in reverse chronological order.
If the connection comes back on its own, the alert will stop. If it does not, check Bluetooth on the phone, move closer to the heartbeat device, and consider whether the device's battery has run out.

| *LoopFollow* Version | Feature Added |
|:--|:--|
| 6.0 | Live Activity added - must use LoopFollow App Group to build<br>see [Add LoopFollow App Group](../build/lf-browser-build.md#create-app-group){: target="_blank" } |
| 4.6 | Real-time APNS notifications returned from the *Loop* phone (requires *Loop* v3.11.1 or newer) |
| 4.3 | Separate QR codes for *Nightscout* Site, Dexcom Share, Remote Settings, and Alarm Settings |
| 4.0 | *Trio* 0.6 remote control support; share remote configuration via QR code |
| 3.2 | *Loop* remote commands (Meal, Bolus, Override) sent directly via APNS; APNS credentials no longer required in *Nightscout* |
- - -
Loading