CrewTalk
Available5 min read

Background Operation

Professional use requires CrewTalk to stay connected even when you switch to another app — checking email, taking photos, or reviewing call sheets. CrewTalk uses platform-specific strategies to maintain reliable background connections.

Android

Foreground Service

When you enter a hub, CrewTalk starts a foreground service that keeps the audio relay connection alive:

  • Persistent notification: Shows "CrewTalk — Connected to [hub name]"
  • Service type: FOREGROUND_SERVICE_MICROPHONE — enables PTT in the background
  • Wake lock: PARTIAL_WAKE_LOCK prevents the CPU from sleeping and dropping the connection
  • The service starts automatically when you enter a hub and stops when you leave

Battery Optimization

Android's battery optimization can kill background apps. CrewTalk requests exemption:

  1. On first hub entry, a dialog asks to exempt CrewTalk from battery optimization
  2. Tap Allow to ensure uninterrupted background operation
  3. If you denied the prompt, enable it manually:
1

Open Android Settings

Go to your device's Settings > Apps > CrewTalk.

2

Find Battery Settings

Tap Battery (or Battery optimization).

3

Set to Unrestricted

Select Unrestricted (or Don't optimize).

⚠️ Critical for Reliability

Without battery optimization exemption, Android may kill CrewTalk's background process after 10-15 minutes of inactivity. This is the #1 cause of unexpected disconnections. If crew members report dropping off, check this setting first.

What the Notification Shows

The persistent notification displays:

  • Title: "CrewTalk"
  • Content: "Connected to [hub name]"
  • Icon: CrewTalk mic icon
  • The notification cannot be dismissed while connected — this is an Android requirement for foreground services
Android

iOS

Background Audio

iOS uses background audio modes to keep the connection alive:

  • The app registers for audio, voip, fetch, and remote-notification background modes
  • The audio session keeps the app alive while there's an active audio connection
  • iOS manages the background lifecycle — the app may be suspended after extended inactivity

iOS Limitations

iOS is more restrictive about background execution:

  • The app may be suspended by iOS if it's been in the background too long without audio activity
  • When suspended, the auto-reconnect triggers when you return to the app
  • Background audio works best when there's regular PTT activity on the channel
iOS

Token Refresh

Firebase auth tokens expire after 1 hour. CrewTalk proactively refreshes tokens every 45 minutes to prevent authentication failures during long background sessions.

This means:

  • You won't get disconnected due to expired tokens
  • The refresh happens silently in the background
  • Even during all-day shoots, your connection stays authenticated

Tips for Best Background Performance

  1. Enable battery optimization exemption (Android) — This is the most important step
  2. Keep the app connected — Don't manually disconnect unless you're done for the day
  3. Monitor the notification (Android) — If it disappears, you've been disconnected
  4. Return to the app periodically (iOS) — Ensures the connection is maintained
  5. Use a power source — For long shoots, keep your device plugged in
  6. Close unused apps — Reduce memory pressure that could cause the OS to kill CrewTalk

Frequently Asked Questions

CrewTalk uses minimal battery when idle in the background. The foreground service keeps the connection alive but doesn't actively consume power unless you're transmitting or receiving audio. Expect similar battery usage to any music streaming app.
Android requires apps with foreground services to show a persistent notification. This notification confirms that CrewTalk is connected and running. It cannot be dismissed while the service is active, but it's a sign that your connection is maintained.
The behavior is similar but implemented differently. Android uses a foreground service with wake lock. iOS uses background audio modes. Both keep the audio connection alive while the app is backgrounded.