Section 4/141 menit
4. Setup dan Struktur Project
4. Setup dan Struktur Project
Menambahkan Widget Extension Target
Di Xcode:
File→New→Target- Pilih
Widget Extension - Beri nama (contoh:
MyAppWidget) - Centang "Include Live Activity" jika butuh Live Activities
- Pilih apakah akan include Configuration Intent (untuk widget yang bisa dikonfigurasi user)
Struktur File yang Dihasilkan
swift
MyAppWidget/
├── MyAppWidget.swift ← Widget + Provider + Entry + View (awalnya jadi satu)
├── MyAppWidgetBundle.swift ← WidgetBundle (jika punya multiple widgets)
├── Assets.xcassets
└── Info.plist
Berbagi Data antara App dan Widget
Widget berjalan di proses terpisah — harus gunakan App Group untuk berbagi data:
swift
1. Di project settings → Signing & Capabilities
2. Tambah "App Groups" ke KEDUA target (app dan widget)
3. Buat group ID: "group.com.perusahaan.namaapp"
swift
// Di app utama: simpan data ke shared container
let sharedDefaults = UserDefaults(suiteName: "group.com.perusahaan.namaapp")
sharedDefaults?.set(todayHabitCount, forKey: "habitCount")
// Trigger reload widget setelah update
WidgetCenter.shared.reloadTimelines(ofKind: "HabitWidget")
swift
// Di widget: baca dari shared container
let sharedDefaults = UserDefaults(suiteName: "group.com.perusahaan.namaapp")
let habitCount = sharedDefaults?.integer(forKey: "habitCount") ?? 0