# Bluetooth yakınlığıyla ekran kilidi: 'var/yok' yetmiyor

> Yanındaki cihaz uzaklaşınca bilgisayarı kilitleyen yakınlık kilidi; menü çubuğu uygulaması SignalLock'a dönüştü.

- Şu an ne yapıyor: Yanındaki cihaz uzaklaşınca macOS ekranını kilitliyor; karar ham "var/yok" sinyaline değil bir yakınlık değerlendirmesine dayandığı için sinyal dalgalanması yanlış kilit üretmiyor. Menü çubuğu uygulaması yayında, indirilip kullanılabilir.
- Tür: Açık kaynak
- Durum: Ürün oldu
- Odak: Güvenlik & doğrulanabilirlik
- Başlangıç: 2026-03-01
- Labs’tan çıkış: 2026-05-20
- Teknolojiler: Swift, SwiftUI, CoreBluetooth, CoreLocation, C#, .NET 8
- Etiketler: #bluetooth, #macos, #guvenlik
- Kaynak kodu: https://github.com/signallockapp/
- Web sitesi: https://signallock.app
- Bu iş ürüne dönüştü: SignalLock (https://www.muhammetsafak.com.tr/portfolyo/signallock/)
- Kaynak: https://www.muhammetsafak.com.tr/labs/signallock-lab/
- Dil: tr-TR
- Yazar: Muhammet Şafak

---
Bluetooth cihazı menzilde mi diye sormak kolay; cevabın doğru olması ayrı iş.
Ham "var/yok" sinyali saniyede birkaç kez yalan söylüyor ve her yalan bir
yanlış kilit demek.

## "Var/yok" yalan söylüyor

Ortak çalışma alanında kilitlenmemiş bir Mac gizlilik riski; kilitlemeyi
hatırlamak da kullanıcının işi olmamalı. Denenen çözüm: kullanıcının zaten
yanında taşıdığı bir Bluetooth cihazını (iPhone, Apple Watch, AirPods, BLE
etiketi) güvenilir cihaz saymak ve menzil dışına çıkınca ekranı kilitlemek.

İşin asıl konusu sinyalin kendisi oldu. Bluetooth sinyali doğası gereği
dalgalanıyor; cihaz masanın üstünde dururken bile birkaç örneklemede
kayboluyor. Düz görünürlüğe bakan bir kilit, kullanıcı yerinde otururken
ekranı kilitliyor.

## Görünürlük yerine yakınlık değerlendirmesi

Uygulamanın çekirdeği düz görünürlük yerine bir yakınlık değerlendirmesi
üzerine kuruldu: yumuşatılmış RSSI sinyal gücü ile son görülme zaman damgası
birlikte okunuyor. RSSI eşiği, uzaklaşma gecikmesi ve yumuşatma penceresi
kullanıcı tarafından ayarlanabiliyor; varsayılanlar yanlış kilidi en aza
indirecek biçimde bilinçli olarak temkinli seçildi.

macOS tarafı Swift/SwiftUI + CoreBluetooth, Windows tarafı C#/.NET 8. İki ayrı
yerel sürüm, aynı algoritmayı ve aynı yapılandırma modelini paylaşıyor.

## Ağa hiç çıkmamak

Bu tür bir araç için bulut en kolay yol: cihaz eşleştirmesini sunucuda tut,
ayarları senkronla, "masamı bul" gibi özellikler ekle. Hepsi bir hesap sistemi
ve bir arka uç demek.

Seçilen kısıt bunun tersi: uygulama hiçbir ağ isteği yapmıyor. Arka uç sunucu,
bulut senkronizasyonu, hesap, telemetri, analitik yok; konum servisleri
kullanılmıyor ve bütün ayarlar yalnızca kullanıcının kendi makinesinde
duruyor.

Bedeli açık — cihazlar arası senkronizasyon yok, uzaktan yönetim yok, kullanım
verisi olmadığı için varsayılan eşikler ölçümle değil muhafazakâr tercihle
belirlenmiş durumda. Karşılığında ekranını kilitlemek isteyen kullanıcı, bunun
için yanındaki telefonun kimliğini bir sunucuya vermek zorunda kalmıyor. Bir
güvenlik aracı için doğru takas bu.

## İki kod tabanı, tek algoritma

Sıfır ağ kararının ikinci sonucu platform tarafında. Ağa çıkmayan, sürekli
Bluetooth tarayan ve ekran kilidini tetikleyen bir uygulama, çalıştığı işletim
sisteminin en alt katmanlarına dokunuyor: macOS'ta CoreBluetooth ve kilit API'si,
Windows'ta kendi Bluetooth yığını ve oturum yönetimi.

Tek bir çapraz platform kabuğu iki sürümü tek kod tabanında tutardı. Bedeli, o
kabuğun altındaki platform farkını yine de yazmak ve üstüne bir çalışma zamanı
taşımak olurdu — menü çubuğunda oturan, sürekli açık kalan bir araç için ağır
bir fatura.

Seçilen yol iki ayrı yerel sürüm oldu: macOS için Swift/SwiftUI, Windows için
.NET 8. Paylaşılan şey kod değil, yakınlık algoritmasının ve yapılandırma
modelinin kendisi — eşikler, gecikme ve yumuşatma penceresi iki tarafta aynı
anlama geliyor. Bakım yüzeyi ikiye çıkıyor, davranış tek kalıyor.

## Menü çubuğuna giden yol

Menü çubuğu uygulaması olarak yayınlandı; ürün sayfası ve indirmesi kendi alan
adında. Ayrıntısı portfolyoda.
