Haptic Feedback Nedir?
Kullanıcının dokunmasına karşılık cihazın fiziksel titreşim ile geri bildirim vermesi. Buton tıklama, kaydırma, başarı/hata gibi durumlarda kullanılır. 2026 itibarıyla Apple'ın Taptic Engine ve Android'in gelişmiş haptic API'ları sayesinde çok daha hassas ve çeşitli dokunsal geri bildirim mümkündür.
Neden Önemli?
- Etkileşimlere fiziksel gerçeklik katar
- Kullanıcı aksiyonunun gerçekleştiğini onaylar
- Premium hissiyat yaratır
- Accessibility: görsel olmayan geri bildirim
- Kullanıcı memnuniyetini artırır (özellikle oyunlar ve finans uygulamalarında)
- Dokunmatik klavyelerde yazma deneyimini iyileştirir
iOS Haptic Türleri
UIImpactFeedbackGenerator
- .light: Hafif dokunma (toggle, küçük buton)
- .medium: Orta etki (buton tıklama, seçim)
- .heavy: Güçlü etki (önemli aksiyon, silme)
- .rigid: Sert, keskin (snap hissi)
- .soft: Yumuşak (kaydırma)
UINotificationFeedbackGenerator
- .success: Başarılı işlem (ödeme, kayıt)
- .warning: Uyarı
- .error: Hata
UISelectionFeedbackGenerator
- Picker, slider gibi seçim değişikliklerinde
- Hafif "tick" hissi
- Liste kaydırma sırasında öğe geçişlerinde
Core Haptics (Gelişmiş)
- CHHapticEngine ile özel haptic pattern oluşturma
- Yoğunluk (intensity), süre (duration) ve keskinlik (sharpness) kontrolü
- Transient ve continuous haptic event'ler
- Audio-haptic senkronizasyonu
- Oyun ve müzik uygulamaları için ideal
Android Haptic
HapticFeedbackConstants
- LONG_PRESS: Uzun basma
- VIRTUAL_KEY: Sanal tuş
- CONFIRM: Onay (Android 11+)
- REJECT: Red (Android 11+)
- CLOCK_TICK: Saat tick'i
- GESTURE_START / GESTURE_END: Gesture başlangıç/bitiş
VibrationEffect API
- Custom pattern oluşturma
- Amplitude kontrolü (Android 8+)
- VibrationEffect.createPredefined() ile önceden tanımlı efektler (Android 10+)
- EFFECT_CLICK, EFFECT_DOUBLE_CLICK, EFFECT_HEAVY_CLICK, EFFECT_TICK
Haptic Feedback Kısıtlamaları
- Düşük segment Android cihazlarda haptic motor kalitesi düşük
- iOS Taptic Engine çok daha hassas (Android'e kıyasla)
- Android cihazlar arası tutarsızlık olabilir
Ne Zaman Kullanılmalı?
Kullan
- Buton tıklamaları (özellikle önemli aksiyonlar)
- Toggle switch değişimi
- Slider değer değişimi (her adımda hafif tick)
- Pull to refresh tetiklendiğinde
- Başarılı/başarısız işlem bildirimi
- Silme gibi geri döndürülmez aksiyonlar
- Long press context menu açılışında
- Snap noktalarına gelindiğinde (bottom sheet, carousel)
Kullanma
- Her dokunuşta (aşırı kullanım rahatsız eder)
- Sürekli ve uzun titreşimler
- Sessiz modda bile çalışan zorunlu titreşim
- Arka plan bildirimlerinde (push ile yeterli)
- Scroll sırasında sürekli titreşim
React Native / Expo
- expo-haptics: Expo'nun haptic kütüphanesi
- impactAsync(ImpactFeedbackStyle.Light/Medium/Heavy)
- notificationAsync(NotificationFeedbackType.Success/Warning/Error)
- selectionAsync()
- react-native-haptic-feedback: Daha gelişmiş kontrol
- Daha fazla haptic türü
- Custom pattern desteği
- Android ve iOS farkları yönetilebilir
Uygulama Örnekleri
| Uygulama | Kullanım |
|---|---|
| Apple Pay | Ödeme onayında success haptic |
| Çift tap beğenide medium impact | |
| iOS Keyboard | Her tuşta hafif tick |
| Apple Maps | Slider ile zoom seviyesi değişimi |
| iMessage | Mesaj gönderiminde hafif impact |
Best Practices
- Hafif ve kısa tutun (200ms'den uzun titreşimden kaçının)
- Kullanıcıya kapatma seçeneği sunun (ayarlar ekranında)
- Her platform için uygun API kullanın
- Eski cihazlarda graceful fallback (haptic yoksa sessizce devam et)
- Accessibility ayarlarını dikkate alın
- prepare() metodunu çağırarak latency'yi azaltın (iOS)
- Haptic feedback'i ses efektleri ile birleştirmeyi düşünün
Haptic feedback, görünmez ama hissedilir bir fark yaratır. Doğru kullanıldığında uygulamanızı "premium" hissettirir.