Wear Bridge Background

Wear Bridge

2026
HomeLabsWear Bridge

WearOS

iOS

BLE

I've been designing and developing for both Android and iOS for a while now, and somewhere along the way I ended up with a few Android wearables sitting alongside an ageing Apple Watch. The problem is, platform-agnostic wearables have been dwindling. OEMs that used to support cross-platform pairing are quietly walking away from it. So rather than throw out perfectly good Android watches or upgrade the Apple Watch, I decided to write a solution myself. Wear Bridge is a simple BLE app that mirrors iPhone notifications straight to Wear OS using Apple's ANCS protocol. No cloud, no companion app on the phone, just Bluetooth.

Wear Bridge is open source onGitHub. Still very much an experiment, but it works on my daily setup.

View Source

How It Works

Two apps talking over Bluetooth. The Wear OS side is a Kotlin app that scans for the iPhone, bonds with it, and subscribes to ANCS notifications. The iOS side is a small Swift app that handles pairing and acts as the BLE peripheral.

iPhone (BLE Peripheral)
├── ANCS Service         → Notification broadcast
└── iOS Companion App    → Pairing & BLE management

        ── BLE/ANCS ──

Wear OS Watch (BLE Central)
├── BLE Scanner          → Device discovery
├── ANCS Parser          → Protocol decoding
├── Notification Manager → Android notification routing
├── Call Handler         → VoIP detection & Telecom API
└── Foreground Service   → Persistent connection

ANCS gives you very little per notification: an app identifier, a title, and a message body. So the watch app maps 75+ bundle IDs to icons you'd actually recognise (WhatsApp, Slack, Gmail, etc.) and uses different vibration patterns so you can tell a message from a call without looking. There's also a cooldown to stop your wrist buzzing non-stop when a group chat kicks off.

Calls were the tricky part. WhatsApp and FaceTime calls show up as regular notifications, not phone calls. The app pattern-matches on the notification content to figure out it's a call, then pushes it through Android's Telecom API so you get a proper incoming call screen, even on the lock screen.

Supported

  • Mirrors notifications from all iOS apps over ANCS
  • 75+ app icons so notifications look right on the watch
  • WhatsApp and FaceTime calls show up as real incoming calls
  • Different vibration patterns for messages vs calls
  • Reconnects automatically when Bluetooth drops
  • Stays connected in the background across watch sleep/wake
  • Cooldown filter so group chat bursts don't destroy your wrist

Up Next

  • Quick reply: the UI is there, but sending text back over BLE isn't wired up yet
  • Colour app icons instead of the current monochrome ones
  • Pairing with more than one watch or phone
  • Syncing health data both ways between Apple Health and Google Fit