🥺
🫥 로컬 노티는 이 글을 참고하세용
https://velog.io/@maddie/iOS-%EB%A1%9C%EC%BB%AC%EB%A1%9C-%EC%95%8C%EB%A6%BC-Notification-%EB%A7%8C%EB%93%A4%EA%B8%B0
: Dynamic Island와 잠금화면에 앱 데이터를 표시, 빠른 인터랙션 제공
UI에 WidgetKit 기능, SwiftUI 을 사용한다.
해당 API를 사용해서 Live Activity 요청, 업데이트, 종료하고 ActivityKit 푸시 알람을 받는다.
ActivityKit는 각 Live Activity의 생명 주기를 처리한다.
저부분이여
유저가 live activity를 길게 터치하면 확장된 프레젠테이션으로 표시돼
요렇게
Dynamic Island를 지원하지 않는 기기에는 상단 배너로 표시된대.
Live Activity는 앱이나 유저가 이 제약 조건 이전에 종료 안되면, 최대 8시간동안 활성화될 수 있어.
8시간이 지나면 자동으로 Live Activity 종료하고, 즉시 Dynamic Island에서 제거해.
Key: Supports Live Activities
Value: Yes
저는 DynamicIslandWidget 이름으로 생성해씀.
Include Live Activity 에 체크하세용
자동으로 파일이 생성된다.
위젯의 UI를 표출하는 body,
body에 있는 DynamicIslandWidget, DynamicIslandWidgetLiveActivity이 있음
아주 잘 정리되어있는 블로그를 샤라웃하면서,
https://ios-development.tistory.com/1131
아무튼 여기에는 위젯의 내용이 들어갑니다.
여러가지 struct가 있는데,
for hourOffset in 0 ..< 5 {
...
let timeline = Timeline(entries: entries, policy: .atEnd)
-> 4시간 뒤에 다시 타임라인을 새로 불러와요
오른쪽 Inspector 안에 Target Membership에 우리의 앱을 체크해준다.
원하는 뷰에 버튼을 만들고, 버튼을 누르면 다이나믹아일랜드에 LiveActivity가 뜰거다
Button(action: {
let dynamicIslandWidgetAttributes = DynamicIslandWidgetAttributes(name: "다이나믹듀오")
let contentState = DynamicIslandWidgetAttributes.ContentState(value: 7)
do {
let activity = try Activity<DynamicIslandWidgetAttributes>.request(
attributes: dynamicIslandWidgetAttributes,
contentState: contentState
)
print(activity)
}
catch {
print(error)
}
}) {
Text("DynamicIsland!")
}
🦁 레퍼런쓰
https://developer.apple.com/documentation/activitykit/displaying-live-data-with-live-activities
https://ios-development.tistory.com/1183 🫡👍
https://ios-development.tistory.com/1131
https://velog.io/@doldamul/ActivityKit
-> 이거 아직 안봤는데 다음에 꼭 봐라 내자신