Post

Swift 예제: iOS 앱에 위젯 추가 및 연동

Swift 예제: iOS 앱에 위젯 추가 및 연동

Swift 예제: iOS 앱에 위젯 추가 및 연동

전체 코드

 

개발 환경

  • Xcode 15.4, Swift 5.9
  • iOS App + Widget Extension
  • SwiftUI + UIKit Representable

 

목적

  • 위젯 개발 기본 학습
  • _Deep Link_를 이용한 위젯 -> 앱 간 데이터 전달
  • App Groups 기능을 이용한 아이폰 메인 앱과 위젯간 데이터 연동
    • 파일 데이터 연동
    • 코어 데이터 연동
  • 비동기 네트워크 데이터 가져오기 및 이미지 캐시 사용

 

참고 글

 

동작 내용

메인 위젯 (DynamicWidget1)

  • InstantPoca(가제): 자주 보고 싶은 사진 또는 비디오를 등록하면 위젯에서 클릭해서 빠르게 열 수 있는 앱입니다.
  • 자주 보고 싶은 사진 또는 비디오를 파일 브라우저 또는 사진 라이브러리로부터 추가할 수 있습니다.
  • 추가하면 실시간으로 위젯에도 해당 사진/비디오의 섬네일 버튼이 뜨고 누르면 바로 사진/비디오를 볼 수 있습니다.

 

학습용 위젯 (StaticWidget1)

  • 인터넷에서 비동기 데이터를 받아와 표시하고 사진도 표시합니다.
  • Deep Link를 이용해 위젯의 데이터를 메인 앱으로 넘기는 방법을 배웠습니다.

 

주요 개발 과정 정리

 

학습용 위젯

  1. iOS 15.0 이상에서 호환되도록 설정하기 (참고)
  2. 위젯의 타임라인 갱신 간격 설정하기
  3. 위젯의 데이터를 메인 앱으로 넘기기
  4. 비동기로 네트워크에서 이미지를 가져온 뒤 캐시로 표시
    • 위젯에서 바로 받아올 수 없고 이미지 캐시를 이용해야 함

 

메인 위젯

  1. 메인 앱 만들기
    1. 사진/비디오 업로드(파일 보관함, 사진 라이브러리로부터)
    2. 미리보기 표시
    3. Core Data에 업로드
    4. 작은 크기의 섬네일 파일 만들기: 파일 크기가 커지는 경우 위젯에서 이미지를 불러오지 못할 수 있다. 기본 제공하는 QuickLookThumnail을 이용
  2. 위젯 만들기
    1. 위젯 UI 그리기
    2. 메인 앱과 연동: App Groups를 사용해서 섬네일 및 데이터 엔티티 연동
    3. 앱의 특정 부분(업로드)에서 위젯을 실시간으로 고칠 수 있도록 함
This post is licensed under CC BY 4.0 by the author.