스트리밍은 대부분의 브라우저와
Developer 앱에서 사용할 수 있습니다.
-
Journaling Suggestions API 알아보기
새로운 Journaling Suggestions API를 활용하여 사용자가 일상 속 소중한 순간과 중요한 이벤트를 앱에 기록하고 돌아볼 수 있도록 지원하고 사용자의 개인정보를 보호하는 방법에 대해 알아보세요. Journaling Suggestions API를 활용하여 일기 쓰기 제안에 애셋과 메타데이터를 가져오고, 앱 화면 위에 선택기를 불러오고, 사용자가 제안된 콘텐츠를 저장하도록 지원하는 방법을 확인해 보세요.
리소스
-
다운로드
안녕하세요 저는 René입니다 Sensing & Connectivity 팀에서 일하고 있습니다 본 세션에서는 iOS 17과 함께 발표된 Journaling Suggestions API를 소개하겠습니다
iOS 17.2에는 삶의 순간들을 기록할 수 있는 ‘일기’ 앱이 포함되었습니다 일기 쓰기는 인류의 오랜 친구입니다 또한 성찰과 글쓰기는 웰빙과 정신 건강에 도움이 됩니다 하지만 때로는 시작하기가 어려울 수 있습니다 따라서 사용자의 글쓰기를 돕기 위해 iOS에는 삶의 특별한 순간을 포착하고 일기 작성을 시작하기 좋은 지점을 제안하는 기능이 있습니다 이를 ‘일기 쓰기 제안’이라고 부릅니다 제안 항목은 사진, 운동 기록 방문한 장소 등이 포함됩니다 일기 쓰기 제안은 비공개 접근 선택기이므로 개별 애플리케이션에서도 사용할 수 있습니다 일기 쓰기 제안은 앱과 별도의 프로세스에서 실행되지만 앱 화면 위로 렌더링되며 사용자가 선택한 항목만 앱으로 전달됩니다 사용자는 제안을 선택하고 앱에 전송하기 전에 iOS 생성 항목을 검토할 수 있습니다 앱은 매번 사용자에게 접근 허용을 요청할 필요 없이 위치 및 사진 등 다양한 카테고리의 데이터를 활용합니다 일기 쓰기 앱, 웰빙 앱을 개발하고 계시다면 Journaling Suggestions API가 꼭 필요하실 것입니다 이제 사용법을 보여 드리겠습니다 먼저 Journaling Suggestions API를 소개하고 이 API가 사용자 개인정보를 보호하는 방식을 설명하고 간단한 코드 예제에서 선택기를 호출하는 방법을 설명하겠습니다 이후 제안에서 세부 정보를 가져오는 것을 보여 드립니다 또한 API가 제공하는 편의성을 설명하고 제안 콘텐츠를 빠르게 앱에 통합하는 방법을 안내하겠습니다 마지막으로 일기 쓰기 제안을 처음 사용하고 제안 받을 콘텐츠를 구성할 때 사용자의 경험을 직접 보여드리겠습니다
먼저 Journaling Suggestion API란 무엇이고 사용자 개인정보를 어떻게 보호하는지 몇 가지 정의와 개념을 알아보겠습니다
선택기가 화면에 표시되면 먼저 제안 항목의 목록을 볼 수 있습니다 각 제안은 제목을 비롯하여 사진, 운동, 위치 등 다양한 애셋으로 이루어져 있습니다 제안에는 콘텐츠 애셋 항목을 13개까지 포함할 수 있습니다 목록은 두 탭으로 나뉩니다 추천 항목과 최근 항목입니다
추천 항목에서는 선택기가 특별한 순간을 먼저 표시합니다 순위 결정 알고리즘은 여러 최신 머신 러닝 기술을 조합하여 목록을 다양하고 새롭게 사용자에게 흥미롭게 만듭니다 이 탭에는 특별한 제안도 있습니다 사진 추억에서 뽑은 하이라이트를 포함하여 주간 요약, 여러 날에 걸친 여행 등 며칠에 걸친 제안 항목이 있습니다 최근 항목에서는 제안이 시간순으로 표시됩니다 따라서 사용자는 과거를 손쉽게 돌아볼 수 있습니다
제안 항목을 탭하면 인터스티셜 화면이 표시되어 모든 세부 내용과 첨부된 애셋 콘텐츠를 확인할 수 있습니다 애셋은 캐러셀 뷰로 더 크게 볼 수 있습니다 사용자가 앱에 공유할 데이터를 확인해야 하므로 중요한 부분이죠 목록 뷰에서는 애셋과 연결된 메타데이터를 볼 수 있습니다 사용자는 각 뷰를 통해 애셋을 선택 또는 선택 해제하여 전송할 데이터만 추릴 수 있으며 제안의 제목도 수정할 수 있습니다 선택을 마치면 ‘에 추가’ 버튼을 탭하여 콘텐츠를 전송하면 됩니다 이 절차는 개인정보 보호를 우선 고려하여 설계되었습니다 앱의 프로세스와 별개로 실행되므로 앱에서 권한을 요청할 필요가 없습니다 또한 앱에는 오직 사용자가 추가하기로 선택한 제안 콘텐츠만 전송됩니다 이것이 iOS가 사용자에게 의미 있는 콘텐츠를 안전하게 제안하는 방법입니다 일기 쓰기 제안의 기본 내용에 대해 알아보았으니 앱에서 이 선택기를 호출하는 방법을 살펴보겠습니다 필요한 작업은 다음과 같습니다 앱에 ‘Journaling Suggestions’ 기능을 추가합니다 이렇게 하면 적절한 Entitlement(권한)를 추가하고 앱이 Journaling Suggestions API를 사용하도록 허가합니다 다음으로 선택기 인스턴스를 생성할 수 있도록 Journaling Suggestions 프레임워크를 SwiftUI 코드로 가져옵니다 선택기가 앱으로 전송한 콘텐츠를 가져오기 위해 선택기 클로저를 만들고 앱 화면 위에 해당 선택기를 표시합니다 Journaling Suggestions 기능 추가부터 시작해 보겠습니다
Xcode에서 앱의 빌드 대상을 탭하여 간단하게 추가할 수 있습니다 ‘Signing & Capabilities’ 탭에서 ‘+ Capability’를 탭하고 ‘Journaling Suggestions’를 찾으세요 이 기능은 iOS에 앱이 선택기를 표시하려 한다고 알려 줍니다 이제 이 API를 사용하는 예제 앱을 살펴보겠습니다
이 간단한 앱에는 선택기를 호출하고 제안 제목을 검색하는 버튼만 있습니다. 먼저 프레임워크를 가져와 레이블을 추가하여 선택기 인스턴스를 만들었습니다 선택기에는 사용자가 앱과 공유하기로 선택한 후 필요한 모든 정보를 제공하는 ‘onCompletion’ 클로저가 있습니다 여기에서는 버튼 아래에 표시되도록 제목을 그대로 두겠습니다 데모의 결과는 이렇게 됩니다 버튼을 탭하면 앱 화면 위에 선택기가 표시됩니다
내용을 둘러보고 제안을 하나 골랐습니다 콘텐츠가 괜찮아 보이네요 이것을 앱과 공유하겠습니다
선택기가 닫히고 이제 제안 제목이 앱에 표시됩니다 참 쉽죠! 자, Xcode를 구성하는 방법 API를 가져오는 방법 제안 제목을 받기 위한 간단한 데모를 빌드하는 방법을 배웠습니다 하지만 이 클로저 함수로 할 수 있는 건 더 많습니다 하나의 제안에서 받을 수 있는 애셋 유형은 9가지나 됩니다 사진 애셋을 활용하는 새로운 예제를 빌드하는 법을 알아보기 전에 이러한 종류를 살펴보겠습니다
‘Workout’(운동)은 운동 경로의 여부에 따라 두 가지 형태로 나뉩니다 두 형태 모두 사용 가능한 경우 지속 시간 소모 칼로리, 평균 심박수 등의 추가 정보를 제공합니다
연락처는 연락처 사진을 제공하며 사진이 없는 경우 이니셜 이미지를 생성하여 제공합니다
‘Location’(위치)은 사용자가 방문한 장소를 표시하며 장소 이름, 지도 핀을 설정한 위치 등의 메타데이터가 포함됩니다
‘Song’(노래)에는 노래 제목, 앨범 커버 아트와 같은 재생 항목이 포함됩니다
‘Podcast’(팟캐스트)에는 팟캐스트 이름 에피소드 이름, 커버 아트가 포함됩니다
‘Photo’(사진)에는 사진으로 연결되는 URL이 포함됩니다
‘LivePhoto’에는 비디오로 연결되는 URL과 미리보기가 포함됩니다
‘Video’(비디오)에는 비디오로 연결되는 URL이 포함됩니다
‘MotionActivity’(동작 및 활동)에는 걸음 수와 아이콘이 있습니다 이러한 애셋을 클로저로 가져오는 방법을 알아보겠습니다
제안이 호출되면 가져오고자 하는 애셋 유형을 지정하는 메서드인 content(forType:)을 사용하여 해당 유형의 항목이 전달될 때까지 대기할 수 있습니다 예를 들어 사진을 가져오고자 한다면, 화면과 같이 content(forType:)에 ‘Photo’ 애셋 유형을 입력합니다
사진을 받고 나면 바로 뷰에 사진들을 표시할 수 있습니다 이 예제에서는 모든 ‘Photo’ 유형 항목을 검색하여 사진들이 목록 뷰에 인라인되어 있습니다 그리고 각 항목에서 URL을 가져올 수 있도록 이를 AsyncImage로 삽입했습니다
AsyncImage로 이미지를 저장할 수는 없어도 뷰를 구성하기에 편리합니다 나중에 일부 애셋은 다른 SwiftUI 유형으로 변환하여 통합 속도를 높일 수 있습니다 이제 이 향상된 예제의 코드를 살펴보겠습니다
먼저 선택기를 생성합니다
‘onCompletion’ 클로저 블록은 제안 제목과 사진 애셋을 가져옵니다 그 다음, 사진이 AsyncImage로 뷰에 삽입됩니다
그러면 결과는 화면과 같이 나타납니다
버튼을 탭하면 앱 화면 위로 선택기가 다시 나타납니다
제안 하나를 선택하고 ‘에 추가’를 탭했습니다
선택기는 사라지고 이전과 동일한 제목에 선택기에서 받은 인라인된 사진이 나타납니다 이런 방식으로 사용자가 선택한 제안에서 애셋을 가져오는 것입니다
지금까지 선택기 호출하기, 제안 가져오기 제안에 사진 가져오기를 살펴보았습니다 각기 다른 속성을 가지고 있는 9개의 애셋 유형도 모두 보았습니다 이전 예제에서는 모든 사진 애셋을 요청하여 각 항목에서 AsyncImage를 생성했지만 이미지를 포함하는 다른 애셋도 있습니다 이러한 항목들은 UIImage 또는 Image 뷰로 요청하여 동일하게 처리할 수 있습니다 이제 매핑을 살펴보겠습니다 일부 애셋은 편의를 위해 UIImage 또는 Image 뷰로 가져올 수 있는데 ‘Contact’, ‘Song’, ‘Podcast’, ‘Photo’, ‘LivePhoto’가 여기에 속합니다 예를 들어 이미지를 디스크에 저장하려는 경우 URL 콘텐츠를 사용할 수 있습니다 또한 이전 예제에서는 동일한 코드를 사용하여 모든 애셋을 목록 뷰에 바로 삽입했습니다 이제 UIImage와 호환되는 모든 애셋을 캡처해보겠습니다
‘Photo’ 애셋 대신 UIImage와 호환되는 모든 애셋을 검색하도록 코드를 수정합니다
이것을 목록 뷰에 삽입할 때 AsyncImage 대신 UIImage를 구성하고 이미지를 애셋에 래핑하여 전달합니다 이렇게 하면 애셋을 유형과 관계없이 UIImage로 가져올 수 있습니다 화면에서 이 업데이트된 예제의 데모를 보시겠습니다
사진만 표시되는 것이 아니라 ‘Song’의 앨범 아트도 이미지로 변환되었습니다
Journaling Suggestions API 온라인 문서에서 자세한 내용을 확인하세요
이제 선택기가 iOS가 생성한 콘텐츠를 표시할 때 사용자가 이를 제어하는 방법을 안내하겠습니다 앱은 여기에 제어권이 없으며, 이 절차를 거쳐 앱이 받을 수 있는 콘텐츠가 정해집니다 선택기가 처음 호출되었을 때 일기 앱 또는 기타 앱에서 일기 쓰기 제안의 기능을 설명하는 플로우가 시작됩니다 이는 iOS가 제어하므로 앱에서 따로 취할 조치는 없습니다
이 플로우에서 iOS가 감지하여 제안을 생성할 이벤트 또는 데이터를 사용자가 직접 선택합니다 5개 스위치로 구성됩니다 운동을 감지하는 ‘활동’ 청취한 팟캐스트와 음악을 감지하는 ‘미디어’ 메시지 및 통화를 주고 받은 사람을 감지하는 ‘연락처’ 보관함, 추억 및 공유 사진을 감지하는 ‘사진’ 시간을 보낸 장소를 감지하는 ‘특별한 위치’입니다 이 스위치들은 iOS가 선택기에 표시할 내용을 정의합니다
이 구성은 모든 앱에 적용되며 사용자는 설정 앱에 있는 개인정보 보호 및 보안 메뉴의 일기 쓰기 제안에서 언제든지 이 구성을 변경할 수 있습니다
요약하자면 새로운 Journaling Suggestions API는 사용자가 일상의 소중한 순간을 기록하고 돌아보는 경험을 빠르게 빌드할 수 있도록 도와 줍니다 선택기를 앱 화면 위에 표시하며 사용자가 앱에 추가하기로 선택한 제안과 관련된 애셋과 세부 정보를 가져옵니다 또한 독립형 프로세스이므로 앱에 영향을 주지 않으면서 개인정보를 보호합니다
시청해 주셔서 감사합니다 Journaling Suggestions API와 함께 지금 바로 새로운 경험을 빌드해 보세요
-
-
찾고 계신 콘텐츠가 있나요? 위에 주제를 입력하고 원하는 내용을 바로 검색해 보세요.
쿼리를 제출하는 중에 오류가 발생했습니다. 인터넷 연결을 확인하고 다시 시도해 주세요.