Screen Time API'sinde Apple'ın düzeltmesini istediğim 3 şey

Aynı uygulama engelleyiciyi iPhone ve Android için yaparken karşılaştıklarım. Yazan: Thomas Willheim · 30 Eylül 2026

Ekran süresini şınav çekerek kazandığın bir uygulama engelleyici olan HonorFit'i yapıyorum (onur sistemiyle çalışıyor, kamera yok). iPhone'da ve Android'de aynı uygulama: aynı fikir, kodun da çoğu aynı. Peki dürüst olayım mı? Android sürümünü kullanmak daha keyifli.

Bunun sebebi Android'in uygulama engellemede daha iyi olması değil. iOS'un Screen Time API'si engelleme kısmında aslında gerçekten sağlam. Sebebi, iOS'un seni üç belirli konuda kısıtlaması ve bu kısıtlamaların hiçbiri kullanıcıyı korumak için orada değil gibi görünüyor. İşte listem ve her biri için Apple'dan ne isteyeceğim. Kimseye gizlilik açısından bir şey kaybettirmeyecek şeylerde kalmaya çalıştım.

(Bu API üzerine geliştirmenin işin mutfağına dair halini ayrıca yazdım: Apple'ın belgelerinin söylemedikleri.)

1. Aynı anda yalnızca tek bir Ekran Süresi uygulaman olabilir

Diyelim ki zaten Brick, Opal ya da one sec kullanıyorsun ve HonorFit'i de denemek istiyorsun. iPhone'da bunu yapamazsın. İkinci uygulama Ekran Süresi erişimi istediğinde iOS izin penceresini bile göstermiyor. Sadece Family Controls'ün aynı anda yalnızca tek bir uygulama tarafından kullanılabileceğini söyleyen bir hata fırlatıyor. Bu hatayı kendim de gördüm ve başka geliştiriciler de bununla karşılaşıyor.

Geçiş yapmak için Ayarlar › Ekran Süresi › Ekran Süresi Erişimi Olan Uygulamalar bölümüne gidip diğer uygulamayı kapatman, bazen de telefonunu yeniden başlatman gerekiyor. HonorFit artık bu hatayı algılıyor ve kullanıcıya adım adım yol gösteriyor, çünkü ham hata mesajı normal bir insan için hiçbir şey ifade etmiyor.

iPhone'da HonorFit uyarısı: Ekran Süresi'ni başka bir uygulama kullanıyor. iOS, Ekran Süresi'ni aynı anda yalnızca bir uygulamanın yönetmesine izin verir; altında diğer uygulamayı Ayarlar'dan kapatma adımları
Başka bir uygulamanın zaten Ekran Süresi erişimi varsa iPhone kullanıcılarının HonorFit'te gördüğü ekran. iOS uygulamaya sadece bir hata veriyor; bu açıklama bizim.

İşin tuhaf yanı şu: Apple bu tür yetkilendirmeyi WWDC22'de tanıttığında, ebeveyn denetimi yetkilendirmesinin aksine bireysel yetkilendirmenin bir cihazdaki istenen sayıda uygulama tarafından kullanılabileceğini söylemişti. Bugün olan bu değil ve bunun belgelendiği bir yer de bulamadım.

Bu neden kullanıcıların yararına değil: insanlar araçları bir arada kullanıyor. Biri iş yerindeki yoğun odak seansları için Brick, akşamki scroll süresini kazanmak için de HonorFit kullanabilir. Apple'ın kısıtlamaları birleştirmek için zaten bir kuralı var: birden fazla ManagedSettingsStore aynı şeyi ayarladığında, Apple'ın deyişiyle "the most restrictive setting always wins" (en kısıtlayıcı ayar her zaman kazanır). Aynısını uygulamalar arasında da yapmak, insanların ikisini birden kullanmasını sağlar ve telefon bu şekilde ancak daha kilitli hale gelebilir, asla daha az değil.

İsteğim: WWDC22'de anlatıldığı gibi birden fazla uygulamanın bireysel Ekran Süresi yetkisine sahip olmasına izin verin ve kalkanlarını aynı "en kısıtlayıcı olan kazanır" kuralıyla birleştirin. Bu sınırın gerçek bir sebebi varsa, bunu belgeleyin ve uygulamalara durumu açıklayabilmeleri için düzgün bir hata kodu verin.

2. Uygulama seçici hantal ve uygulamalar onu özelleştiremiyor

iPhone'da hangi uygulamaların engelleneceğini seçmek, Apple'ın FamilyActivityPicker'ı demek. Bu, uygulamanın değiştiremediği bir sistem penceresi; değiştirebildiğin tek şey bir satırlık üst ve alt bilgi metni. Bir kategori listesiyle açılıyor (Sosyal, Oyunlar, Eğlence...) ve asıl uygulamaları bulmak için bir kategorinin içine girmen gerekiyor. Android'de listeyi kendim oluşturuyorum, bu yüzden HonorFit yüklü uygulamalarını son 24 saatte her birini ne kadar kullandığına göre sıralı gösteriyor.

iOS Ekran Süresi uygulama seçicisi: uygulama kategorilerinden oluşan bir liste, Health & Fitness kategorisi açılmış ve içindeki uygulamalar görünüyor
iPhone: Apple'ın seçicisi. Önce kategoriler, kullanım bilgisi yok, her uygulamada aynı.
HonorFit'in Android uygulama seçicisi: uygulamalar son 24 saatteki kullanım süreleriyle, en çok kullanılan en üstte olacak şekilde listelenmiş
Android: HonorFit'in kendi listesi, kullanım süresine göre sıralı; en kötü uygulamaların en üstte.

iOS'takinde beni rahatsız eden iki şey var:

Bu hiçbir gizlilik kaybına yol açmaz. Seçiciyi iOS kendi sürecinde çiziyor. Uygulama içinde ne olduğunu hiç görmüyor, sadece seçtiğin şeyler için opak token'lar alıyor. HonorFit hangi uygulamaları seçtiğini kelimenin tam anlamıyla bilemiyor. Yani iOS kullanım sürelerini doğrudan seçicinin içinde gösterebilir ve uygulama yine hiçbir şey öğrenmez. Apple zaten DeviceActivityReport uzantılarıyla buna benzer bir şey yapıyor: kullanımını, uygulamanın okuyamadığı bir sandbox içinde gösteriyorlar.

İsteğim:
  1. Seçicide kategorilerin tamamını mı yoksa sadece uygulamaları mı seçileceğini belirleyen bir seçenek; böylece bir uygulama engelleyici, yanlışlıkla kategori seçilemeyen, sadece uygulamalardan oluşan bir liste sunabilir (ve kullanmıyorsa web sitelerini gizleyebilir).
  2. Her uygulamanın yanında ölçülen ekran süresini gösterme ve ona göre sıralama seçeneği; iOS tarafından çizilir, böylece uygulama bu sayıları hiç görmez.

3. Kalan süren için doğru bir geri sayım göremiyorsun

HonorFit'te kazandığın süre sadece gerçekten engelli bir uygulamanın içindeyken azalıyor. O yüzden gösterilecek en bariz şey bir geri sayım: "12:34 kaldı", sen scroll yaptıkça azalıyor, çıkınca duruyor.

Android'de bu kolay. HonorFit'in arka plan hizmeti her saniye ekranda hangi uygulamanın olduğunu kontrol ediyor ve bildirim, Android'in yerleşik geri sayım sayacını kullanıyor; yani bildirim paneli onu her saniye kendiliğinden yeniden çiziyor. Paneli aşağı çekiyorsun ve tam olarak ne kadar süren kaldığını saniyesi saniyesine görüyorsun.

iPhone'da bu mümkün değil ve sebebi şu:

Sonuç olarak iPhone kullanıcıları kaba bir tahmin görüyor, Android kullanıcıları ise gerçek sayıyı.

İsteğim: bir DeviceActivity olayının, iOS'un kendisinin çizdiği bir geri sayımı yönetebilmesine izin verin: bir bildirimde, bir Live Activity'de ya da kalkan ekranında, yalnızca izlenen uygulamalar ekrandayken çalışan bir geri sayım. iOS bu kullanımı zaten saniyesi saniyesine takip ediyor, yani uygulamaya yeni hiçbir şey vermeden süreyi gösterebilir. İzleyici uzantısına basit "engelli uygulama açıldı / kapandı" callback'leri bile sorunun çoğunu çözerdi.

Hepsi bu

Apple'a hakkını vermek lazım, buradaki gizlilik modeli gerçekten çok iyi. Uygulama neyi engellediğini ya da onu ne kadar kullandığını hiçbir zaman öğrenmiyor ve bunun değişmesini hiç istemem. Yukarıdaki üç şeyin hiçbiri bunu değiştirmez. Sadece iPhone uygulamalarının, Android sürümlerinin zaten olduğu kadar faydalı olmasını sağlarlar.

Sen de Screen Time üzerine geliştirme yapıyorsan ve bunlardan birini istiyorsan, lütfen Geri Bildirim Asistanı'ndan (Feedback Assistant) bildir. Anladığım kadarıyla bir şeyin fark edilmesini sağlayan şey, aynı konuda gelen çok sayıda rapor. Uygulamayı denemek istiyorsan da HonorFit iPhone ve Android'de ücretsiz. Belki bazılarınızın hoşuna gider!

Okumaya devam et