Link
Widgets Code-along, part 1: The adventure begins - WWDC 2020 - Videos - Apple Developer
Widgets Code-along, part 2: Alternate timelines - WWDC 2020 - Videos - Apple Developer
Widgets Code-along, part 3: Advancing timelines - WWDC 2020 - Videos - Apple Developer
실습 내용 있는 깃헙!
Part 1
Widget이란?
SwiftUI로 작성되는 것으로 iOS, iPadOS, MacOS에서 네이티브 뷰를 생성하는 것과 동일한 선언 코드이며, 시간이 지남에 따라 업데이트 된다.
예시 프로젝트
Widget추가하기
File - New - Target에서 Widget Extension검색 후 추가
원하는 파일(.swift)을 타겟에 추가
+)
예시에는 위젯에 placeholder를 만들기 위해서
struct PlaceholderView: View {
var body: some View {
AvatarView(.panda)
.isPlaceholder(true)
}
}
위 코드를 추가해줬는데 실제 실습하면서 추가하니 .isPlaceholder(Bool) 라는 함수가 존재하지 않았다.
찾아보니 베타? 버전이라서 안된다고 하는 것 같다.
대신
.redacted(reason: .placeholder)
이렇게 써주면 플레이스홀더로 사용할 수 있다.
Part 2
타임라인의 마지막에는 무슨 일이 일어날까? 더 많은 항복들을 제공하려면 어떻게 할까?
→ 타임라인 재로드 정책을 선택한다
struct TimelineReloadPolicy {
atEnd
after(date)
never
}
-
atEnd
위젯이 타임라인의 마지막 항목(위에서는 5번)에 도달하게 되면 업데이트 예약을 시작하라는 메세지가 표시된다
-
after(date)
위젯이 제공된 날짜에 업데이트 예약을 시작하도록 지시한다
예를 들어 오후 10시로 설정해 두면 오후 10시에 업데이트
-
never
시스템 독립적으로 위젯을 업데이트 하지 않는다.
Configuration
- siriKit
- InIntent - Add Configuration and Intelligence to your Widget(참고)
Deep Linking
SwiftUI link API를 통해 위젯 내에 탭 가능한 영역을 만든다.
Part 3
- 위젯은 백그라운드 세션을 포함하여 만든 모든 URL세션에 응답하지만, delegate가 존재하지 않는다
- 대신 위젯 구성에서 백그라운드로 호출되는 한정자가 있다
Intent추가하기
File - New - Target - Intent Extension
*Starting Point → none 으로 하기
'iOS > 스터디' 카테고리의 다른 글
[WWDC Video Study] What’s new with in-app purchase - Refund Notification (0) | 2021.02.04 |
---|---|
Mobile Deep Link - 모바일 딥링크 (0) | 2021.01.29 |
[Apple Video Study] Build localization-friendly layouts using Xcode (0) | 2021.01.20 |
[WWDC Video Study] Make your app visually accessible (0) | 2020.12.28 |
[WWDC Video Study] Making Apps More Accessible With Custom Actions (0) | 2020.12.27 |