Praktik Terbaik untuk iOS Live Activities
Pengaturan Live Activity
LiveActivity adalah fitur yang diperkenalkan di iOS 16.1. Dengan framework ActivityKit, Anda dapat meluncurkan live activity untuk menampilkan pembaruan real-time dari aplikasi di Dynamic Island dan layar kunci. Contohnya, aplikasi olahraga memungkinkan pengguna memulai live activity dan melihat update pertandingan secara langsung (lihat panduan fitur versi iOS untuk detail).
- Gunakan framework ActivityKit di proyek utama untuk memulai, memperbarui, dan mengakhiri live activity. Untuk tampilan antarmuka Live Activity, gunakan SwiftUI dan WidgetKit pada ekstensi widget.
- Live activity dapat dimulai, diperbarui, dan diakhiri tidak hanya dengan ActivityKit, tetapi juga melalui push notification jarak jauh.
- Fitur push notification jarak jauh untuk LiveActivity tidak mendukung sertifikat p12; Anda perlu mengonfigurasi sertifikat p8.
Perlu diketahui, Apple membatasi jumlah push notification LiveActivity yang dapat dikirim per jam. Jika Anda perlu memperbarui push notification LiveActivity secara sering, tambahkan entri NSSupportsLiveActivitiesFrequentUpdates di file info.plist dan set nilainya ke YES (lihat iOS LiveActivity untuk info lebih lanjut).
Menambahkan Fitur Live Activity ke Proyek
Pengaturan
1. Konfigurasi Info.plist
Tambahkan key-value pair ke Info.plist di proyek utama, dengan key NSSupportsLiveActivities dan nilai YES.

2. Tambahkan Widget Extension
2.1 Buat Target Baru
Buka File > New > Target.
2.2 Pilih Widget Extension

2.3 Konfigurasi Widget Extension
Centang kotak "Include Live Activity".

Klik Finish.
Xcode akan membuat LiveActivity untuk Anda.
LiveActivityWidgetAttributes mendefinisikan atribut live activity, termasuk properti yang bisa diubah dan tidak bisa diubah.
Struct LiveActivityWidgetLiveActivity digunakan untuk menyesuaikan tampilan live activity.

Selanjutnya, di LiveActivityWidgetBundle, aktifkan live activity agar bisa ditampilkan.

3. Pengujian
Mulai live activity di proyek utama, dengarkan perubahan push token-nya, dan laporkan push token tersebut ke EngageLab. Setelah berhasil dilaporkan, Anda dapat menggunakan layanan EngageLab untuk mengirim pesan ke LiveActivity di perangkat.
func startLiveActivity1() {
let initialContentState = MTLAAttributes.ContentState(eventStr: "begin", eventTime: 1)
let activityAttributes = MTLAAttributes(name: "LiveActivity", number: 33, tag: "")
do {
// Membuat Activity
let activity = try Activity.request(attributes: activityAttributes, contentState: initialContentState, pushType: PushType.token)
// Dengarkan perubahan pushToken
Task {
for await pushtoken in activity.pushTokenUpdates {
let pushtokenstr = pushtoken.map { String(format: "%02.2hhx", arguments: [$0]) }.joined()
// Daftarkan liveactivity ke EngageLab untuk update notifikasi via liveactivityId di platform push
MTPushService.registerLiveActivity("my_define_liveactivity_id", pushToken: pushtoken, completion: { code, liveactivityId, token, seq in
print("result:\(code)")
}, seq: 1)
}
}
} catch {
print("Error requesting Live Activity \(error.localizedDescription).")
}
}
- Mulai iOS 17.2, Apple memungkinkan penggunaan push notification untuk memulai live activity, menggunakan pushToStartToken. Gunakan fungsi pushToStartTokenUpdates untuk mendengarkan perubahan pada pushToStartToken live activity dan laporkan ke EngageLab.
func pushToStart() {
Task {
if #available(iOS 17.2, *) {
var beforeToken = ""
for await pushtoken in Activity<MTLAAttributes>.pushToStartTokenUpdates {
let pushtokenstr = pushtoken.map { String(format: "%02.2hhx", arguments: [$0]) }.joined()
print("pushToStartToken: MTLAAttributes -> \(pushtokenstr)")
if beforeToken == pushtokenstr {
return
}
beforeToken = pushtokenstr
MTPushService.registerLiveActivity("MTLAAttributes", pushToStartToken: pushtoken, completion: { code, alias, token, seq in
print("register MTLAAttributes pushToStartToken result: \(pushtokenstr) result:\(code) seq:\(seq)")
}, seq: seq())
}
} else {
// Fallback untuk versi sebelumnya
}
}
}










