
01.Küçük bir alan, net bir öncelik
İyi bir Canlı Etkinlik, uygulamanın tamamını küçük bir alana sığdırmaya çalışmaz. Kullanıcının o anda yanıtını aradığı tek bir soruyla başlar: Ne kadar kaldı? İşlem hangi aşamada? Bir sonraki adım ne?
Bir odak sayacı için önceliğimiz kalan süre ve seansın durumu. Renk, metin ve hareket bu iki bilginin okunmasını kolaylaştırdığı ölçüde anlam kazanıyor. Ayrıntıların geri kalanı uygulamanın içinde bekleyebilir.
02.Önce veri modelini sadeleştir
ActivityKit’te ActivityAttributes, Canlı Etkinliğin veri modelini tanımlar. Oturum adı gibi etkinlik boyunca sabit kalan bilgiler dış yapıda; tamamlanan dakika ve durum metni gibi değişen bilgiler ise ContentState içinde tutulur.
ContentState, Codable ve Hashable gereksinimlerini karşılar. Bu ayrım görünümün hangi bilgiye bağlı olduğunu açık hale getirir. Aşağıdaki örnek yalnızca bu veri modelini gösterir.
import ActivityKitstruct FocusAttributes: ActivityAttributes { struct ContentState: Codable, Hashable { var completedMinutes: Int var status: String } let sessionName: String}03.Her görünüm kendi işini yapsın
Arayüz, widget uzantısındaki ActivityConfiguration ile kurulur. Kilit ekranı görünümü ve Dynamic Island sunumları bu yapı içinde tanımlanır. DynamicIsland; genişletilmiş, kompakt sol, kompakt sağ ve minimal görünümleri ayrı alanlarda ifade etmeye izin verir.
Tasarım tercihimiz, kompakt durumda süreyi öne çıkarmak; genişletilmiş görünümde ise oturum adını ve durum bilgisini eklemek. Her alan için ayrı bir bilgi önceliği belirlemek daha okunaklı bir sonuç verir.
04.Başlamak kadar bitirmek de önemli
Uygulama tarafındaki Activity, etkinliği başlatmak, güncellemek ve bitirmek için kullanılır. İlgili iş tamamlandığında son durum bilgisi gönderilir ve etkinlik bitirilir. Bitirme ve ekrandan kaldırılma ayrı kararlardır; kaldırılma davranışı dismissalPolicy ile belirlenir.
Son görünüm kullanıcıya neyin tamamlandığını anlatmalı. Bir odak seansında biten süreyi kısaca göstermek, bir anda kaybolan sayaca göre daha anlaşılır bir kapanış sunar.
05.Son pikselden önce son soru
Bir görünümü bitirdiğimizi düşündüğümüzde sorulacak en iyi soru şu: Kullanıcı buraya yalnızca bir saniye baksa ne anlar? Yanıt net değilse eklemek yerine çıkarmayı deneyebiliriz.
Küçük yüzeyler büyük tasarım kararları gerektirir. İyi bir sonuç, kaç özelliği sığdırdığımızdan çok, doğru anda hangi bilgiyi gösterdiğimizle ilgilidir.
Biraz daha derine inmek için
Apple geliştirici belgeleri
ActivityAttributesDisplaying live data with Live ActivitiesDynamicIsland