애플의 날씨 앱은 사용자의 위치 정보를 알아내서 해당 위치의 날씨 정보를 위젯에서 보여줍니다.
날씨 앱처럼 위젯에서는 어떻게 위치 정보를 사용할 수 있는 지, 그리고 날씨 정보는 어떻게 받아올 수 있는 지 알아보겠습니다.
먼저 위치 정보를 알아야 해당 위치의 날씨 정보를 알 수 있으므로 위치 정보를 받아오는 방법을 알아보겠습니다.
1. 위젯에서 사용자 위치 정보 사용 동의 항목 info.plist에 추가하기
사용자 정보를 사용할 때는 항상 Info.plist에 동의를 구하는 항목을 넣어주죠? Widget에서 위치정보를 사용하려면 NSWidgetWantsLocation key를 추가해야 합니다. 이 키는 App의 Info.plist가 아닌 Widget의 Info.plist에 추가해줘야 합니다.
(기본적으로 사용자 위치정보 사용 허가를 받기 위해서는 App Info.plist에 위치 사용과 관련된 key 두 가지가 반드시 추가되어 있어야만 합니다)
이 항목을 추가해두면, 앱에서 위치정보 공유를 허용한 사용자가 위젯을 배경화면에 추가할 때 "위젯에서 위치정보를 사용하도록 허용하시겠습니까"를 물어보는 alert 창이 뜨게 됩니다. 그 창에서 사용자는 위젯 위치 사용 허용 여부를 결정할 수 있고 추후에 아이폰 설정에서 변경도 가능합니다.
애플 문서에는 widget에는 위에서 언급한 key만 추가하면 된다고 나와 있었는데, 애플 포럼에 관련 질문이 올라와 있는 것을 확인해 보니 widget Info.plist에 NSLocationUsageDescription key도 추가해야 한다는 답변이 있었습니다. 버전이 혹시 예전 버전이라 다른 것인지는 모르겠지만, 혹시 몰라서 추가해두었습니다.
제대로 설정이 완료되면, WidgetKit에서도 CLLocationManager를 통해서 사용자의 위치정보를 이용할 수 있게 됩니다!
2. WeatherKit 사용 설정 추가하기
WeatherKit을 앱에서 사용해보신 분들이라면, 몇 가지 설정을 Xcode와 Certificates, Identifiers & Profiles에서 해보셨을 겁니다. Widget도 따로 bundle id가 있기 때문에 App에서처럼 동일하게 설정을 해줘야 합니다.
1) Signing&Capabilities 에서 WeatherKit Capability 추가하기
2) Certificates, Identifiers & Profiles에서 Capabilities와 App Services 추가하기
Widget Identifier로 들어가서, Capabilities와 App Services 모두에 WeatherKit을 추가해줍니다.
이렇게 추가가 완료되면, 약 30분 정도 후에 위젯에서도 날씨 정보를 사용할 수 있게 됩니다.
참고자료
https://developer.apple.com/forums/thread/654678
'Swfit > WidgetKit' 카테고리의 다른 글
Configurable Widget Keyboard type 설정하기 (iOS 17 & above) (0) | 2024.02.04 |
---|---|
사용자 설정이 가능한 Widget 설정 방법 (iOS 17 under) (1) | 2024.01.24 |
Widget에 보여줄 정보 Firebase에서 불러오기 (0) | 2024.01.23 |
Widget bundle id 설정해주기 (0) | 2023.12.15 |