∟WidgetKit/∟ Topics

WidgetKit - Configurable Widgets

최 수빈 2024. 11. 7. 21:43

 

구성 가능한 위젯

 

 

 

설정이 가능한 위젯 만들기

 

프로젝트에 사용자 정의 앱 인텐트를 추가하여 사용자들에게 위젯 커스터마이즈 옵션을 주자.

 

SiriKit Intents에서 App Intents로 위젯 전환하기

 

이전 버전과의 호환성을 고려하여 위젯을 구성하자.

 

struct AppIntentConfiguration

 

커스텀 인텐트를 사용하여 사용자 구성 옵션을 제공하는 위젯의 콘텐츠를 설명하는 객체

 

struct WidgetInfo

 

사용자 구성 위젯에 대한 정보를 포함하는 구조체

 

struct AppIntentRecommendation

 

사용자 구성 위젯에 대한 추천 인텐트 구성을  설명하는 객체

 

struct IntentConfiguration

 

커스텀 인텐트의 정의를 사용하여 사용자 구성 옵션을 제공하는 위젯의 콘텐츠를 설명하는 객체

 

struct IntentRecommendation

 

사용자 구성 위젯을 위한 추천 인텐트 구성을 설명하는 객체

 

 

 

 


 

 

SiriKit

 

 Siri와 연동되는 기능을 앱에서 사용할 수 있도록 해주는 프레임워크.  앱이 사용자의 음성 명령을 인식하고 Siri를 통해 특정 작업을 수행할 수 있게 된다.

 

 최근에는 SiriKit보다 App Intents가 더 많이 사용되기 시작. App Intents는 SiriKit보다 더 유연하고 확장 가능한 방식으로, 다양한 사용자 맞춤 옵션과 더 나은 호환성을 제공. SiriKit은 여전히 많은 앱에서 사용되고 있지만, 새로운 iOS 기능을 지원하거나, 사용자 설정을 추가하고자 할 때는 App Intents로 전환하는 것이 권장되는 추세.


 

 그래서 SiriKit 인텐트를 사용하던 위젯을 App Intents 기반으로 전환하고, 동시에 기존 SiriKit 인텐트를 사용하는 이전 버전에서도 문제없이 작동할 수 있도록 호환성을 유지하는거다. 이렇게 하면 새로운 기능을 활용할 수 있으면서도 SiriKit을 지원하는 구버전 사용자들이 위젯을 원활하게 사용할 수 있게 되니까.

 

 갑자기 SiriKit Intents에서 App Intents로 위젯 전환하기가 나와버리고...ㅠㅠ 설명에는 다짜고짜 이전 버전과의 호환성을 이야기 해주다니요.....! 그래서 알아본 바로는... 그러하다. 그리고 구조체를 알려주는 부분에서도 이와 연관되는 부분이 있는데, 

 

AppIntentConfigurationIntentConfiguration이다. 이름도 한 단어 다르고 설명도 한 단어 다르다. 그래서 또 알아본 결과,

 

AppIntentConfiguration은 App Intents를 기반, iOS 16 이상의 위젯이나 단축어에서 사용자 설정을 위한 신규 시스템이고, IntentConfiguration은 SiriKit Intents를 사용한 기존 시스템.

 

 

Intent '무엇을 하겠다'는 명령

Configuration '어떻게 할 지'를 구성

 

Intent : '날씨 보기'라는 Intent 정의 => 날씨 데이터 보여줘. 라는 '명령'

Configuration : '현재 위치의 날씨를 표시, 섭씨로 보여주기' => 어떻게 동작할 지 '구성'

 

 

Custom Intent => Widget with User Options => Object describes Widget Content

 

 

 

ㅠㅠㅠㅠAppIntentConfiguration이 이해가 너무 안돼서.... 일단 이렇게 정리해봄

 

 

 

 

Struct 부분에서 어떤건 구조체 어떤건 객체라고 설명해놨길래 정확히 Swift에서 어떤식으로 객체를 다루는지 잘 모르겠다.

=> 구조체 자체는 객체가 아니지만 구조체타입인 변수나 상수들(구조체를 할당받은)은 객체라고 한다고 한다.

 

구조체 개념이 없는 언어들을 자주 써봤는데.. 제일 많이 쓴 건 Python이랑 JSX.. (심지어 안드버전 위젯 만들 때 JAVA 처음 쳐봤는데 .. 그 때도 구조체같은건 없었다.) 아무튼 클래스랑 구조체 둘 다 객체처럼 사용할 수 있다고 한다. 

 

swift부터 할 자신이 없다. 

ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ프레임워크만 대충 보면 될거라고 생각했는데

생각보다 애플생태계 쉽지않다.

 

구냥 깔짝거리던 HTML이나 PHP, SQL,Ruby 같은거랑은 넘 다르네효.ㅜㅜ 아자아자

 

 

 

 

https://developer.apple.com/documentation/widgetkit

 

WidgetKit | Apple Developer Documentation

Extend the reach of your app by creating widgets, watch complications, Live Activities, and controls.

developer.apple.com