Koyu arayüzlü bir iPhone üzerinde uygulama ve Dynamic Island tasarım konsepti
ispehsa tasarım arşivinden bir konsept görünümü.

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.

FocusAttributes.swift
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.

Başlatİlk durumu göster
→
Güncelleİlerlemeyi yansıt
→
BitirSon durumu paylaş

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
G

Okuduğun için teşekkürler.
Bir sonraki fikirde görüşmek üzere.