iPhone bildirimlerini (WhatsApp, SMS, arama, e‑posta…) Galaxy Watch 7'ye getiren açık kaynak köprü. Open-source bridge that brings iPhone notifications to a Samsung Galaxy Watch 7.
⭐ İşine yaradıysa bir yıldız bırak — başkaları da bulabilsin!
iPhone'dan gelen bir WhatsApp / SMS bildiriminin birkaç saniye içinde Galaxy Watch 7 ekranında belirişini gösteren kısa bir demo yakında buraya eklenecek. Katkı sağlamak isteyen varsa kendi kurulumundan bir GIF/ekran görüntüsü paylaşabilir (bkz. CONTRIBUTING).
Galaxy Watch 7, Wear OS 5 ile birlikte iPhone desteğini resmi olarak kaldırdı. iPhone kullanıp Galaxy Watch takanlar, bildirimlerini saatte göremediği için ya pahalı üçüncü parti uygulamalara (Merge vb.) para veriyor ya da saati yarım kullanıyor.
WatchBridge tam olarak bu boşluğu dolduruyor — hem de o ücretli uygulamaların kullandığı yöntemin aynısıyla: Apple Notification Center Service (ANCS). iPhone, bildirimlerini zaten Bluetooth LE üzerinden standart bir servis olarak yayınlıyor; WatchBridge bu servise saatten bağlanıp bildirimleri saatinde gösteriyor. Abonelik yok, sunucu yok, verin cihazından çıkmıyor.
iPhone (iOS) Galaxy Watch 7 (Wear OS 5)
┌───────────────────────────┐ BLE ┌─────────────────────────────────┐
│ WatchBridge Companion │ ◄─────── │ tarama (5A5A0001… servisi) │
│ sadece "buradayım" yayını│ │ │
│ │ │ bağlan → bond (eşleşme) │
│ iOS ANCS servisi (yerleşik)│ ───────► │ Notification Source → yeni olay │
│ bildirimleri BLE'den │ ◄─────── │ Control Point → "detayı ver" │
│ paylaşır │ ───────► │ Data Source → başlık, mesaj… │
└───────────────────────────┘ │ → saatte Android bildirimi │
└─────────────────────────────────┘
wear/— Kotlin + Jetpack Compose (Wear OS). Asıl iş burada: BLE merkezi, ANCS istemcisi, saatte bildirim + aksiyonlar, arka plan servisi.ios/WatchBridgeCompanion/— SwiftUI + CoreBluetooth. Yalnızca ilk eşleşmede iPhone'u saate görünür yapar; sonrasında kapatabilirsin.
| Özellik | Durum |
|---|---|
| Tüm iPhone bildirimleri (başlık, mesaj, uygulama adı) | ✅ |
| Gelen arama — saatten Cevapla / Reddet | ✅ |
| Bildirimi iPhone'da silince saatten de kalkması | ✅ |
| Saatten bildirimi temizleme | ✅ |
| Saat yeniden başlayınca otomatik yeniden bağlanma | ✅ |
| Sessiz / önceden var olan bildirimler titreşimsiz | ✅ |
| Mesajlara saatten yanıt yazma | ❌ ANCS desteklemiyor |
| Müzik kontrolü (AMS) | ⏳ Yol haritasında |
| Adım/nabız → Apple Health | ⏳ Yol haritasında |
Ayrıntılı adımlar aşağıda. Gereken: bir Mac (Xcode + ADB), saatin bir kez Android ile ilk kurulumunun yapılmış olması.
1 · Saate (ADB kablosuz): Saatte Geliştirici seçenekleri → Kablosuz hata ayıklama'yı aç, adb pair + adb connect, sonra wear/ projesini Android Studio'dan Run (ya da ./gradlew installDebug).
2 · iPhone: Xcode'da SwiftUI "WatchBridgeCompanion" projesi aç, ios/WatchBridgeCompanion/ içindeki 3 .swift dosyasını ekle, NSBluetoothAlwaysUsageDescription ve Background Mode "Acts as a Bluetooth LE accessory" ayarla, kendi iPhone'una Run.
3 · Eşleştir: Companion uygulamayı ön planda tut → saatte WatchBridge'i aç → iPhone'u eşleştir → iPhone'da eşleşme + bildirim iznini onayla. Durum Bağlı ✓ olunca hazır.
Ayrıntılı kurulum adımları
- Saatte Ayarlar → Saat hakkında → Yazılım → Yazılım sürümü'ne 5 kez dokun → Geliştirici seçenekleri açılır.
- Geliştirici seçenekleri → ADB hata ayıklama ve Kablosuz hata ayıklama'yı aç (saat ve Mac aynı Wi‑Fi'da).
- Kablosuz hata ayıklama → Yeni cihaz eşleştir → ekrandaki IP:port ve 6 haneli kodla:
adb pair 192.168.1.50:41234 # eşleştirme portu + kod adb connect 192.168.1.50:5555 # ana port
wear/klasörünü Android Studio ile aç, cihaz olarak saati seç, Run. Ya dacd wear && ./gradlew installDebug.
Saati bir Android telefonla kurduysan, Galaxy Wearable'dan o bağlantıyı koparma (saat sıfırlanır). Telefon kapalı/uzakta olabilir.
- Xcode → New Project → iOS App (SwiftUI), adı
WatchBridgeCompanion. ios/WatchBridgeCompanion/içindeki 3.swiftdosyasını projeye sürükle (varsayılanContentView.swiftve…App.swiftyerine).- Info →
NSBluetoothAlwaysUsageDescription= "Saatin iPhone'u bulabilmesi için Bluetooth gerekiyor." - Signing & Capabilities → + Background Modes → "Acts as a Bluetooth LE accessory".
- Kendi iPhone'una Run.
- iPhone'da companion uygulamayı açık ve ön planda tut.
- Saatte WatchBridge → izinleri ver → iPhone'u eşleştir.
- iPhone'da Bluetooth Eşleşme İsteği → Eşleştir, sonra bildirimleri göstermesine izin ver.
- iPhone Ayarlar → Bluetooth → (saat adı) ⓘ → Sistem Bildirimlerini Paylaş açık olsun.
- Durum Bağlı ✓ olunca companion'ı kapatabilirsin; saat kendi yeniden bağlanır.
Saf Kotlin ANCS parser'ının birim testleri:
cd wear && ./gradlew test- Yeniden bağlanma: iPhone rastgele (RPA) BLE adresi kullanır. Bond sonrası Android genelde çözer; takılırsa companion açıkken saatte tekrar "iPhone'u eşleştir".
- Pil: Servis
connectedDevicetipinde foreground service. Takılırsa saatte Ayarlar → Uygulamalar → WatchBridge → Pil → Kısıtlanmamış. - Log:
adb logcat -s WatchBridge GattQueue
Issue ve PR'lar memnuniyetle karşılanır — özellikle AMS (müzik kontrolü) ve HealthKit senkronizasyonu katkıya açık. Farklı Wear OS 5 saatlerinde test sonuçlarını da paylaşabilirsin.
MIT — LICENSE.
Kişisel, deneysel bir projedir. Apple, Samsung veya Google ile bir ilişkisi yoktur; ANCS, AMS gibi adlar ilgili sahiplerine aittir. Yalnızca kendi cihazlarında kullan.