스트리밍은 대부분의 브라우저와
Developer 앱에서 사용할 수 있습니다.
-
tvOS 앱에서 다양한 사용자 지원
tvOS 앱에서 개인화된 개별 경험을 만드는 방법을 확인하세요. 프로필 데이터, 게임 저장 상태 등을 저장할 수 있는 단일 체크상자를 제공하여 각 사용자에게 iPhone과 같은 개인 기기에서와 동일한 수준의 데이터 분리를 제공하는 방법을 보여드리겠습니다. 또한 새로운 사용자 독립형 키체인을 통해 한 가정의 여러 사용자에게 기존 로그온 경험을 유지하는 데 어떻게 도움이 되는지 알아봅니다.
리소스
관련 비디오
WWDC22
WWDC21
WWDC20
-
다운로드
♪ ♪ 안녕하세요, 저는 Felipe입니다 저는 tvOS 팀의 소프트웨어 엔지니어입니다 오늘 tvOS 16에서 개선된 사항을 여러분과 공유하게 되어 기뻐요 여러분의 앱에서 여러 사용자들을 더 쉽게 지원할 수 있게 되었죠 Apple TV는 모든 사람이 사용할 수 있도록 디자인되었습니다 tvOS 13부터 Apple TV의 다양한 사용자들을 위해 개선해 왔습니다 tvOS 16에는 모든 앱에서 여러 사용자들을 더 쉽게 지원 가능한 새로운 기능들이 있습니다 그러면 Apple TV의 다중 사용자 기능을 간략히 살펴보겠습니다 여럿이 사용하는 기기에서 얼마나 쉽게 앱을 개인화할 수 있는지 그리고 스트리밍 앱에서 각 사용자별로 선택된 프로필을 얼마나 간단히 저장할 수 있는지 보여 드리겠습니다 그리고 여러분의 앱에 가장 좋은 접근법을 추천하며 마치겠습니다 tvOS 16에서는 온 가족이 더 쉽게 Apple TV를 시청할 수 있습니다 Siri Remote의 TV 버튼을 길게 누르면 제어 센터가 나타납니다 이 Apple TV에 있는 사용자 목록이 맨 위에 나타납니다 tvOS 16에서 새로워진 기능은 사용자 목록에 아직 추가되지 않은 iCloud 가족 구성원이 나타난다는 겁니다 온 가족이 아주 쉽게 Apple TV를 시청할 수 있게 되었습니다
여기를 보면, Anne은 아직 Apple TV에 없습니다 더하기 아이콘은 제안된 사용자라는 뜻이죠 Anne을 추가하려면, 그냥 제안된 사용자를 선택하기만 하면 됩니다
Anne은 iPhone을 Apple TV와 같은 방으로 가져와서 iPhone에서 연결을 수락하기만 하면 됩니다 그게 다입니다 이제 Anne은 Apple TV에서 자기 데이터에 액세스할 수 있습니다 이제 잠시 Anne의 iPhone으로 가보겠습니다 Anne이 가장 좋아하는 동영상 스트리밍 앱을 살펴봅시다 이 앱은 온 가족이 사용합니다 각자 자기 프로필을 가지고 있죠 앱이 처음 실행되면 프로필 선택이 표시됩니다 Anne은 자기 프로필을 선택합니다 이 앱은 개인 기기에서 실행되는데요 선호 프로필을 NSUserDefaults에 간단히 저장 가능합니다 또는 모든 기기와 동기화되도록 CloudKit에 넣을 수도 있습니다
각 가족 구성원의 iPhone은 그 사람이 선호하는 프로필을 기억합니다 앱이 열릴 때 어떤 프로필을 사용할 지 물어볼 필요가 없죠 Apple TV는 온 가족이 공유하는 기기이며 우리는 Apple TV를 사용하는 모든 사람들이 자기 콘텐츠와 데이터에 액세스할 수 있어야 한다고 생각합니다 현재 사용자로 앱을 실행하는 기능은 tvOS 14에서 도입했습니다 '현재 사용자로 실행하기' 권한을 체크하면 코드를 전혀 바꾸지 않아도 iPhone에서와 마찬가지로 앱이 각 사용자의 데이터에 액세스할 수 있습니다
이 API를 호출하는 iOS 코드는 Apple TV에서도 실행 가능합니다 자기 개인 Apple TV를 사용하는 것처럼 동작하죠 앱이 실행되면 tvOS가 모든 것을 처리합니다 시스템은 개인 정보 보호, 보안 등 모든 것을 처리합니다 '현재 사용자로 실행하기' 권한 설정은 게임을 비롯한 개인별로 진도가 다른 모든 앱에서 매우 잘 활용됩니다 하지만 미디어 앱에는 프로필이 있으니까, 좀 더 작업이 필요하죠 아직 예시에서는 로그인 설명을 안했는데요, 중요한 부분이죠 로그인은 쉽고, 가능한 한 자주 하지 않아야 합니다 따라서 tvOS 15에서는 iPhone이나 iPad를 사용하여 tvOS 앱에 끊김없게 로그인할 수 있도록 했습니다 최고의 로그인 경험이죠 여러 기기들을 활용하여 가장 편리한 방법으로 Apple TV에 로그인할 수 있습니다 Apple TV에서 직접 사용할 수 없는 기능인 iCloud 키체인의 비밀번호 같은 건 한 번 탭하기만 하면 됩니다 좋은 로그인 환경을 구축하는 방법을 알아보려면 WWDC 2021에서 'tvOS 앱 로그인 간소화'를 찾아보세요
tvOS에서는 올해부터 OAuth와 패스키를 지원합니다 패스키는 새롭고 놀라운 인증 기술입니다 앱이나 웹 사이트에서 비밀번호를 바꿀 때 사용되죠 자세히 알아보려면 '패스키 만나기' 동영상을 보세요 그러나 간편하고 편리한 게 전부는 아니죠 단 한 번만 로그인하도록 하는 것이 여전히 중요합니다 '현재 사용자로 실행하기'에서 사용자 경험을 최적화하기 위해 tvOS 16에서는 간단한 새 API를 도입했습니다 키체인 서비스의 새로운 상수입니다 앱이 사용자 독립적인 키체인에 액세스할 수 있도록 해줍니다 모든 Apple TV 사용자는 이 새 키를 사용하여 저장된 항목에 항상 액세스할 수 있습니다 예를 살펴 봅시다 이것은 키체인에 사용자 이름과 암호를 저장하는 메소드입니다 사용자 독립적인 키체인에 항목을 저장하기 위해서는 attributes 딕셔너리에 새 키를 추가하기만 하면 SecItemAdd 함수에 전달됩니다 kSecUseUserIndependentKeychain 키의 값으로 True를 전달합니다
이렇게 사용자 독립적인 키체인 세트로 읽고 쓰는 항목은 모든 사용자가 볼 수 있습니다 새로운 키체인 API와 '현재 사용자로 실행하기' 권한을 조합하여 여러분의 앱에서 iPhone과 Apple TV를 가장 잘 사용할 수 있습니다 간단하죠, 공유된 기기에서 사용자별로 데이터를 분리하고 Apple TV에서 한 번만 로그인하도록 유지합니다 tvOS 16에서는 더 이상 프로필과 TVUserManager의 시스템 사용자를 수동으로 매핑하는 것을 지원하지 않습니다 더 이상 프로필-사용자 매핑을 갖고 있을 필요가 없습니다 시스템이 알아서 처리합니다 iOS에서 사용하는 API를 Apple TV도 그대로 쓸 수 있습니다 훨씬 쉽습니다 실제로 작동하는 모습을 시연해 드리겠습니다 프로필이 있는 미디어 앱 샘플로 설명드릴게요 이것은 제 스트리밍 비디오 앱입니다 지금은 제가 말씀드린 기능을 사용하지 않습니다 현재 사용자로 실행되지 않고 새 키체인 API를 사용하지 않아요 여러분께 보여드리기 위해 로그인해볼게요
로그인하면 프로필 목록이 표시됩니다 현재 사용자 Mei의 프로필을 선택하겠습니다
프로필을 선택하면 Mei가 보고 싶은 개인화된 콘텐츠가 보입니다
그런데 나중에 Anne이 TV를 보려고 소파에 앉았다고 해봅시다 그러면 제어 센터를 열겠죠 Siri Remote의 TV 버튼을 길게 눌러서요 제어 센터의 상단에 사용자 목록이 나타납니다 녹색 체크표시는 현재 사용자라는 뜻입니다 Anne으로 전환하여 앱을 열겠습니다
예상대로 앱은 프로필 선택을 다시 표시합니다 따라서 Anne은 프로필을 선택할 수 있습니다
그런데 Mei로 다시 전환하면 어떻게 될까요?
앱은 Anne의 프로필을 그대로 보여줍니다 이전에 Mei가 선호하는 프로필을 선택한 것을 기억하지 못합니다 하지만 이제 새로운 기능을 갖춘 tvOS 16으로 훨씬 나은 사용자 경험을 드립니다 앱 사용자들은 누가 시청하는지 다시 선택하지 않아도 됩니다 얼마나 쉬운지 Xcode로 가서 보여드리겠습니다 앱을 현재 사용자로 실행하는 것은 간단합니다 내 앱의 TARGETS에 기능을 하나 추가하기만 하면 됩니다 여기 앱의 TARGETS입니다 Signing & Capabilities 탭에서 탭 바로 아래 왼쪽 상단에 있는 Capabilities 추가 버튼을 클릭하겠습니다 그러면 Capabilities 목록이 열립니다 제가 관심 있는 것은 사용자 관리입니다 따라서 'user'를 입력하여 목록을 필터링하겠습니다
그리고 앱에 추가하려는 기능을 더블 클릭하기만 하면 됩니다
그러면 '현재 사용자로 실행하기' 체크 박스가 여기 아래에 나옵니다 기본적으로 체크되어 있습니다 제가 필요한 건 바로 이겁니다 이 권한을 설정하면, 제 앱은 항상 현재 선택된 사용자로 시작됩니다 시스템은 각 사용자별로 키체인을 비롯한 모든 데이터가 구별되었는지 확인합니다 하지만 제 앱의 경우, 사용자별로 다른 키체인을 사용하면 예상하지 못한 부작용이 생길 수도 있습니다 앱이 각 사용자에게 별도로 로그인 하도록 요청할 수 도 있습니다 tvOS 16에서는 모든 사용자가 단일 계정을 사용하여 현재 사용자로 실행할 수 있습니다 새로운 키체인 API로 사용자 독립적인 키체인에 액세스해서요 이제 KeychainController 클래스를 보겠습니다 키체인을 읽고 쓰는 데 사용합니다
baseQuery 속성이 있는데요 여기에는 키체인에서 제 앱의 자격 증명에 액세스하기 위해 필요한 키가 있습니다 새로운 사용자 독립적 키체인을 사용하도록 업데이트하려면 딕셔너리에 새 요소를 추가하기만 하면 됩니다 새로운 kSecUseUserIndependentKeychain을 추가하고 True로 설정합니다
이렇게만 하면 앱에서 모든 사용자의 자격 증명을 공유할 수 있습니다 다른 건 필요 없어요 하지만 반드시 기억해야 할 것은 다른 데이터들은 모두 여전히 사용자별로 구별된다는 겁니다 각 사용자의 프로필 선택을 기억하는 데 사용되는 UserDefaults 같은 것들은요
이제 ProfileData 클래스를 열어 보겠습니다 이 파일은 iOS와 tvOS 프로젝트 사이에 공유됩니다 사실 앱의 iOS 버전은 이미 UserDefaults에서 선택된 프로필을 저장하고 있습니다 그러나 iOS에서 실행할 때만이죠 왜냐하면 iPhone은 개인용 기기이기 때문입니다 하지만 이제 제 앱은 현재 사용자로 실행되므로 Apple TV를 개인용으로 사용할 수 있어요, 이 iOS 검사를 삭제하고 코드가 Apple TV에서도 동일하게 작동하도록 할 수 있죠 시스템은 사용자별로 반드시 올바른 UserDefaults를 사용하죠 새 버전의 앱을 실행하면 현재 사용자인 Mei로 실행됩니다 Mei는 로그인하고 프로필을 선택합니다 현재 사용자로 앱을 실행하면 Apple TV처럼 작동합니다 그 순간에는 개인 기기가 되는 거죠 Mei의 기기가 되는 겁니다 Mei의 프로필 선택은 Mei의 UserDefaults에 저장됩니다 Anne이 시청할 시간이 되면 제어 센터에서 사용자를 전환합니다 시스템은 전환 사용자 UI를 표시하면서 프로세스에 시간을 줍니다 다시 시작하기 전 마지막으로 남은 작업을 마칠 시간을 주는 거죠 그리고 나면 tvOS는 앱을 Anne으로 다시 시작합니다 이제 Apple TV는 Anne의 기기입니다 로그인은 건너뛰었습니다, 왜냐면 자격 증명은 모든 사용자가 액세스할 수 있는 사용자 독립적인 키체인에 저장되어 있으니까요 하지만 Anne의 프로필 선택은 UserDefaults에 저장되지 않았어요 따라서 프로필 선택이 표시됩니다 Anne이 프로필을 선택하면 UserDefaults에 저장됩니다 이제 Mei와 Anne 모두 프로필을 선택했습니다 사용자를 전환해도 앱에 더 이상 시작 프롬프트가 표시되지 않습니다 항상 콘텐츠로 바로 이동하죠 항상 자동으로 각 사람에 대해 올바른 프로필을 선택합니다 이렇게 tvOS 16에서는 훨씬 쉽게 각 사용자의 프로필을 기억할 수 있습니다 사용자 독립적 키체인에 액세스 하는 간단한 새 API를 제공하고 시스템에서는 각 사용자의 데이터를 분리하여 처리합니다 각 사용자의 프로필 선택을 저장하는 방법을 배웠습니다 모든 사람이 따로 로그인할 필요 없죠 그러면 이제 Apple TV에서 앱이 작동하는 방식을 살펴보겠습니다 앱은 현재 사용자 자격으로 실행하기 권한이 없으므로 기본 사용자의 리소스를 사용합니다 Apple TV의 자체 리소스라고 생각해도 됩니다 앱 프로세스는 사용자 전환에 영향을 받지는 않습니다 여러분이 개인화를 사용하고 싶다면 다음 방법들을 추천합니다 이 표에서는 어떤 기능이 사용 가능한지 볼 수 있어요 tvOS 앱에서 어떤 특성을 사용하고 싶은지에 따라 다릅니다 앱이 미디어 앱이거나 그와 비슷한 앱인 경우 프로필을 통해 개인화된 콘텐츠를 보여줘야겠죠 Apple TV를 사용하는 모든 사람이 하나의 계정을 공유해야 하면 현재 사용자로 실행하기 권한을 추가해야 합니다 그리고 새로운 사용자 독립적 키체인 API를 사용해야 합니다 만약 여러분의 앱이 게임처럼 개인별로 진도가 다르다면 현재 사용자로 실행하기 권한을 적용하기만 하면 됩니다 나머지는 tvOS가 처리합니다 그리고 다른 모든 앱의 경우 예를 들어 레시피 앱처럼 모든 사용자에게 동일한 콘텐츠를 제공하는 앱이라면 여러분은 아무 것도 할 필요가 없습니다 Xcode에서 새 tvOS 앱 프로젝트를 생성하기만 하면 됩니다 현재 사용자로 실행하는 방법에 대해 자세히 알아보려면 WWDC 2020에서 세션을 확인하세요, tvOS 앱에서는 콘텐츠를 간단하게 직접 연결하는 것이 가장 중요합니다 여러분의 앱을 대형 화면으로 구현하는 데 이 모든 기능이 도움이 되기를 바랍니다 시청해 주셔서 감사합니다 컨퍼런스를 즐기세요!
-
-
5:25 - Save item in user independent keychain
func save(username: String, password: String) { guard let passwordData = password.data(using: .utf8) else { return } let attributes: [CFString: AnyObject] = [ kSecAttrService: "MyApp" as AnyObject, kSecClass: kSecClassGenericPassword, kSecAttrAccount: username, kSecValueData: passwordData, kSecUseUserIndependentKeychain: kCFBooleanTrue ] let status = SecItemAdd(attributes as CFDictionary, nil) if status == errSecSuccess else { self.credentials = (username, password) } }
-
-
찾고 계신 콘텐츠가 있나요? 위에 주제를 입력하고 원하는 내용을 바로 검색해 보세요.
쿼리를 제출하는 중에 오류가 발생했습니다. 인터넷 연결을 확인하고 다시 시도해 주세요.