Skip to content

Notify Integration with Live Activities

Marko@VMHOMELAB edited this page Sep 8, 2026 · 1 revision

Notify integration with Live Activities

Printbuddy can send notifications through Notify and, when enabled, maintain an iOS-style Live Activity for active prints.

This is useful when you want a print to stay visible on your iPhone Lock Screen or Dynamic Island without opening the Printbuddy dashboard. Instead of sending only one-off push messages, Printbuddy creates a Live Activity at print start, updates it while the job runs, and ends it when the print completes, fails, or is stopped.


What this feature does

The Notify integration supports two related notification modes:

Mode What it does
Normal Notify push Sends regular Notify push notifications for selected Printbuddy events.
Notify Live Activities Creates and updates a persistent iOS Live Activity for running prints.

Live Activities can show:

  • printer name
  • current print filename
  • print progress percentage
  • current layer / total layers, when available
  • remaining time / ETA, when available
  • paused state
  • completed, failed, or stopped final state

Printbuddy handles the Live Activity lifecycle itself. No separate sidecar container is required.


Requirements

You need:

  1. A working Printbuddy installation.
  2. At least one configured printer.
  3. The Notify app / gateway credentials:
    • Device ID
    • Device Token
  4. Network access from the Printbuddy container/server to the Notify gateway.

The default gateway URL is:

https://push.getnotifyapp.com

Only change it if you know you are using a different compatible Notify gateway.


Add a Notify provider

In Printbuddy, open the notification provider settings and add a new provider.

Use:

Provider type: Notify

Fill in:

Field Required Notes
Name Yes A readable name, for example iPhone Notify.
Device ID Yes The Notify device ID.
Device Token Yes The Notify device token. Keep this private.
Gateway URL No Defaults to https://push.getnotifyapp.com.
Live Activities No Set to Enabled if you want Lock Screen / Dynamic Island tracking.
Dynamic Island Display No Choose whether the compact display prefers progress/layer or time remaining.
Advanced Options: Use native countdown on tile No Optional. Can make the tile look busier depending on print duration.
Live Activity Keepalive Seconds No Default is 60. Controls reconciliation/update pacing.
Keep Final Tile Seconds No Default is 300. Controls how long the final state remains after ending.

After saving, use the provider test action to confirm that normal Notify delivery works before relying on Live Activities.


Recommended Live Activity settings

For most users, start with:

Live Activities: Enabled
Dynamic Island Display: Percent / layer
Use native countdown on tile: Disabled
Live Activity Keepalive Seconds: 60
Keep Final Tile Seconds: 300

This keeps the compact display readable and avoids making the Dynamic Island too noisy.

Use Time remaining only if you prefer ETA-style display over progress/layer status.


Event behavior

Live Activity lifecycle handling is separate from normal one-off notification toggles.

That matters because a Live Activity must be started, updated, and ended cleanly even when you do not want a normal push notification for every event.

Printbuddy will:

  1. Create a Live Activity when a print starts.
  2. Update it during progress changes and reconciliation/keepalive checks.
  3. Show paused state when the printer reports pause/paused.
  4. End it when the print completes, fails, is cancelled, or is stopped.
  5. Keep the final tile for the configured Keep Final Tile Seconds value.

Quiet hours and normal notification preferences should not be treated as a reason to skip required Live Activity cleanup. Ending the tile is lifecycle cleanup, not a marketing notification.


Printer filtering

Notify providers support the same printer filter behavior as other notification providers.

Use Printer Filter to choose:

Option Meaning
All printers This provider applies to events from every printer.
Selected printers This provider only applies to the checked printers.

For example:

  • one Notify provider for your main phone and all printers
  • another Notify provider for a shared workshop device, scoped only to production printers
  • separate providers for different rooms, racks, or users

If you choose Selected printers, select at least one printer before saving.


What the Live Activity displays

Printbuddy builds the tile content from live printer state.

Typical running display:

Title:  Bambu Lab P1S
Body:   42% · L188/511 · Gridfinity Tray
Status: 42% · L188/511

If remaining time is available, the tile can also show a time value such as:

1:24

Paused prints are marked clearly:

Paused · 42%

Final states are shown as:

Completed
Failed
Stopped

Long filenames are shortened so the tile stays readable.


How Printbuddy avoids duplicate tiles

Printbuddy stores Live Activity state in its database and binds it to the active printer/print identity.

The lifecycle manager tracks:

  • provider ID
  • printer ID
  • activity ID
  • print identity / subtask ID when available
  • filename fallback
  • last progress
  • last known layer information
  • activity state and timestamps

Before creating a new tile for the same provider/printer, Printbuddy ends or reuses existing active state where appropriate. This helps avoid duplicate Lock Screen tiles during restarts, progress recovery, or back-to-back prints.

If a previous activity has expired or Notify reports it as gone, Printbuddy can replace it during reconciliation.


Troubleshooting

No test notification arrives

Check:

  1. Device ID is correct.
  2. Device Token is correct.
  3. Gateway URL is reachable from the Printbuddy host/container.
  4. The provider is enabled.
  5. There is no proxy/firewall rule blocking outbound HTTPS.

For Docker installs, check container logs:

docker logs -f printbuddy 2>&1 | grep -iE "notify|live activity|notification"

For Docker Compose installs:

docker compose logs -f printbuddy | grep -iE "notify|live activity|notification"

Normal push works, but no Live Activity appears

Check:

  1. Live Activities is set to Enabled on the Notify provider.
  2. The provider is enabled.
  3. The print event comes from a printer included by the provider's printer filter.
  4. A print has actually started after enabling the feature.
  5. The iPhone/Notify side allows Live Activities.

Also check the Printbuddy logs for Live Activity messages:

docker logs --since 2h printbuddy 2>&1 \
  | grep -iE "notify live activity|live activity|activity" \
  | tail -200

Useful log meanings:

Log clue Meaning
already active / reusing existing activity Printbuddy found an existing tile and avoided a duplicate.
created from progress update Printbuddy recovered/created a tile during progress reconciliation.
replaced expired activity The old activity was considered expired/gone and was replaced.
update failed with HTTP 410 Notify/iOS reported the activity as gone or expired.
start failed Printbuddy could not create the Live Activity. Check credentials/gateway.

Duplicate Live Activities appear

Check three layers before changing anything:

  1. Printbuddy logs
  2. Printbuddy persisted Live Activity database rows
  3. Notify gateway / iOS state

Start with logs:

docker logs --since 2h printbuddy 2>&1 \
  | grep -iE "notify live activity|live activity|activity" \
  | tail -300

Then inspect the database rows if needed. Inside the container, find the database:

docker exec printbuddy sh -lc 'find /app/data -maxdepth 3 -type f \( -name "*.db" -o -name "*.sqlite" -o -name "*.sqlite3" \) -print'

Then query the Live Activity table, adjusting the database path if required:

docker exec printbuddy sh -lc '
DB=$(find /app/data -maxdepth 3 -type f \( -name "*.db" -o -name "*.sqlite" -o -name "*.sqlite3" \) | head -1)
echo "DB=$DB"
sqlite3 "$DB" "
.headers on
.mode column
SELECT id, provider_id, printer_id, activity_id, subtask_id, filename, state,
       last_progress, last_layer_num, last_total_layers, created_at, updated_at,
       ended_at, expires_at
FROM notification_live_activities
ORDER BY id DESC
LIMIT 30;
"
'

For the same print, a healthy state should usually show one active row for the current provider/printer/print and older rows ended.

If Notify shows only one active activity but iOS still shows more than one tile, the duplicate may be stale local iOS/Notify presentation state rather than Printbuddy creating multiple active activities.


Security notes

  • Treat the Notify device token like a password.
  • Do not paste full tokens into public bug reports, screenshots, logs, or GitHub issues.
  • If you need to share troubleshooting output, redact tokens and shorten activity IDs.
  • Printbuddy redacts Notify tokens from Live Activity client errors where possible, but logs and screenshots should still be handled carefully.

Good defaults for most setups

Use one Notify provider per receiving device or audience.

For a simple single-user setup:

Name: iPhone Notify
Provider type: Notify
Printer Filter: All printers
Live Activities: Enabled
Dynamic Island Display: Percent / layer
Use native countdown on tile: Disabled
Keep Final Tile Seconds: 300

For print farms or shared spaces, prefer scoped providers:

Workshop iPad: Selected printers → Rack A
Owner iPhone:  All printers
Operator phone: Selected printers → Production printers only

That keeps notifications useful instead of noisy. Clean signal, less spam — exactly how this should be built.

Clone this wiki locally