WWDC 2020 세션 노트
감사합니다 ?
지난 몇 년간 WWDC 세션 노트는 매우 성공적 이어서이 형태의 WWDC 세션 요약을 계속하기로 결정했습니다. 기여, 피드백, 지원 및 내 세션 노트를 읽어 주셔서 감사합니다.
소개
일반적으로 50 분 세션 비디오를 보는 대신 총알 포인트를 읽는 것이 훨씬 빠릅니다. 그런 다음 흥미로운 것을 발견하면 여전히 볼 수 있습니다.
예외적으로 언급 할 수있는 세션은 ★를 사용하여 강조됩니다.
이것은 모든 비디오를 혼자서 보는 데 많은 노력을 기울이기 때문에 진행 중입니다. 따라서 참을성 있거나 문제를 열어주십시오. 다음에보고 싶은 세션에 어떤 세션에 주목하십시오 :)
기부금
내가 뭔가 잘못되었거나 개선을 제안하는 경우 PR을 제출하십시오. 기여하고 싶다면 Contributing.md를 살펴보십시오.
메모의 전반적인 품질에 기여하고 개선 한 모든 사람과 목록에 완전한 메모를 추가 한 사람들에게 감사드립니다.
언급
이 repo는 이미 트위터에서 여러 번 언급되었으며 다음 장소에서도 다음과 같습니다.
- iOS DEV 주간 문제 409
- iOS 케이크 문제 287
- 신속한 개발 문제 189
- WWDCNOTES
흥미로운 WWDC 관련 링크
- @apple의 Apple 개발자 문서
- Xcode 릴리스 노트
- iOS & iPados 릴리스 노트
목차
- (할 일) App Store Connect API를 사용하여 자동화 확장
- (할 일) 평가의 새로운 기능
- 자동차 키 소개
- (할 일) 비디오 앱의 핵심 이미지 파이프 라인 최적화
- (할 일) 편집하고 avfoundation으로 HDR 비디오를 재생합니다
- (할 일) avfoundation으로 앱에서 HDR 미디어를 내보내십시오
- (할 일) 저자는 avassetwriter와 MPEG-4 내용을 조각화했습니다
- (할 일) 금속으로 레이 추적을 발견하십시오
- (할 일) 금속 기능 포인터를 알게됩니다
- (할 일) 핵심 데이터 : Sundries 및 Maxims
- (할 일) 스위치 제어를위한 앱 접근성
- (할 일) 앱을 시각적으로 액세스 할 수 있도록하십시오
- (할 일) Xcode를 사용하여 금속 기반 코어 이미지 커널을 빌드하십시오
- (할 일) 앱에서 매끄러운 음성 경험을 만듭니다
- UICOLLECTIONVIEW의 목록
- 현대적인 셀 구성
- 위젯 키트를 만나십시오
- Swiftui의 (할 일) 스택, 그리드 및 개요
- (할 일) 위젯에 대한 Swiftui보기를 구축하십시오
- (할 일) 위젯 코드-1 부 : 모험이 시작됩니다
- (할 일) 위젯 코드 angong, 2 부 : 대체 타임 라인
- (할 일) 위젯 코드-3 부 : 타임 라인 발전
- (할 일) Swiftui의 앱 필수품
- (할 일) Swiftui에서 문서 기반 앱을 구축하십시오
- Swiftui의 데이터 필수품
- Swiftui의 새로운 기능
- (할 일) TVOS 용 Swiftui 앱을 빌드하십시오
- (할 일) Create ML로 작업 분류기를 구축하십시오
- (할 일) 확산 데이터 소스의 발전
- (할 일) Apple Watch의 합병증을 만듭니다
- (할 일) 암호화 된 DNS를 활성화합니다
- (할 일) Swiftui에서 합병증을 만듭니다
- (할 일) 합병증을 최신 상태로 유지하십시오
- iOS 피커, 메뉴 및 동작으로 구축하십시오
- (할 일) Mac Catalyst 앱의 인터페이스를 최적화하십시오
- (할 일) 전력 및 성능 API의 트렌드를 식별하십시오
- (할 일) 고품질 Siri 미디어 상호 작용을 설계합니다
- (할 일) Sirikit 미디어 의도를 더 많은 플랫폼으로 확장하십시오
- (해야 할 일) 배경 실행이 탈마 화
- (할 일) Sirikit 및 Shortcuts의 새로운 기능
- (할 일) 앱의 음성 상호 작용을 평가하고 최적화합니다
- (할 일) 의도에 힘을 실어주십시오
- (할 일) 해독하고 일반적인 Siri 오류를 처리합니다
- (할 일) Xcode 조직자의 성능 문제를 진단하십시오
- xctest로 애니메이션 히치를 제거하십시오
- 내 앱이 죽이는 이유는 무엇입니까?
- (할 일) Metrickit의 새로운 기능
- (할 일) 앱을 Wind Down과 통합하십시오
- (할 일)는 바로 가기 앱에서 동작을 특징으로합니다
- 인텔리전스 설계 : 앱, 진화
- (할 일) 지능을위한 디자인 : "시스템"과 친구를 만듭니다.
- 인텔리전스 디자인 : 새로운 기회를 발견하십시오
- (할 일) 핵심 이미지 디버깅 기술을 발견하십시오
- (할 일) avfoundation 및 videotoolbox로 prores를 디코딩하십시오
- (할 일) 실패에 대한 테스트를 작성하십시오
- (할 일) iPados 포인터의 빌드
- (할 일) 트랙 패드 및 마우스 입력을 처리합니다
- (할 일) 푸시 알림 프라이머
- (할 일) Xcode Playgrounds가있는 패키지 및 프로젝트를 탐색하십시오
- uicollectionview의 발전
- Universal Links의 새로운 기능
- (할 일) Action & Vision 앱을 탐색하십시오
- 기조 연설 ★
- (할 일) 시계 얼굴 공유를 만나십시오
- (할 일) 훌륭한 위젯을 디자인하십시오
- (할 일) MacOS의 새로운 모습을 채택하십시오
- (할 일) iPad의 빌드
- (할 일) iPad 용 Scribble을 만나십시오
- (할 일) Pencilkit의 새로운 기능
- (할 일) 앱에서 하드웨어 키보드를 지원합니다
- (할 일) 앱에서 로컬 네트워크 개인 정보를 지원합니다
- (할 일) 최신 네트워킹을 통해 성능과 보안을 향상시킵니다
- (할 일) 제한된 네트워크에 대한 로컬 푸시 연결을 구축하십시오
- (할 일) Apple Silicon Mac의 iPad 및 iPhone 앱
- (할 일) 모든 곳에서 자동으로
- (할 일) 사용자 정의 로터의 음성 오버 효율
- (할 일) Mac 촉매에 대한 접근성 설계
- (할 일) 다른 비즈니스를위한 앱 클립을 만듭니다
- (할 일) Swiftui 소개
- 앱 클립을 간소화하십시오
- (할 일) Appleseed를 발견하고 소프트웨어 업데이트를 관리합니다
- (할 일) 엔터프라이즈 신원 및 인증을 활용합니다
- (할 일) 위치 인식 엔터프라이즈 앱을 구축하십시오
- (할 일) 확장 가능한 엔터프라이즈 앱 스위트를 구축하십시오
- (할 일) Mac Catalyst의 새로운 기능
- (할 일) 게임 센터를위한 디자인
- 앱 클립을 구성하고 연결하십시오
- 이진 프레임 워크를 신속한 패키지로 배포하십시오
- (해야 할 일) 연필 키트 도면을 검사, 수정 및 구성합니다
- (할 일) Swiftui 미리보기를위한 앱을 구조화하십시오
- (할 일) Carekit의 새로운 기능
- (할 일) Core ML과 함께 모델 배포 및 보안을 사용하십시오
- (할 일) 코어 ML 변환기를 사용하여 장치에서 모델을 얻습니다
- (할 일) 신속하게 ML 생성 훈련
- (할 일) 더 나은 HLS 오디오 경험을 제공합니다
- (할 일) 엔드 포인트 보안 앱을 구축하십시오
- (할 일) Formatters : 데이터를 인간 친화적으로 만듭니다
- 위치 개인 정보를위한 디자인
- (할 일) Objective-C 런타임의 발전
- xctskip 테스트
- 신속한 유형 추론을 받아들이십시오
- (할 일) Swift에서 포인터를 안전하게 관리하십시오
- (할 일) Swift 로그인을 탐색하십시오
- (할 일) 신속한 패키지 : 자원 및 현지화
- Swift의 새로운 기능
- (할 일) Watchos 디자인의 새로운 기능
- (할 일) 훌륭한 앱 클립을 디자인하십시오
- (할 일) Apple과의 사인을 최대한 활용하십시오.
- 앱 클립을 탐색하십시오
- (할 일) UI 타이포그래피의 세부 사항
- (할 일) TVOS의 그림의 마스터 사진
- Healthkit의 새로운 기능
- (할 일) 건강 데이터를 Healthkit과 동기화합니다
- (할 일) Swiftui보기를 시각적으로 편집하십시오
- (할 일) Wkwebview 향상을 발견하십시오
- (할 일) 앱을 보호하십시오 : 위협 모델링 및 패턴 방지
- (할 일) WatchOS에서 바로 가기와 빠른 상호 작용을 만듭니다
- (할 일) 위젯에 구성 및 인텔리전스를 추가하십시오
- (할 일) Siri 이벤트 제안으로 도달 범위를 넓 힙니다
- 연합의 플랫폼 상태 ★
- (할 일) 지능을위한 디자인 : 사람들이있는 곳을 만나십시오
- (할 일) 훌륭한 엔터프라이즈 앱 생성 : Box의 Aaron Levie와의 채팅
- (할 일) iOS 피커, 메뉴 및 액션을 사용한 디자인
- (할 일) iPad 용 디자인
- (할 일) SF 기호 2
- (할 일) Core NFC의 새로운 기능
- (할 일) PCI 및 SCSI 드라이버를 DriverKit으로 현대화하십시오
- (할 일) Mac 앱을 Apple Silicon에 포트하십시오
- (할 일) ResearchKit의 새로운 기능
- (할 일) Swift의 수치 컴퓨팅을 탐색하십시오
- (할 일) Xcode를 사용하여 현지화 친화적 인 레이아웃을 구축하십시오
- (할 일) UI 테스트에서 중단 및 경고를 처리합니다
- 테스트 결과를 더 빨리 얻으십시오
- (할 일) 직원을위한 맞춤형 앱을 만듭니다
- (할 일) Zero-Touch를 사용하여 Apple 장치를 배포하십시오
- (할 일) 오디오 작업 그룹을 만나십시오
- (할 일) HLS 도구로 스트림 제작을 향상시킵니다
- (할 일) Avaudiosession을 사용한 스테레오 오디오를 기록하십시오
- 저도 HLS의 새로운 기능
- (할 일) HLS 차단 예압 힌트를 발견하십시오
- (할 일) HLS 재생 목록 델타 업데이트로 라이브 스트림을 최적화하십시오
- (할 일) HLS 차단 재생 목록 재 장전으로 대기 시간을 줄입니다
- (해야 할 일) AD 삽입이 낮은 학위 HL에 적응합니다
- (할 일) 아티스트의 AR 툴킷
- (할 일) Apple Gpus를 금속으로 활용하십시오
- (할 일) GPU 카운터로 금속 앱 및 게임을 최적화하십시오
- (할 일) AR 빠른 모양으로 온라인 쇼핑
- (할 일) Xcode 12를 사용하여 금속 앱에 대한 통찰력을 얻으십시오.
- Arkit 4를 탐색하십시오
- (할 일) RealityKit의 새로운 기능
- (할 일) USD의 새로운 기능
- (할 일) 게임 컨트롤러의 발전
- (할 일) 금속으로 GPU 바이너리를 구축하십시오
- (할 일) 금속의 GPU 측 오류 디버그
- (할 일) 키보드와 마우스 게임을 iPad로 가져옵니다
- (할 일) 게임 센터를 탭합니다 : 대시 보드, 액세스 포인트 및 프로필
- (할 일) 게임 센터 : 리더 보드, 업적 및 멀티 플레이어를 활용하십시오
- (할 일) 성능 집약적 인 앱 및 게임을 지원합니다
- (할 일) 금속 앱을 Apple Silicon Mac에 가져옵니다
- (할 일) Apple Silicon Mac의 금속 성능을 최적화하십시오
- (해야 할 일) REPLAYKIT를 사용하여 Mac에서 앱을 캡처하고 스트리밍합니다.
- (할 일) Apple TV에 대한 검색 제안을 발견하십시오
- CarPlay로 앱을 가속화하십시오
- (할 일) Apple Watch의 스트리밍 오디오의 새로운 기능
- (할 일) Apple 장치 관리의 새로운 기능
- (할 일) iPados 포인터의 디자인
- (할 일) 앱에서 제한된 사진 라이브러리를 처리하십시오
- (할 일) ML 생성 이미지 및 비디오 스타일 전송 모델 빌드
- (할 일) Swift Playgrounds에서 Swiftui View를 구축하십시오
- (할 일) Xcode와 함께 AWS Lambda에서 Swift를 사용하십시오
- (할 일) TVOS 앱에서 여러 사용자를 지원합니다
- (할 일) 웹 검사관의 새로운 기능
- (할 일) 시뮬레이터 전문가가됩니다
- (할 일) 안전하지 않은 신속한
- (할 일) Xcode 라이브러리에 사용자 정의보기 및 수정 자 추가
- (해야 할 일) CORE DATA Store를 CloudKit Public 데이터베이스와 동기화
- App Store Connect의 새로운 기능
- 새로운 사진 피커를 만나십시오
- (할 일) 신체와 손 포즈를 시력으로 감지하십시오
- (할 일) iPad 및 Mac 용 신속한 놀이터 컨텐츠를 만듭니다
- (할 일) 오프라인으로 HLS를 다운로드하고 재생하는 방법을 발견하십시오
- (할 일) 계산 단계를 넘어서
- (할 일) 자연어로 앱을 더 똑똑하게 만듭니다
- (할 일) 교육의 새로운 기능
- (할 일) Xcode에서 StoreKit 테스트 소개
- (할 일) 새로운 위치
- (할 일) 인앱 구매의 새로운 기능
- 지갑과 Apple Pay의 새로운 기능
- (할 일) 웹 개발자에게 새로운 기능
- (할 일) Healthkit을 시작하는 것
- (할 일) 사파리 웹 확장을 만나십시오
- (할 일) 일회성 계정 보안 업그레이드
- (할 일) Apple Business Manager와의 맞춤형 앱 배포
- (할 일) 근처의 상호 작용을 만나십시오
- (할 일) 화상을 입지 않고 fhir 처리
- (할 일) 웹의 얼굴 ID 및 터치 ID를 만나십시오.
- (할 일) 구독을위한 아키텍처
- (할 일) Classkit의 새로운 기능
- (할 일) 컴퓨터 비전 API를 탐색하십시오
- (할 일) 더 나은 프라이버시를 통해 신뢰를 구축하십시오
- (할 일) 금속 성능 셰이더 그래프로 맞춤형 ML 모델 구축
- (할 일) Swift를위한 대상 C 프레임 워크를 개선합니다
- (할 일) Apple Silicon Mac의 새로운 시스템 아키텍처 탐색
- (할 일) XCTissue의 심사 테스트 실패
App Store Connect API로 자동화 확장
https://developer.apple.com/wwdc20/10004
발표자 : 예제 Guy, 다른 사람
할 일! 이 세션에 기여할 수 있습니다. Contributing.md를 참조하십시오
평가의 새로운 기능
https://developer.apple.com/wwdc20/10005
발표자 : 예제 Guy, 다른 사람
할 일! 이 세션에 기여할 수 있습니다. Contributing.md를 참조하십시오
자동차 키 소개
https://developer.apple.com/wwdc20/10006
발표자 : Matthias Lerch
- 사람들은 자동차 잠금을 해제하고 잠그고 시작할 수 있습니다 (iPhone 또는 Apple Watch)
- 장치에 안전하게 저장되었으며 iCloud를 통해 삭제할 수 있습니다.
- 키는 가족이나 친구와 공유 할 수 있습니다
- 무기 기술 ( 지금까지 NFC 지원 )
- 오프라인 가능
- 자동차를 지원해야합니다.
- 소유자 페어링 (iPhone 및 자동차 인 경우 협회)
- 자동차의 소유권을 증명하십시오
- 페어링을 시작하십시오
- 자동차의 NFC 리더 근처에 iPhone을 배치하십시오
- 자동차 키가 지갑에 나타납니다
- 거래 (잠금 해제, 잠금, 자동차 시동)
- 도어 핸들 및 대시 보드의 NFC 독자 (엔진 시작)
- 보안 및 성능에 최적화되었습니다
- Express Mode는 얼굴 ID 또는 암호없이 기능을 작동시킬 수 있습니다 (기본적으로 켜짐)
- iPhone과 자동차는 오프라인 상태 일 수 있습니다
- Apple은 언제 자동차를 사용하는지 모릅니다
- 서버 인터페이스 (키 공유, 키 관리)
- 메시지를 통해 키를 공유합니다
- 공유 할 때 자동차는 오프라인 상태 일 수 있습니다
- 애플
- 선택적 액세스 레벨 (예 : '잠금 해제 및 드라이브', '액세스 및 드라이브 최대 65mph')
- 액세스 레벨을 정의하는 것은 각 자동차 제조업체에 달려 있습니다.
- 키 관리
- iPhone 또는 자동차에서 소유자 및 공유 키를 관리하십시오
- 장치에서 즉시 작동 중지에서 제거 된 키 (장치가 오프라인 상태 인 경우에도)
- 쉽게 변경하는 소유자 장치 (예 : 새 iPhone을 구입할 때)
- 시스템 아키텍처
- 기본적으로 iOS에 완전히 통합되었습니다
- 안전한 요소로 생성 및 저장된 키는 내보내지 않습니다.
- 모든 기능은 AE 및 Eliptic-Curve 암호화를 사용합니다
- PKI를 기반으로 한 오프라인 디자인
- 자동차 제조업체 TSM (신뢰할 수있는 서비스 관리자) 간단한 서버 통합에는 필요하지 않습니다.
- 디지털 자동차 키는 무엇입니까?
- Apple 또는 Auto Maker가 아닌 사용자의 장치에 묻습니다.
- 개인 키 (SK)는 SE를 떠나지 않습니다 (보안 요소)
- 공개 키는 확인을 위해 X.509 인증서로 내보립니다.
- 애플릿
- 보안 요소에서 자동차 키를 구현합니다
- 키 페어, 자동차 공개 키, 보안 사서함을 저장합니다
- 모든 자동차 키는 단일 애플릿 인스턴스로 호스팅됩니다
- 소유자 페어링 흐름 (온라인)
- 검증 자
- 페어링 비밀번호
- 편성
- 암호화 링크
- 주요 활성화/등록
- 주요 증명
- 주요 공유 흐름
- 소유자는 메시지를 사용하여 초대장을 보냅니다
- 새로운 키가 크게 향했다
- 신원 증명서 체인
- 소유자 확인
- 증명이 돌아 왔습니다
- 오프라인 등록
- 자동차 키의 수명주기
- 소유자 페어링 또는 키 공유 중에 생성되었습니다
- 업무
- 서스펜션
- 폐지
- 삭제
- 인증서 및 거래
- 소유자 공유, 키 공유, 빠르고 표준 거래
- 11:30에 제시된 흐름과 계획을 더 깊이 살펴보십시오.
- 라디오 기술
- NFC
- 표준 NFC 리더를 기반으로합니다
- 향상된 비접촉식 프로토콜 (ECP)
- 완전 자동 NFC 경험을 활성화합니다
- 트랜잭션이 시작되기 전에 사용 가능한 식별자 (리더 유형, 자동차 제조업체)
- 효율적인 독자 폴링
- 울트라 광대역
- U1 칩이있는 iPhone
- 가방이나 주머니에 iPhone과 함께 사용하십시오
- 일반적인 키 관리 아키텍처
- 사양은 현재 개발 중입니다
- 서버 통합
- 원격 키 관리에 필요합니다
- Auto Maker Server는 Apple의 백엔드와 연결을 설정해야합니다 (예 : 각 환경, 예 : 테스트 및 생산)
- 교환 증명서
- 서버 인터페이스 구현 및 테스트 (새 키 등록, 키를 취소하고 알림 보내기)
- 작품을 제공하십시오
- 자동차 제조업체 앱에 연결하십시오
- 자동차 제조업체 앱
- 지갑에 저장된 키를 사용하여 사용자 정의 기능을 제공합니다
- 소유자 페어링을 시작하십시오
- 자동차 제조업체가 제공합니다
- 자격이 필요합니다
- Passkit API를 사용하십시오
- 시작하는 방법 (자동차 제조업체)
- 자동차 연결 컨소시엄
- 디지털 키 사양 2.0
- Digital Key Specification 3.0 (개발 중, Ultra 광대역 지원)
- carconnectivity.org
- Apple MFI 프로그램에 대한 설계
비디오 앱의 핵심 이미지 파이프 라인을 최적화하십시오
https://developer.apple.com/wwdc20/10008
발표자 : 예제 Guy, 다른 사람
할 일! 이 세션에 기여할 수 있습니다. Contributing.md를 참조하십시오
avfoundation으로 HDR 비디오를 편집하고 재생하십시오
https://developer.apple.com/wwdc20/10009
발표자 : 예제 Guy, 다른 사람
할 일! 이 세션에 기여할 수 있습니다. Contributing.md를 참조하십시오
avfoundation으로 앱에서 HDR 미디어를 내보내십시오
https://developer.apple.com/wwdc20/10010
발표자 : 예제 Guy, 다른 사람
할 일! 이 세션에 기여할 수 있습니다. Contributing.md를 참조하십시오
저자는 AvassetWriter와 MPEG-4 컨텐츠를 조각화했습니다
https://developer.apple.com/wwdc20/10011
발표자 : 예제 Guy, 다른 사람
할 일! 이 세션에 기여할 수 있습니다. Contributing.md를 참조하십시오
금속으로 추적을 발견하십시오
https://developer.apple.com/wwdc20/10012
발표자 : 예제 Guy, 다른 사람
할 일! 이 세션에 기여할 수 있습니다. Contributing.md를 참조하십시오
금속 기능 포인터를 알아보십시오
https://developer.apple.com/wwdc20/10013
발표자 : 예제 Guy, 다른 사람
할 일! 이 세션에 기여할 수 있습니다. Contributing.md를 참조하십시오
핵심 데이터 : Sundries 및 Maxims
https://developer.apple.com/wwdc20/10017
발표자 : 예제 Guy, 다른 사람
할 일! 이 세션에 기여할 수 있습니다. Contributing.md를 참조하십시오
스위치 제어를위한 앱 접근성
https://developer.apple.com/wwdc20/10019
발표자 : 예제 Guy, 다른 사람
할 일! 이 세션에 기여할 수 있습니다. Contributing.md를 참조하십시오
앱에 시각적으로 액세스 할 수 있도록하십시오
https://developer.apple.com/wwdc20/10020
발표자 : 예제 Guy, 다른 사람
할 일! 이 세션에 기여할 수 있습니다. Contributing.md를 참조하십시오
Xcode를 사용하여 금속 기반 코어 이미지 커널을 구축하십시오
https://developer.apple.com/wwdc20/10021
발표자 : 예제 Guy, 다른 사람
할 일! 이 세션에 기여할 수 있습니다. Contributing.md를 참조하십시오
앱에서 완벽한 음성 경험을 만듭니다
https://developer.apple.com/wwdc20/10022
발표자 : 예제 Guy, 다른 사람
할 일! 이 세션에 기여할 수 있습니다. Contributing.md를 참조하십시오
UICOLLECTIONVIEW의 목록
https://developer.apple.com/wwdc20/10026
발표자 : Michael Ochs
- iOS 14 컬렉션 뷰의 목록은
UICollectionView 의 UITableView -like lesivances 참조 - 개선 된 자체 크기 지원 : 이제
UICollectionView 에서 목록을 사용할 때 기본값- Autolayout으로 셀을 구축하고 컬렉션보기를 인수하십시오.
-
preferredLayoutAttributesFittingAttributes: 수동 크기를 운동하기위한 셀 서브 클래스에서 재정의하십시오
- UICOLLECTIONLAYOUTLISTCONFIGURATION
- 컬렉션보기에서 목록을 작성하는 데 레이아웃 측에 필요한 유일한 새로운 유형
-
NSCollectionLayoutSection 및 UICollectionViewCompositionalLayout 위에 내장 : 컬렉션보기 레이아웃에서 고급 확인을 확인하십시오. - iPados 14에서 멀티 컬럼 앱을 구축하기위한 두 가지 목록
.sidebar 스타일 .sidebarPlain 추가 - 분리기를 표시/숨기고 목록 헤더/바닥 글을 구성하는 옵션
- 목록 작성
- 쉬운 방법
-
UICollectionLayoutListConfiguration 만듭니다 - 구성으로
UICollectionViewCompositionalLayout 을 만듭니다
- 순당한 설정
-
UICollectionLayoutListConfiguration 만듭니다 - 구성으로
NSCollectionLayoutSection 만듭니다 - 위의 코드를 기존 섹션 제공 업체 이니셜 라이저 안에 구성 레이아웃에 배치하십시오.
- 섹션별로 레이아웃을 사용자 정의하십시오
- 목록 섹션 헤더/바닥 글
- 목록 헤더/바닥 글을 명시 적으로 활성화해야합니다
- 헤더/바닥 글을 보충 뷰로 등록하십시오
- 헤더/바닥 글 모드 설정 '보충'으로 설정
- 화면에서 헤더/바닥 글을 렌더링 할 때 보충 뷰를 제공합니다.
-
headerMode firstItemInSection (헤더 전용)으로 설정합니다.- 첫 번째 컬렉션보기 셀을 구성하여 헤더처럼 보이도록 구성
- 계층 적 데이터 구조 및 스냅 샷 API에 권장 : Diffable Data Source에서 발전을 확인하십시오.
- 데이터 소스는 첫 번째 셀이 헤더임을 알고 있어야합니다.
- uicollectionviewlistcell
-
UICollectionViewCell 의 서브 클래스는 상호 교환 적으로 사용할 수 있습니다 - 분리기 삽입 및 셀 함량 압입 구성을 더 잘 지원합니다.
- 스 와이프 액션이 특징입니다
- 더 나은 액세서리 API
- 기본 시스템 컨텐츠/배경 구성에 대한 액세스 부여 : 최신 셀 구성을 확인하십시오.
- 분리기 레이아웃 가이드
- 분리기는 1 차 셀 함량과 일치해야합니다.
- 이 레이아웃 가이드를 컨텐츠로 제한하십시오 : Uikit 레이아웃 가이드의 반대
- 셀의 레이아웃을 구성하십시오
- 분리기 레이아웃 가이드의 주요 앵커를 셀의 주요 콘텐츠의 주요 앵커로 제한합니다.
- 시스템 제공 컨텐츠 구성을 사용할 때 자동으로 처리됩니다
- 스 와이프 액션
- 셀이 목록 구성을 사용하여 구성된 섹션 내부 렌더링 된 경우에만 지원됩니다.
- 선행/후행 스 와이프 액션의 구성 getter를 구성하여 구성하십시오
- 주의 : action handler에서 구성중인 셀의 인덱스 경로 (불안정)를 캡처하지 마십시오.
- 데이터 모델을 직접 캡처합니다
- 셀의 안정적인 식별자를 캡처하십시오.
- Diffable Data Source 및 안정적인 항목 식별자
- iOS 14의 새로운 셀 등록 유형 : uicollectionviewlistcell
- 목록 셀의 액세서리 API
- 셀의 선행 및 후행 측면을 구성하는 옵션
- 같은쪽에 여러 액세서리를 구성하십시오
- 목록 셀 액세서리의 기능
- 액세서리 재정렬 : 셀이 탭하면 다시 로딩 모드로 셀이 자동으로 있습니다.
- 액세서리 삭제 : 셀이 탭하면 구성된 후행 스 와이프 동작을 자동으로 드러냅니다.
- 개요 공개 액세서리
- 셀은 데이터 소스와 자동으로 통신하고 도청시 어린이를 확장/붕괴시킵니다.
- 새 섹션 Snapshot API가 필요합니다 : Diffable Data Source에서 발전을 확인하십시오.
- Customizabilities가 유지되는 동안 많은 시스템 기본값이 제공됩니다.
현대적인 셀 구성
https://developer.apple.com/wwdc20/10027
발표자 : Tylor Fox
- 구성을 시작합니다
- iOS 13에서는
UITableViewCell 의 내장 ImageView 및 TextLabel 속성을 사용하여 이미지와 일부 텍스트를 표시합니다. - iOS 14에서는 컨텐츠 구성을 사용하여 특정 상태의 셀 모양을 설명합니다.
- 컨텐츠 구성을 사용하여 셀을 구성하는 방법입니다.
-
var content = cell.defaultContentConfiguration() 설정하지 않고 항상 새로운 구성을 반환합니다. 오래된 상태에 대해 전혀 생각할 필요가 없습니다. - 컨텐츠 구성에서 이미지와 텍스트를 설정하십시오.
-
cell.contentConfiguration = content 이를 호출하자마자 셀이 지정된 이미지와 텍스트를 표시하도록 업데이트됩니다.
- 셀을 구성하는 동일한 코드 및 컨텐츠 구성을 지원하는 뷰를 구성합니다.
- 종합 가능하고 가벼우 며 생성 및 공연을 위해 제작하기가 매우 저렴합니다.
- 구성 유형
- 백그라운드 구성
- 배경색, 시각적 효과, 스트로크, 삽입, 코너 반경 및 사용자 정의보기와 같은 것을 설정할 수 있습니다.
- 컨텐츠 구성을 나열합니다
- 이미지, 텍스트, 보조 텍스트, 레이아웃 메트릭 및 동작과 같은 것을 설정할 수 있습니다.
- 구성 상태
- 구성 상태는 셀과 뷰를 구성하는 데 사용하는 다양한 입력을 나타냅니다.
- 각 셀, 헤더 및 바닥 글에는 자체 구성 상태가 있습니다.
- 두 가지 유형
- 구성 상태를 봅니다
- 특성 수집
- 4 상태 : 강조, 선택, 장애 및 집중
- 사용자 정의 상태 : 이것은 뷰를 구성하는 데 사용하는 추가 상태 또는 데이터를 추가하기위한 키 가치 저장소입니다.
- 셀 구성 상태
- 보기 구성 상태의 모든 것
- 편집, 스 와이프, 확장
- 드래그 앤 드롭 상태
- 셀의 구성 상태가 변경 될 때
automaticallyUpdatesContentConfiguration ContentConfiguration을 자동으로 업데이트하면 셀이 컨텐츠 구성에서 updated(for:) 자동으로 호출하고 업데이트 된 구성을 셀에 다시 적용합니다. 기본값은 참입니다. - 셀의 구성 상태가 변경 될 때
automaticallyUpdatesBackgroundConfiguration 자동으로 updated(for:) 셀의 구성 상태가 변경 될 때 업데이트 된 구성을 셀에 다시 적용합니다. 기본값은 참입니다. -
updateConfiguration(using:) 컨텐츠 구성을 수동으로 업데이트하고 사용자 정의 하고이 속성을 False로 설정하여 자동 업데이트를 비활성화 할 수 있습니다. 이 방법은 셀이 첫 번째 표시되기 전에 호출되며 구성 상태가 변경 될 때마다 호출됩니다.
위젯 키트를 만나십시오
https://developer.apple.com/wwdc20/10028
발표자 : Nahir Khan, Neil Desai
- 위젯은 이제 모든 플랫폼에서 사용됩니다
- 훌륭한 위젯은 화려하고 관련성이 있으며 개인화됩니다
- 스마트 스택은 위젯 컬렉션이며, 기기 지능을 사용하여 올바른 위젯을 자동으로 표시합니다.
- 위젯은 구성을 탭하여 구성 지원 - Sirikit과 유사한 의도를 사용하여 실현됩니다.
- 예를 들어 날씨 앱에서 도시를 선택합니다
- UI는 Swiftui에 전적으로 지어졌습니다
- Widgetkit의 작동 방식
- 위젯 키트 확장은 배경 확장입니다
- 그들은 일련의 View 계층을 시간 선으로 반환합니다.
- 타임 라인은 적시에 올바른보기를 제공하는 홈 화면으로 전송됩니다.
- 뷰는 "준비"되었으므로 시스템의 다른 지점에서 재사용 할 수 있습니다. 예를 들어 위젯 갤러리
- 타임 라인은 기본 앱에서 새로 고침되며 업데이트는 확장으로 예약됩니다.
- 오늘의 달력 타임 라인을 상상해보십시오. 한 이벤트는 캘린더에서 업데이트 된 다음 확장을 깨우고 새로운 타임 라인을 제공합니다.
- 위젯 구축
- 단일 위젯 확장자는 다른 플랫폼에서 여러 종류의 위젯을 지원합니다.
- 가능한 구성 :
Static (운동 위젯) 또는 Intent-Based (개인화 할 수있는 알림 위젯) - 지원 가족 : 위젯은 다음 가족 중 하나 또는 많은 가족을 가능하게 할 수 있습니다 :
systemSmall , systemMedium , systemLarge - 위젯 구조는
Widget 과 본체를 WidgetConfiguration 에 따라 준 - 화려한 경험을 구축하는 방법
- 위젯은 미니 앱이 아니며 홈 화면에서 콘텐츠를 프로젝트
- 스크롤이 없습니다
- 비디오 나 애니메이션 이미지가 없습니다
- 메인 앱으로의 깊은 링크와 상호 작용을 탭합니다. WidgetUrl API를 사용하여 URL 링크와 관련된 위젯 (Swiftui의 새 링크 API 사용)
- 중요한 새로운보기 유형 :
-
Placeholder- 사용자 데이터를 포함해서는 안됩니다
- 훌륭한 자리 표시 자 UI는 귀하의 데이터가 어떤 종류인지를 보여줍니다.
-
Snapshot- 단일 항목을 제 시간에 나타냅니다
- 가능한 한 빨리보기를 반환해야합니다
- 갤러리에 위젯을 표시하는 데 사용됩니다
- 사용자가 갤러리에서 보는 것을 얻을 수 있도록 타임 라인의 첫 번째 항목으로 사용하십시오.
-
Time line- 견해와 날짜의 조합
- WidgetKit Extension이 디스크에 직렬화되어있는 경우 출력으로 인해 제 시간에 개별 항목을 렌더링 할 수 있습니다.
- 새로 고침
- 연장을 깨우고 새로운 타임 라인을 요청하십시오.
- 콘텐츠가 최신 상태인지 확인하십시오
-
struct Provider: TimelineProvider 의 TimelineProvider 받으십시오- 각 데이터를 반환하기 위해
func snapshot(...) 및 func timeline(...) 을 구현하십시오. - 타임 라인에 재 장전 정책
after(date: Date) 제공하여 시간 줄 atEnd 다시로드해야 할시 never 알 수 있습니다.
- 시스템은 다음을 기반으로 위젯을 다시로드하는 가장 좋은시기를 결정합니다.
- 배경 알림
- 상당한 시간 변경
- 사용자가 작성한 앱 (예 : 새로운 캘린더 항목 변경
-
WidgetCenter.[reloadTimelines(ofKind:), reloadAllTimelined] 사용하십시오 -
WidgetCenter.getCurrentConfigurations(completion:) 로 현재 구성을 받으십시오.- 배치 요청을 사용하십시오
- 위젯에서 네트워킹을 과도하게 사용하지 마십시오
-
onBackgroundURLSessionEvents 수정자를 사용하여 확장자에 결과를 전달하는 네트워크 작업을 시작하십시오.- 다시로드는 시스템에 의해 예산이 책정되며 과도하게 사용하지 마십시오.
- 개인화
- 시리에서 알려진
Intents 프레임 워크를 사용하여 위젯 동작을 사용자 정의합니다. - 위젯의 요청에 답변하기 위해 새로운 인앱 의도 처리를 사용하십시오.
- 의도 기반 위젯 구성에
IntentConfiguration 공급하는 데 사용됩니다 -
IntentTimelineProvider 특정 시간 라인을 생성하는 데 사용됩니다
- 지능
- 위젯은 홈 화면에 표시된 정보 지능에 의해 표시됩니다.
- 앱은 바로 가기를 기부 할 수 있습니다
- 위젯 확장자는 점수 및 지속 시간 속성으로
TimelineEntryRelevance 사용하여 타임 라인 항목을 주석을 달 수 있습니다.
Swiftui의 스택, 그리드 및 윤곽선
https://developer.apple.com/wwdc20/10031
발표자 : 예제 Guy, 다른 사람
할 일! 이 세션에 기여할 수 있습니다. Contributing.md를 참조하십시오
위젯에 대한 Swiftui보기를 구축하십시오
https://developer.apple.com/wwdc20/10033
발표자 : 예제 Guy, 다른 사람
할 일! 이 세션에 기여할 수 있습니다. Contributing.md를 참조하십시오
위젯 코드 andong, 1 부 : 모험이 시작됩니다
https://developer.apple.com/wwdc20/10034
발표자 : 예제 Guy, 다른 사람
할 일! 이 세션에 기여할 수 있습니다. Contributing.md를 참조하십시오
위젯 코드 andong, 2 부 : 대체 타임 라인
https://developer.apple.com/wwdc20/10035
발표자 : 예제 Guy, 다른 사람
할 일! 이 세션에 기여할 수 있습니다. Contributing.md를 참조하십시오
위젯 코드 annong, 3 부 : 타임 라인 발전
https://developer.apple.com/wwdc20/10036
발표자 : 예제 Guy, 다른 사람
할 일! 이 세션에 기여할 수 있습니다. Contributing.md를 참조하십시오
Swiftui의 앱 필수품
https://developer.apple.com/wwdc20/10037
발표자 : 예제 Guy, 다른 사람
할 일! 이 세션에 기여할 수 있습니다. Contributing.md를 참조하십시오
Swiftui에서 문서 기반 앱을 구축하십시오
https://developer.apple.com/wwdc20/10039
발표자 : 예제 Guy, 다른 사람
할 일! 이 세션에 기여할 수 있습니다. Contributing.md를 참조하십시오
Swiftui의 데이터 필수품
https://developer.apple.com/wwdc20/10040
발표자 : Curt Clifton, Luca Bernardi, Raj Ramamurthy
- 시작하기
- 항상 다음 질문을합니다.
- 내 견해는 어떤 데이터가 필요합니까?
- 이 날짜를 어떻게 조작 할 것인가?
- 데이터는 어디에서 나옵니까?
- 데이터 만 표시하는 불변의보기에는 속성 만 포함합니다.
- 자체 구성 객체 에서 여러 속성을 가져옵니다
- 구성 객체는 상태를 돌연변이하기 위해 함수를 포함 할 수 있습니다.
-
@State private var config: ConfigObject() 사용하여 config 변경 후보기를 다시 렌더링합니다. -
@Binding var config 사용하여 공유하여 단일 구성 객체를 통해 부모와 서브 뷰를 통신하도록하십시오. - 달러 기호를 사용하여 IT를 참조로 표시하여
config 전달하십시오 : SubView(config: $config)
- ObservableObject를 사용한 데이터 모델링
- 클래스 제약 프로토콜 (참조 유형에 의해서만 채택 가능)
- 수퍼 커스텀 동작을 달성하는 데 사용할 수 있으며 예를 들어 서비스 또는 서버로 데이터를 뒷받침합니다.
-
var objectWillChange: Self.ObjectWillChangePublisher { get } - 데이터 수명주기를 관리하고 , 부작용을 처리하고 , 기존 구성 요소와 통합하는 데 사용
- 당신의 진실의 원천이 될 것입니다
- 전체 데이터 모델 일 필요가 없습니다. 모델이 복잡한 경우 여러 관측 가능한 개체로 분할하십시오.
- 데이터 모델이 간단한 경우 모든보기에 단일 ObservableObject를 사용하십시오.
- ObservableObject의 속성을 표시하면, 귀하의 견해는
@Published var progress: Double - ObservableObject 종속성을 만드는 방법은 무엇입니까?
-
@ObservedObject-
@ObservedObject var config: Configuration - 당신은 당신의 관점 이외의 개체 소유권을 관리해야합니다.
- ObservableObject의 모든 값 유형 속성에 바인딩을 작성하여 EG
$config.isFinished 로 전달하여 Toggle 컨트롤을 자동으로 업데이트하도록합니다.
-
@StateObject- Swiftui는 ObservableObject를 소유합니다
- 창조/파괴는 View의 수명주기와 관련이 있습니다
- 바디가 달리기 직전에 인스턴스화
-
@published var image: Image property가 포함 된 ImageLoader: ObservableObject 를 구현하려면이를 사용하십시오. -
@StateObject 변경 될 때마다보기가 다시 렌더링되어 이미지로 채워집니다.
-
EnvironmentObject- Swiftui에서는 일반적으로 많은 모듈 식 하위보기의 계층 구조가 있습니다.
- ObservableObject의 주위를 통과하여 많은 보일러 플레이트를 피하기 위해
.environmentObject(...) - 계층 구조의 어느 관점에서든 변경 사항은 다른 관점에 반영됩니다.
- Swiftui 성능 고려 사항
- 느린보기 업데이트를 피하십시오
- 예를 들어 파견이없는 이니셜 라이저를 저렴하게 만듭니다
- 몸을 순수한 기능으로 만드십시오
- 가정을 피하십시오
- 새로운 이벤트 소스 :
onChange , onOpenURL , onContinueUserActivity 메인 스레드에서 실행
- 누가 데이터를 소유합니까?
- 공통 조상에서 데이터를 공유하십시오
-
@StateObject 활용합니다 -
App 에 글로벌 데이터를 배치하고 View 계층 구조를 전달하십시오. 그것으로 변경 사항은 앱의 모든 장면 (인스턴스/창)을 다시 렌더링합니다. - 새로운 2020 : 앱 재시작에 대한 데이터 지속성을 제공하고 진실의 원천으로 사용할 수있는 속성 포장지
-
@SceneStorage- Swiftui가 관리하는 읽기/쓰기 데이터를위한 Scene Per Speagity 래퍼
- 뷰 데이터에 대한 가벼운 저장
- 컬렉션 뷰를 채우는 데 사용하십시오
-
@AppStorage- app-scoped Global Storage,
UserDefaults , usable alleere (app/view)를 사용하여 지속 - 설정을 저장하는 데 적합합니다
-
@AppStorage("amountOfGold") private var amountOfGold = 5000 - 속성이 변경 될 때마다 자동으로 읽기/쓰기
Swiftui의 새로운 기능
https://developer.apple.com/wwdc20/10041
발표자 : Matt Ricketson, Taylor Kelly
- 앱
- swiftui :
struct BookClubApp: App 사용하여 전체 앱을 빌드하십시오 - 앱은 데이터 종속성을 선언 할 수 있습니다
- Windows 플랫폼을 독립적으로 관리하기 위해
WindowGroup 사용하십시오. BOS에서 MacOS 및 iPados의 여러 창을 지원합니다. -
Settings 사용하여 무료로 환경 설정 창을 얻으십시오 • MacOS에서 사용할 수 있습니다. -
DocumentGroup 장면 유형을 사용하여 문서 개방, 저장 및 편집을 자동으로 처리합니다. • MacOS, iOS, iPados - 키보드 바로 가기를 포함한 메뉴 표시 줄에 추가 메뉴를 추가하려면
CommandMenu 명령을 사용하십시오. - Swiftui 앱을위한 새로운 다중 플랫폼 템플릿
-
LaunchScreen 정보. 실슬 런칭 키 스크린 화면 구성 • 스토리 보드의 간단한 대안
- 위젯
- iOS, iPados, MACOS는 Swiftui를 사용하여 독점적으로 구축되었습니다
-
struct YourWidget: Widget 및 var body: some WidgetConfiguration - Swiftui를 사용하여 WatchOS에 대한 맞춤형 합병증을 구축하십시오
- 목록 및 컬렉션
- List now receive outlines to quickly access the lists content • reduces the need for push/pop navigation patterns
- Lazy loading grid layouts (
Lazy[V|H]Stack ) to reduce memory footprint and preserve smooth scrolling for large amounts of data - View Builder for switch statements to show eg different image styles in a list of images
- Toolbars and Controls
-
.toolbar modifier for unified display of toolbars - Use
ToolbarItem(placement: .principal) to make an item prominent - Use
ToolbarItem(placement: .bottomBar) to place an item in the bottom bar - When using
Label("Title", systemImage: "sf.symbol.name") SwiftUI automatically display icon and/or text depending on where the label is displayed: toolbar, list, ... -
.keyboardShortcut modifier can now be used for additional controls like Button - New default focus support in tvOS
- New controls:
-
ProgressView("Downloading", value: progress) - horizontal bar -
ProgressView("Downloading", value: progress).progressViewStyle(CircularViewStyle()) - circular progress indicator -
ProgressView() - spinner -
Gauge to indicate the level of value • can contain value labels and min/max value labels
- New effects and styling
- New control center UI with beautiful transitions
-
.matchedGeometryEffect to provide smooth animations inside of a grid of UI elements -
.clipShape(ContainerRelativeShape()) to automatically apply a super views shape to the subview - custom fonts automatically scaled with dynamic type changes
- Custom accent color directly form the AssetCatalog on all platforms
- Many controls can now be tinted
- System integration
- New
Link control to display URLs in link style and open them with the default browser • also supports url schemes to open other apps -
@Environment(.openURL) private var openURL to programmatically open urls via openURL(url) in your views -
onDrag {} and onDrop {} to support drag & drop -
UniformTypeIdentifers framework for eg introspection of file types -
Sign in with Apple as first class component in SwiftUI • available on every platform - Other Frameworks: AuthenticationServices , AVKit , MapKit , SceneKit , SpriteKit
Build SwiftUI apps for tvOS
https://developer.apple.com/wwdc20/10042
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Build an Action Classifier with Create ML
https://developer.apple.com/wwdc20/10043
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Advances in diffable data sources
https://developer.apple.com/wwdc20/10045
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Create complications for Apple Watch
https://developer.apple.com/wwdc20/10046
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Enable encrypted DNS
https://developer.apple.com/wwdc20/10047
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Build complications in SwiftUI
https://developer.apple.com/wwdc20/10048
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Keep your complications up to date
https://developer.apple.com/wwdc20/10049
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Build with iOS pickers, menus and actions
https://developer.apple.com/wwdc20/10052
Presenters: Eric Dudiac, David Duncan
- UISlider and UIProgressView: More consistent across platforms now
- UIActivityIndicatorView: New simpler design, Use color API and modern styles, Updates "pull-to-refresh"
- UIPickerView: Updated styling
- UIPageControl
- New interactions (scrubbing, scrolling)
- Unlimited pages
- Optional custom indicator icons:
.preferredIndicatorImage(UIImage()) to set all or .setIndicatorImage(UIImage(), forPage: 0) for a specific image - Multiple styles:
.backgroundStyle = .prominent to highlight the background
- UIColorPickerViewController
- New view controller for picking colors
- Eyedropper, Favorites, Hex specification
- UIDatePicker
- New compact style to select date and time
- In-line style on iOS - great for iPad or if date picking is primary UI (matches modal presentation)
- Useful when you have space constraints
- Full modal calendar when selecting dates
- Keyboard for selecting times
- New macOS style (10.15.4)
- Compact, modal calendar presentation
- Supported in Catalyst apps
- Menus
- Provided on
UIControl - Directly supported by UIButton and UIBarButtonItem by
button.menu = UIMenu(...) - Triggered via long-press by default
- Show the menu by a simple tap by setting
button.showsMenuAsPrimaryAction = true and don't provide a primary action - Back buttons implement menus to quickly jump back in navigation stack
- Take action when the menu action is recognized, register for
UIControl.Event.menuActionTriggered -
UIDeferredMenuElement to async provide menu items -
UIContextMenuInteraction to modify or replace provided menu updateVisibleMenu(_ block menu: (UIMenu) -> UIMenu)- Use
UIContextMenuInteraction.rich to display previews and .compact to only show a menu
- New
UIBarButtonItem initializers init(systemItem:primaryAction:menu:) , init(title:image:primaryAction:menu:) - New
UIBarButtonItem .fixedSpace() and .flexibleSpace -
UIButton can finally be initialized using an UIAction : init(type:primaryAction:) -> native block based API -
UISegmentedControls can now finally be initialized using UIActions -> native block based API
Optimize the interface of your Mac Catalyst app
https://developer.apple.com/wwdc20/10056
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Identify trends with the Power and Performance API
https://developer.apple.com/wwdc20/10057
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Design high quality Siri media interactions
https://developer.apple.com/wwdc20/10060
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Expand your SiriKit Media Intents to more platforms
https://developer.apple.com/wwdc20/10061
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Background execution demystified
https://developer.apple.com/wwdc20/10063
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
What's new in SiriKit and Shortcuts
https://developer.apple.com/wwdc20/10068
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Evaluate and optimize voice interaction for your app
https://developer.apple.com/wwdc20/10071
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Empower your intents
https://developer.apple.com/wwdc20/10073
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Decipher and deal with common Siri errors
https://developer.apple.com/wwdc20/10074
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Diagnose performance issues with the Xcode Organizer
https://developer.apple.com/wwdc20/10076
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Eliminate animation hitches with XCTest
https://developer.apple.com/wwdc20/10077
Presenter: Tanuja Mohan
- Hitch: A frame appears on screen later than expected
- VSYNC: Time the screen swaps the frame onto the display
- Hitch time: Time in ms that a frame is late to display
- Hitch ratio: Hitch time in ms per second for a given duration
- Apple doesn't use frames per second (fps) since:
- 60 or 120 fps is not always the desired target
- Display may intentionally not be updated
- Target frame rate may intentionally be lower than possible
- Hitch ratio is always comparable across tests, following ratios are recommended:
- Good: < 5ms/s
- Warning: 5..10ms/s - users will start recognizing hitches
- Critical: >10ms/s
- Can be measured using
XCTestMetrics and unit tests or for production apps using MetricsKit and Xcode Organizer -
XCTOSSignpostMetric gives you the following when using an animation os_signpost interval:- 지속
- Total count of hitches
- Total duration of hitches
- Hitch time ratio
- Frame rate
- Frame count
- Specify an animation os_signpost interval by:
-
os_signpost(.animationBegin, log: logHandle, name: "performanceAnimationInterval") -
os_signpost(.end, log: logHandle, name: "performanceAnimationInterval")
- UIKit has pre-defined metrics:
-
XCTOSSignpostMetric.navigationTransitionMetric -
XCTOSSignpostMetric.customNavigationTransitionMetric -
XCTOSSignpostMetric.scrollDecelerationMetric -
XCTOSSignpostMetric.scrollDraggingMetric
- Application state can be reset to avoid tests influencing themselves:
XCTMeasureOptions().invocationOptions = [.manualStop] - Listen to a live testing session at 8:15
Why is my app getting killed?
https://developer.apple.com/wwdc20/10078
Presenter: Andy Aude
- Most common reasons why apps can be terminated in the background
- 충돌
- Segmentation fault
- Illegal instruction
- Asserts and uncaught exceptions
- CPU resource limit
- High sustained CPU load in background
- Energy Exception Report
- Xcode Organizer
-
MXCPUExceptionDiagnostic
- Reports contain call stack points out hotspots in code
- Consider moving work into
BGProcessingTask
- 지키는 개
- Long hang during key app transitions
-
application(_:didFinishLaunchingWithOptions:) -
applicationDidEnterBackground(_:) -
applicationWillEnterForeground(_:)
- These transitions have a time limit on the order of 20 seconds
- Terminations are disabled in Simulator and in the Debugger
- Eliminate deadlocks, infinite loops, synchronous work
- Report available via
MXCrashDiagnostic
- Memory limit exceeded
- App using too much memory
- Same limit for foreground and background
- Use Instruments and Memory Debugger
- Keep in mind older devices
- Memory pressure exit (jetsam)
- Not a bug with your app
- Most common termination
- System freeing up memory for active applications
- Reducing jetsame rate
- Aim for less than 50MB in background
- Upon background flush state to disk, clear out image views, drop caches
- Recovering from jetsame
- Save state upon entering background
- Adopt UIKit State Restoration
- User should not realize app was terminated
- Background task timeout
-
UIApplication.beginBackgroundTask(expirationHandler:) -
UIApplication.endBackgroundTask(_:) - Failure to end the task explicitly result in termination
- Counts exposed via
MXBackgroundExitData - Preventable
- Use the named variant of the UIKit API
beginBackgroundTask(withName:expirationHandler:) - Terminations do not occur in Debugger
- New console message in iOS 13.4 ( Background Task DatabaseTransaction was created over 30 seconds ago. In Applications running in the background, this creates a risk of termination. Remember to call
endBackgroundTask for your task in a timely manner to avoid this. )
- Expiration handler
- Implement an
expirationHandler - Call
endBackgroundTask(_:) inside the handler - Do not begin new work
- Do not rely on it exclusively
- Add telemetry at the start and end of each expiration handler
- Inspect
MXMetricPayload
- Check
backgroundTimeRemaining- Only start work if plenty of time remains
- Unsafe to begin tasks with < 5 seconds remaining
- Avoid leaking
UIBackgroundTaskIdentifier
- New MetricKit API (iOS 14)
-
MXBackgroundExitData shows how often these terminations happen providing counts of each termination type-
cumulativeBadAccessExitCount -
cumulativeIllegalInstructionExitCount -
cumulativeAbnormalExitCount -
cumulativeMemoryResourceLimitExitCount -
cumulativeMemoryPressureExitCount -
cumulativeSuspendedWithLockedFileExitCount -
cumulativeAppWatchdogExitCount -
cumulativeBackgroundTaskAssertionTimeoutExitCount -
cumulativeNormalExitCount
- Crash reporting via MetricKit
- Diagnostics on a per-device basis
- Ability to get crash info programmatically directly from the device
-
MXCrashDiagnostic- Stack trace
- 신호
- Exception code
- Termination reason
- Check out What's New in MetricKit to get detailed information
- How to improve multi-tasking experience?
- Identify and fix terminations
- Reduce memory usage
- Implement state restoration
What's new in MetricKit
https://developer.apple.com/wwdc20/10081
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Integrate your app with Wind Down
https://developer.apple.com/wwdc20/10083
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Feature your actions in the Shortcuts app
https://developer.apple.com/wwdc20/10084
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Design for intelligence: Apps, evolved
https://developer.apple.com/wwdc20/10086
Presenter: Mark Mikin
- This is one of those "why" sessions. Why we should build something?
- Intelligent System Experience
- The main idea is to be proactive
- Intelligence is how the OS works with the apps that people use every day to make the "every day" easier for people
- Intelligence is design (it should be viewed as a design practice)
- Living design . 저게 뭐에요?
- The core job of the designer is to help people accomplish something
- One of the key ways a designer can leverage this is by using elements familiar to the user
- People use a signifier or a symbol
- For example, "Share" button. In the case of iOS, almost everyone can easily recognize the "default" share symbol because it consistently gets used across a lot of apps
- Intelligence is a platform convention, it's in a static glyph or icon, like the share button. It's live
- Intelligence manifests itself by adapting to how the system, the platform, conforms to how people use their devices
- Intelligence is expected (people expect their devices and apps to be smart)
- Extensibility
- Intelligence is powered by an app through extensibility
- Apps have actually been evolving over time
- A lot of the technologies built by Apple that are foundational to the intelligence system (starting from App Extensions debuted at WWDC 2014 and ending with App Clips so far)
- It's built to help growing ecosystem of devices and apps
- Intelligence system is built from a foundation of respecting users privacy
- In the next sessions about system intelligence, Apple's team will try to cover it from a few different angles
Design for intelligence: Make friends with "The System"
https://developer.apple.com/wwdc20/10087
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Design for intelligence: Discover new opportunities
https://developer.apple.com/wwdc20/10088
Presenters: JP Lacerda
- 지능
- Goal to make your Apple products knowing/understanding you
- Achieve and Discover more, Less tedium, Fewer distraction
- System helps you through suggestions from Siri , Shortcuts , Suggestions , Widgets
- Siri / Shortcuts
- Helps you getting things done by a single tap or asking Siri
- Helps you setting up simple and complex operations ran, eg just by your voice
- View shortcuts through the new Siri suggestion Widget displayed just at the right time to you using the new smart stack and on-device intelligence
- Siri suggestions automatically appear at the right place and time, eg restaurant reservations are added automatically to the calendar
- Siri can remind you when it's time to leave right on your lock screen
- Get Siri suggestions in Maps to eg conveniently find your way to the Airport
- Privacy / Analytics
- Apple chose opt-in to enable analytics on your device to help improve their intelligence services
- 예
- 82% of all notification-based check-ins come from suggestions (data from some Airline apps)
- Apps are visible on average 5x more per day via lock screen, sharing suggestion, search or other entry points
- Give your app superpowers
- Think about which entry points are suitable for your app
- Consider how you can measure the impact of intelligence on your app
- Understand intelligence from the users perspective
Discover Core Image debugging techniques
https://developer.apple.com/wwdc20/10089
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Decode ProRes with AVFoundation and VideoToolbox
https://developer.apple.com/wwdc20/10090
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Write tests to fail
https://developer.apple.com/wwdc20/10091
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Build for the iPadOS pointer
https://developer.apple.com/wwdc20/10093
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Handle trackpad and mouse input
https://developer.apple.com/wwdc20/10094
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
The Push Notifications primer
https://developer.apple.com/wwdc20/10095
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Explore Packages and Projects with Xcode Playgrounds
https://developer.apple.com/wwdc20/10096
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Advances in UICollectionView
https://developer.apple.com/wwdc20/10097
Presenters: Steve Breen
- Diffable Data Source
- 요약
-
UICollectionView was first released in iOS 6 -
UICollectionView was built on the separation of concerns between the data, or the "what"; from the layout, the "where" content is being rendered. - For layout, an abstract class is
UICollectionViewLayout , and a concrete subclass is UICollectionViewFlowLayout . - For the presentation, there are
UICollectionViewCell and UICollectionReusableView . - In iOS 13, there are two new components for Data and Layout respectively with Diffable Data Source and Compositional Layout.
- Section snapshot [New in iOS 14]
- Allow data sources to be more composable into section-sized chunks of data.
- Allow modeling of hierarchical data, which is needed to support rendering outline-style UIs.
- Compositional Layout
- 요약
- Compositional Layout was introduced in iOS 13
- Allows us to build rich, complex layouts by composing smaller, easy-to-reason bits of layout together.
- Describes what the layout to look like instead of how the layout ought to work.
- Section-specific layouts to help you build more sophisticated UIs
- Support for orthogonal scrolling sections.
- Lists [New in iOS 14]
-
UITableView -like sections right in to any UICollectionView . - Rich with features you've come to expect from
UITableView , like swipe actions and many common cell layouts. - Easily mix and match Lists with other kinds of layout on a per-section basis.
- Concrete
UICollectionViewListCell , header and footer support - New Sidebar appearance we see in many iPadOS system apps.
- Modern Cells
- Cell registrations
- Simple, reusable way to set up a cell from a view model.
- Eliminate the extra step of registering a cell class or nib to associate it with a reuse identifier.
- Use a generic registration type which incorporates a configuration closure for setting up a new cell from a view model.
- Cell content configurations.
- Standardized layouts for cells similar to what is seen in
UITableView standard cell types. - Can be used with any cell, or even a generic UIView.
- Background configurations.
- Similar to content configurations but apply to any cell's background with the ability to adjust properties such as color, border styles and more.
What's new in Universal Links
https://developer.apple.com/wwdc20/10098
Presenter: Christopher Linn
- Universal Links
- HTTPS URLs that represent your content both on the web and in your app
- Allow to open your app instead of browser
- Enable by adding an entitlement to your app and a JSON file to your web server - creates secure association between both
- Custom URL schemes not recommended anymore - switch as soon as possible
- Support for watchOS
- Same functionalities like on iOS, tvOS and macOS
- Apply entitlement to your WatchKit extension - not your WatchKit App
- Use
[WKExtensionDelegate.handle(_ userActivity: NSUserActivity) -> Void](https://developer.apple.com/documentation/watchkit/wkextensiondelegate/2798966-handle) to handle Universal Links - Use
[WKExtension.shared().openSystemURL(url)](https://developer.apple.com/documentation/watchkit/wkextension/1628224-opensystemurl) to open Universal Links in other apps - Different API on iOS (UIKit) and macOS (AppKit)
- Universal Links in SwiftUI
- Now it is possible to handle Universal Links equally on all platforms
- Handle Universal Links using
.onOpenURL { url in /* ... */ } - Open Universal Links in other apps using
@Environment (.openURL) var openURL; let url = /* ... */; openURL(url)
- Enhanced Pattern Matching
-
* matches zero or more characters greedily -
? matches any one character -
*? matches at least one character -
"components": [{ "/": "/sourdough/?*", "caseSensitive": false }] for case-insensitive pattern matching (macOS Catalina 10.15.5 and iOS 13.5) -
"components": [{ "/": "/中國哲學書電子化計劃/?*", "percentEncoded": false }] for Unicode pattern matching (macOS Big Sur and iOS 14) -
"defaults": { "percentEncoded": false, "caseSensitive": false } to specify defaults for all components (macOS Big Sur and iOS 14)- Apply
defaults to "details" (includes app IDs and components) or only to "components" to match all elements of the respective arrays
- Substitution Variables
- Named lists of substrings to match against
- Names can contain anything but
$ , ( , ) - Names are always case sensitive in patterns
- Values can contain
? and * but no other substitution variables - Values are case-sensitive by default
- Available today in macOS Catalina 10.15.6 and iOS 13.5
- Predefined Substitution Variables
-
$(alpha)* - match upper and lower case letters -
$(upper),$(lower)* - match either upper or lower case letters -
$(alnum)* - match upper and lower case letters including digits -
$(digit),$(xdigit)* - match either digits or hexadecimal digits -
$(region)** - match every ISO region code defined by Foundation: Locale.isoRegionCodes -
$(lang)** - match every ISO language code defined by Foundation: Locale.isoLanguageCodes - Use
"exclude": true to exclude specific patterns - Substitution variables can be used to form different combinations of patterns, eg show different menus for different countries
- 예
{
"appLinks" : {
"substitutionVariables" : {
"food" : [ " burrito " , " sushi " ],
"Canadian food" : [ " burrito " , " poutine " , " tête-de-violon " ]
},
"details" : [{
"appIDs" : [ " ABCDEF.com..example.restaurant " ],
"components" : [
{ "/" : " $(lang)_CA/$(Canadian food)/ " , "percentEncoded" : false }
{ "/" : " $(lang)_CA/$(food)/ " , "exclude" : true }
{ "/" : " $(lang)_$(region)/$(food)/ " }
]
}]
}
}
- Universal Links Workflow
- After download of an app the system checks its entitlements to see if it needs any app-association files, and downloads them
- App association files can now be downloaded in parallel by connecting to an Apple CDN instead of opening one connection per downloaded app
- CDN is dedicated to associated domains
- CDN uses single HTTP/2 connection for all associated domains on a device
- CDN Reduces load on your server
- CDN routes devices to a known-good, known-fast connection
- Alternate Modes for internal domains not reachable from an Apple CDN
- Managed Mode when distributing within your organization (see What's New in Managing Apple Devices (WWDC20))
- System trusted root certificate
- MDN admin must opt-in
- Works using any profile
- Developer Mode when building your app
- Use any SSL certificate
- User must opt-in from
iOS Settings > Developer > Associated Domains Development or for macOS using the command swcutil developer-mode -e true - Only works using a development profile
- Server path for all modes:
https://example.com/.well-known/apple-app-site-association - Specify domains for different modes in the entitlements as
<string>applinks:testing.example.com?mode=developer</string> (or ?mode=managed or ?mode=developer+managed ) in an array under the key com.apple.developer.associated-domains
Explore the Action & Vision app
https://developer.apple.com/wwdc20/10099
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Keynote ★
https://developer.apple.com/wwdc20/101/
- App Library
- Automatically created at the end of your app pages on the Home Screen
- Makes it easier than ever to get to your apps
- Widgets on Home Screen
- Richer UI - more possibilities
- Different sizes to choose one that best fits your needs
- Droppable on the home screen
- Widget gallery to explore all widgets
- SmartStack as intelligent assistant which enables you to scroll through your widgets
- Picture in Picture on iPhone
- Swipe to the side, out of the screen, and audio keeps playing
- Video keeps playing when switching apps
- Siri
- Got smarter and has a new interface which doesn't block your UI anymore
- Can now send audio messages using the messages app - completely hands free
- Translate as new app of offline conversation translate
- Conversation mode when switching to landscape mode in the app
- 메시지
- Pinning messages to the top of the screen
- Memoji gets hundreds of new options to customize your avatar, including masts, fist-pumps and more
- Group conversations got some ❤️ by adding inline replies and most-active member widget
- Maps
- More countries like UK, Ireland and Canada
- It gets easier to find places you love and how you get there in an ecological way
- Maps offers Guides that help you discover great new places
- Brand new cycling option to reduce your carbon footprint
- EV-Routing option to optimize your route for electric cars - eg by selecting routes with charging station on your way
- CarPlay
- New wallpaper option
- New categories for CarPlay apps: Parking, EV-Charging, and Quick-Food ordering
- Car Key API - first supported by BMW - enable open/close/start your car
- App Clips as small, fast parts of an app, designed for speed
- A way to discover what the App Store has to offer
- Launchable from the web, by NFC tags, QR codes or the brand new Apple designed tags
- Needs to be smaller than 10 MB
- Use Sign in With Apple to provide the most seamless app experience
- Use Apply Pay to allow quick payments
- Option to download the full app
- iPadOS
- Photos app gets an all new side bar - new way to navigate and organize your photos
- Incoming calls become unobtrusive using notification style UI (available for all apps: WhatsApp, Skype, ...) • available for iOS too
- New searching experience
- 사과 연필
- Scribble lets you hand-write in any text field. iOS converts your writing then to text
- Smart Selection lets you select single words / characters you've written using your pencil using iOS text recognition features
- DataDetectors are used to automatically detect eg phone numbers, email addresses
- AirPods
- are now able to automatically switch to new incoming audio sources
- Spatial Audio for AirPods Pro (AirPods Motion API) to emulate movie theatre experience using AirPods gyroscope to sync the sound to your head position/orientation
- watchOS 7
- Configure your own watch faces styled by your current living style
- Watch faces can now be shared on Websites or via the usual sharing features of watchOS
- Workout app adds dance, cooldown, functional training and more workouts plus it is renamed to Fitness
- Sleep Tracking is a new app that helps you to get to bed at time using
Wind Down which dims all distractions (also available in iPhone) - Handwashing detection to make sure you wash as long as you're supposed to (20 seconds shown in demo)
- Privacy Improvements
- Location only share rough location
- 카메라 ...
- Tracking Control require apps to ask before tracking
- App Privacy makes data tracked by developers visible to the users before they download the app
- 집
- Alliance among different manufacturers to make smart home devices even better
- Adaptive lighting to auto-adjust color temperature throughout the day
- Cameras get activity zones, richer notifications
- Face recognition extends to Home Pod
- Camera content can be displayed on TV via your Apple TV
- 애플 TV
- Picture in Picture
- Better Airplay in full 4K
- Apple TV+ already on over 1 billion devices
- Foundation as newest production only available on Apple TV+
- macOS Big Sur
- use of a lot of translucency
- Design refresh for all system apps
- New side and compact, space efficient toolbars
- Control center now on the mac
- Notification Center
- Notification grouping
- iOS widgets also available on the mac
- Messages with new search, photo picker, messages effects, pin conversations, inline replies and more
- Maps with indoor-maps, favorites, ETA from friends and all of it implemented using Catalyst
- Safari with 50% faster page loading, Privacy Report via toolbar button, Web Extensions API, built-in translation
- 스코틀랜드 사람
- Processor-transition to Apple Silicon - Apple's own processor line - bye bye Intel
- Universal 2 is the new universal binary type that contains binaries compiled for both architectures
- Rosetta 2 lets existing app run on new architectures from day one by making them compatible at installation time
- Supports iPhone and iPad apps directly
Meet Watch Face Sharing
https://developer.apple.com/wwdc20/10100
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Design great widgets
https://developer.apple.com/wwdc20/10103
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Adopt the new look of macOS
https://developer.apple.com/wwdc20/10104
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Build for iPad
https://developer.apple.com/wwdc20/10105
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Meet Scribble for iPad
https://developer.apple.com/wwdc20/10106
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
What's new in PencilKit
https://developer.apple.com/wwdc20/10107
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Support hardware keyboards in your app
https://developer.apple.com/wwdc20/10109
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Support local network privacy in your app
https://developer.apple.com/wwdc20/10110
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Boost performance and security with modern networking
https://developer.apple.com/wwdc20/10111
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Build local push connectivity for restricted networks
https://developer.apple.com/wwdc20/10113
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
iPad and iPhone apps on Apple Silicon Macs
https://developer.apple.com/wwdc20/10114
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
AutoFill everywhere
https://developer.apple.com/wwdc20/10115
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
VoiceOver efficiency with custom rotors
https://developer.apple.com/wwdc20/10116
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Accessibility design for Mac Catalyst
https://developer.apple.com/wwdc20/10117
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Create app clips for other businesses
https://developer.apple.com/wwdc20/10118
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Introduction to SwiftUI
https://developer.apple.com/wwdc20/10119
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Streamline your app clip
https://developer.apple.com/wwdc20/10120
Presenters: Yongjun Zhang, Luming Yin
- 모범 사례
- Focus on essential tasks
- Limit the features. Reserve complex features for your app
- Require all assets for initial experience
- Do not include splash screens
- Avoid requiring people to sign up before finishing their task
- Only ask for location and notification permissions if needed (more on this below)
- Make sure your App Clip has the same name and icon as your app
- Put shared assets in a shared asset catalog
- 입증
- Support Sign in with Apple
- Use
ASWebAuthenticationSession for other federated login - Offer username and password login for existing users
- Offer "Sign In With Apple" upgrade in the app
- For privacy reasons, and because App Clips are ephemeral, some contents are not available to App Clips, such as HealthKit info
- App Clips can request permission to use Bluetooth, the camera, and microphone
- Streamlining Transactions
- 2 new types of ephemeral permissions: Location and Notification
- Allows App Clips to check if the user is within a region, without prompting for location permission
- Add
NSAppClipRequestLocationConfirmation with value true in your Info.plist to enable this - Supports checking a region with a radius of up to 500 meters
- Allows App Clips to send notifications for up to 8 hours after each launch, without prompting for notification permission .
- Add
NSAppClipRequestEphemeralUserNotification with value true in your Info.plist to enable this - Check the authorization status in the
NotificationSettings , under the new .ephemeral status
- Users can explicitly disable these permissions via App Clip settings panel
- App Clips can prompt the user for full Location and Notifications access, although discouraged
- Strongly suggest using ApplePay
- Strongly suggest using "Sign In With Apple"
- Use
AuthenticationServices API to sign your users in without showing a login screen (assuming they have already previously signed up in your website for instance)
- Transition users to your app
- iOS suggests downloading your app from App Clip experiences, banners and App Clip settings
- You can embed
StoreKit SKOverlay in a view- Suggestion: display this overlay only after the user finishes their task, eg after payment
- Transfer data on device with a secure App Group
- Only accessible between your App Clip and your app
- Once user downloads the app, the App Group will be transferred to the app after the App Clip is deleted
- Migrate your "Sign In With Apple" session from your App Clip by persisting the user ID in the secure App Group. Use
ASAuthorizationAppleIDProvider to verify the user's session without prompting UI
Discover AppleSeed for IT and Managed Software Updates
https://developer.apple.com/wwdc20/10138
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Leverage enterprise identity and authentication
https://developer.apple.com/wwdc20/10139
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Build location-aware enterprise apps
https://developer.apple.com/wwdc20/10140
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Build scalable enterprise app suites
https://developer.apple.com/wwdc20/10142
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
What's new in Mac Catalyst
https://developer.apple.com/wwdc20/10143
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Design for Game Center
https://developer.apple.com/wwdc20/10145
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Configure and link your app clips
https://developer.apple.com/wwdc20/10146/
Presenters: Ada Chan, Luming Yin
- Intro
- App Clips provide entry points to your users to experience your app with minimal friction.
- Use deep-linked navigation to present the App Clip
- User Quest
- User is in a smoothie shop. They see an NFC tag and tap it using the phone.
- An app clip shows up on the phone's lockscreen with summarized detail about that smoothie.
- User taps "open" and a single screen of your app shows up.
- User can then proceed to the payment via Apple Pay.
- 활성화
- Tapping NFC tags or scanning QR codes - they're just deep links after all (a URL)
- Maps and Siri Nearby Suggestions (for registered businesses)
- Smart app banner in your website (shown in Safari and Messages)
- Apple App Clip codes will be introduced later this year (it's a prettified QR code)
- If the user already has the your app installed, following an App Clip link will open the full app instead.
- 설정
- Configure web server and App Clip for link handling
- Web Server: Update the apple-app-site-association file
- App Clip: Add associated domains entitlement and handle NSUserActivity
- Configure App Clip default and advanced experiences on App Store Connect
- Layout requirements:
- Title: 18 chars limit
- Subtitle: 43 chars limit
- 영상:
- Size: 3000 x 2000px
- Aspect Ratio: 3:2
- Format: png/jpg
- Transparency: No
- 모범 사례
- URL mapping is based on most specific prefix match against registered App Clip experience URLs
- Your App Clip must be able to launch using an exact registered URL. 예를 들어:
- App registers https://bikesrental.com/rent instead of https://website.com/rent?bikeID=2
- When receiving https://website.com/rent?bikeID=2, it should be able to deliver the https://website.com/rent App Clip
- App is responsible for parsing the remaining arguments and presenting the specific bike with ID 2
- You can also register a more specific URL if you want to provide a different and more specific App Clip experience for it
- Configure the Smart App Banner to open App Clip (add this if the content of your web page can be delivered as a better and more streamlined app experience)
- Add/update your website's HTML to add the Smart App Banner meta tag
- 시험
- Specify an App Clip URL under the
_XCAppClipURL environment variable to launch App Clip from Xcode - TestFlight - new App Clips section in App Store Connect
Distribute binary frameworks as Swift packages
https://developer.apple.com/wwdc20/10147
Presenters: Boris Buegling
- Xcode 11
- Introduction of Swift Packages to distribute libraries as source code
- Introduction of XCFrameworks to distribute closed-source binary frameworks and libraries
- Xcode 12 adds support for binary dependencies
- Binary Dependencies (XCFrameworks)
- Used to distribute closed-source frameworks, static and dynamic libraries
- Contain a single module
- Easily addable via the
Xcode > File > Swift Packages > Add Package Dependency - Has sub directories corresponding to platform and target environment, each containing a framework
- Declare dependency in your Package.swift using
.package(url: "https://github.com/owner/package", from: "1.0.0")
- Distribute Binary Frameworks as a Swift Package
- New target type
.binaryTarget(name: "Emoji", url: https://example.com/Emoji/Emoji-1.0.0.xcframework.zip, checksum: "6d98....") - Binary targets can be offered to clients just like regular targets
- Binary Targets
- Use XCFrameworks
- Only supported on Apple platforms
- HTTPS or path based - paths can point to files inside your package
- Name corresponds to the module name
- Use semantic versioning
- Create your own Binary Dependency
- Create
File > New Swift Package - Replace template-added targets and add a binary target
- Compute the checksum using
swift package compute-checksum Emoji-1.0.0.xcframework.zip - Set
Build Libraries for Distribution build setting - Archive each variant
-
xcodebuild -create-xcframework - See 2019 session "Binary frameworks in Swift" or read the session notes which is way quicker
- Tradeoffs of Binary Dependencies
- Harder to debug since source code is missing
- You won't be able to compile for your specific platform if not included by the author
Inspect, modify, and construct PencilKit drawings
https://developer.apple.com/wwdc20/10148
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Structure your app for SwiftUI previews
https://developer.apple.com/wwdc20/10149
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
What's new in CareKit
https://developer.apple.com/wwdc20/10151
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Use model deployment and security with Core ML
https://developer.apple.com/wwdc20/10152
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Get models on device using Core ML Converters
https://developer.apple.com/wwdc20/10153
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Control training in Create ML with Swift
https://developer.apple.com/wwdc20/10156
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Deliver a better HLS audio experience
https://developer.apple.com/wwdc20/10158
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Build an Endpoint Security app
https://developer.apple.com/wwdc20/10159
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Formatters: Make data human-friendly
https://developer.apple.com/wwdc20/10160
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Design for location privacy
https://developer.apple.com/wwdc20/10162
Presenter: Rachel Needle
- Today people share precise location data
- In iOS 14, Core Location allowing users to control and share their approximate location
- All kinds of apps will be impacted by this change (even Apple's apps)
- How to adapt the app to work without precise location?
- Prioritize user control
- Give everyone control over their location data they share and respect their preferences
- Don't require precise location
- Replace precise data with approximate where possible
- Identify where else you use precise location and remove non-essential uses of precise location
- Build trust through transparency
- Communicate with people about what data your app uses and how that data is used
- Make status easy to access
- Allow users to change their decision
- Offer proportional value
- Only ask for precise location when you really need it
- Request precise location in response to user action
- Position the request close to the value it provides
- Consider checking out these two sessions to get detailed information
- Build trust through better privacy
- What's new in location
Advancements in the Objective-C runtime
https://developer.apple.com/wwdc20/10163
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
XCTSkip your tests
https://developer.apple.com/wwdc20/10164
Presenters: Wil Addario-Turner
- Tests can pass or fail, or with
XCTSkip , be marked with an explicit "skip" result. - In Xcode 11.4,
XCTSkip , XCTSkipIf and XCTSkipUnless were introduced to allow skipping tests at runtime. - Call
throw XCTSkip("message") and the test will be skipped. -
XCTSkipIf skips when the expression is true. XCTSkipUnless skips when the expression is false. - Check the results from the test navigator and the test report with the line where the skip occurred, along with a reason explaining why.
Embrace Swift type inference
https://developer.apple.com/wwdc20/10165
Presenter: Holly Borla
- Leveraging type inference
- A type can be inferred by the compiler given the context surrounding a variable or function
- SwiftUI code relies on type inference for reusable views
- A demo is presented showing a SwiftUI component being built using generics
- How type inference works in compiler
- Think of type inference as a puzzle
- It resolves the puzzle by filling in the missing pieces using clues from the source code
- Solving one puzzle can give the compiler more clues on how to solve other puzzles
- Type inference errors
- If a puzzle can't be solved, there's an error in the source code
- During type inference, the compiler will record information about errors in source code
- Compiler uses heuristics to attempt to fix errors in order to continue type inference
- Once type inference is done, the compiler will provide actionable error messages based on collected information (some errors might have auto-fixes)
- Swift 5.3 and Xcode 12 improved error handling a lot, showing more meaningful and reliable error messages
- Using Swift and Xcode to fix compile errors
- The compiler will leave breadcrumbs about what the compiler was doing when it found an error
- This can help you connect the dots between the error you're seeing on the editor and other files in your project
- Hold ⌥ + ⇧ on an error breadcrumb and drag it to the right of the source editor, to open the source editor and the breadcrumbs details side by side
Safely manage pointers in Swift
https://developer.apple.com/wwdc20/10167
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Explore logging in Swift
https://developer.apple.com/wwdc20/10168
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Swift packages: Resources and localization
https://developer.apple.com/wwdc20/10169
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
What's new in Swift
https://developer.apple.com/wwdc20/10170
Presenters: Ted Kremenek, Kyle Macomber
- Swift Releases
- Xcode 11.4 - Swift 5.2
- Xcode 12 (beta) - Swift 5.3
- Runtime Performance
- Code Size
- Code size is the part of the app that represents the machine code representation of the app's logic
- Swift 5.3 is below 1.5 times the code size of Objective-C version (based on app that ships with iOS)
- Size difference is inevitable because of Swift safety features
- SwiftUI app binary code size can be reduced by 40% (based on MoviesSwiftUI app)
- Memory Layout
- Comparing models with three properties in Obj-C (
NSUUID , NSString and float ) and Swift ( UUID , String , Float ) - In Obj-C, object variables are just pointers which then hold a pointer to their properties
- Swift's use of value types avoid the need to access values via pointers (UUID and Strings)
- Significant memory benefit because it is allocated directly within array storage (contiguous block of memory)
- Heap memory use comparison: 20kB in Swift 5.1 vs 35kB in Obj-C (400 models in array)
- Swift's Standard Library now is below Foundation in the stack which means it can be used to develop low-level frameworks for Objective-C frameworks where previously C has to be used!
- Diagnostics
- New diagnostics in the Swift compiler result in more precise and actionable errors
- Additional notes in error messages (SwiftUI as an example)
- More info on swift.org
- Code completion
- Much better code completion thanks to improvements in SourceKit
- Code completion for dictionary literals, ternary expressions and more dynamic features like key paths
- Code completion in Xcode 12.0 is 15x faster compared to Xcode 11.5
- Code Indentation
- Improved indentation formatting in chained methods calls, tuples, multiline
if and guards - Improved indentation in SwiftUI as well
- 디버깅
- Debugger now displays the reason for Swift runtime failure traps
- Cross-Platform Support
- Multiple platform support
- Apple Platforms
- Ubuntu 16.04, 18.04, 20.04
- Centos 8
- Amazon Linux 2
- Windows (coming soon)
- Swift on AWS Lambda
- Runtime is open-source and is available on GitHub
- 언어
- Swift Evolution website
- Multiple trailing closure syntax SE-0279
- It's important to set the correct base name of the method that will indicate the first trailing closure that its label will be dropped
- Key Path Expressions as Functions SE-0249
-
@main : Type-Based Program Entry Points SE-0281- The standardized way to delegate a program's entry point
- Increased availability of implicit self in @escaping closures when reference cycles are unlikely to occur SE-0269
- Now it's possible to add
self to the capture list - In Swift 5.3, if self is a structure it can be omitted entirely from the closure
- Multi-Pattern Catch Clauses SE-0276
- Enum Enhancements
-
Comparable conformance is now synthesized automatically SE-0266 - Enum cases as protocol witnesses SE-0280
- Embedded DSL Enhancements
- Builder closures
- Swift 5.3 introduces pattern matching statements like
if let and switch - Builder inference (
@SceneBuilder is not longer needed)
- 도서관
-
Float16 SE-0277- Half-width floating point type
- Performance gains but low precision and small range
- Apple Archive
- Modular archive format
- Fast compression
- Idiomatic Swift API
- Swift System
- Idiomatic Swift interface to system calls
- Low-level currency types
- Wraps Darwin APIs
- OSLog
- Unified logging API
- Faster and more expressive (formatting options)
- Packages
- Swift Numerics
- Support for complex numbers and basic math functions
- Swift ArgumentParser
- Swift Standard Library Preview
- Includes features that have not been included in the release yet
What's new in watchOS design
https://developer.apple.com/wwdc20/10171
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Design great app clips
https://developer.apple.com/wwdc20/10172
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Get the most out of Sign in with Apple
https://developer.apple.com/wwdc20/10173
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Explore app clips
https://developer.apple.com/wwdc20/10174
Presenters: James Savage, Luming Yin
- What is an App Clip?
- App Clip Experience URL is required to run App Clips which are parts of your app
- On-demand app experiences
- App Clip Experiences
- App Clip URLs are similar to Universal Links
- Registered using App Store Connect
- Surfaced through user actions via NFC / QR codes / links in Safari or other apps / Apple App Clip codes combine the ease of NFC and visual codes so they can be tapped or scanned
- New App Clip Target in Xcode
- Contains all assets
- Needs to be submitted along with the app for review
- It gets downloaded separately if the app is not installed on user's device
- Should be as small as possible for quick downloads (less than 10MB but with enough assets to load UI quickly)
- Focused user flows - one at a time
- 데모
- Ordering smoothies
- New App Clip target embedded in the application
- Name and bundle ID for App Clip added
- It can build and run with boilerplate code right away
- Add code and resources
-
NutritionFacts dependency added - Create new Assets Catalog as shared assets
- Drag App Icon, Colors and other image assets required for app clip into the shared assets catalog
- Add the required model and view files to App Clip target
- Let go of unwanted Swift files like navigation
- Conditionally compile out the references to files not added to App Clip
- Build Settings > Swift Compiler custom flags > Active Compilation Conditions > Add APPCLIP condition for required schemes.
- Use #if !APPCLIP to compile out unwanted references in Swift code
- Write code for App Clip
- Add required models and views to the new AppClip
- Include existing views in the App Clip's content view
- Technology Overview
- App Clips are built using same UI components as an app
- When launched, it receives
NSUserActivity- Use the URL to identify the type of experience to be handled
- Unlike extensions, App Clip can make use of all iOS SDK APIs
- Note: Access to sensitive data is limited
- Always check if data is available
- New location confirmation API helps get the location quickly without requesting full access
- New API for migrating data from App Clip to main app using shared data container once installed
- App Clip and its local storage will be deleted after period of inactivity
- Can not be launched via Universal Links or custom URL schemes
- Can not include bundle extensions like content blockers
- Device states and transitions
- User scans QR code
- iOS locates, downloads and runs the App Clip
- If the App Clip is not revisited for a while, the App Clip and its data gets deleted
- Treat App Clip data as cache; which can be deleted
- If the App Clip is visited frequently, its lifespan will be extended and data may never be cleared
- When user downloads your app, iOS will automatically migrate the data container and the permissions that were already granted by the user
- iOS still deletes the App Clip and its container after copying the data container to the app
- Other technologies
- Apple Pay
- Notifications
- SwiftUI
-
SKOverlay / AppStoreOverlayModifier (refer to What's new with in-app purchase session) -
ASAuthorizationController for sign in or sign up
The details of UI typography
https://developer.apple.com/wwdc20/10175
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Master Picture in Picture on tvOS
https://developer.apple.com/wwdc20/10176
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
What's new in HealthKit
https://developer.apple.com/wwdc20/10182
Presenter: Netra Kenkarey
- 증상
- Developers can now track symptoms in HealthKit, read and write symptom samples
- HealthKit attempted to cover and track a wide range of symptoms (shortness of breath, sleep changes, appetite changes, fever, headache, etc.)
- There are 13 symptom data types in HealthKit
- Electrocardiogram (ECG)
- ECG samples will be available for reading in the latest version of iOS and watchOS
- An ECG sample can be read as an
HKElectrocardiogram (it represents a waveform as a series of voltage values) - ECG sample has important properties that describe the measurements
- classification (
HKElectrocardiogram.Classification )- Apple Watch will give the result of the recording in the form of a classification
- The classification is divided into 2 types
- Sinus Rhythm (heart is beating in a uniform pattern)
- Atrial fibrillation (form of irregular rhythm, user should probably go see their doctor)
- If Apple Watch is unable to determine the ECG result, either due to a low or a high heart rate or due to any other reason, the result is considered inconclusive
- symptomStatus (
HKElectrocardiogram.SymptomsStatus )- It tells if the user associated a symptom with this ECG (eg heartburn, tightness in the chest)
- The symptom experienced can be recorded along with the ECG
- averageHeartRage (
HKQuantity? ) - samplingFrequence (
HKQuantity? ) - numberOfVoltageMeasurements (
Int )- It refers to the individual voltage measurements that make up an ECG sample
-
HKElectrocardiogramQuery- To retrieve the individual measurements run the
HKElectrocardiogramQuery - Fetch the ECG samples with any of the HealthKit queries and then initialize the
HKElectrocardiogramQuery with the fetched sample - When this query is executed on the HealthStore, you get the individual voltage measurements back in the ECG and the data handler
- 유동성
- New set of mobility types (available for reading and writing on the latest iOS and watchOS)
- Walking speed and step length
- Walking assymetry and double support percentage
- Stair ascent and descent speed
- Six-minute walk test distance
Synchronize health data with HealthKit
https://developer.apple.com/wwdc20/10184
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Visually edit SwiftUI views
https://developer.apple.com/wwdc20/10185
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Discover WKWebView enhancements
https://developer.apple.com/wwdc20/10188
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Secure your app: threat modeling and anti-patterns
https://developer.apple.com/wwdc20/10189
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Create quick interactions with Shortcuts on watchOS
https://developer.apple.com/wwdc20/10190
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Add configuration and intelligence to your widgets
https://developer.apple.com/wwdc20/10194
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Broaden your reach with Siri Event Suggestions
https://developer.apple.com/wwdc20/10197
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Platform State of the Union ★
https://developer.apple.com/wwdc20/102/
- Some new features: AirPods Motion API , SwiftPM resources , New Catalyst Controls , ARKit 4 , Widgets in SwiftUI , Depth API , TestFlight 100 Testers , SwiftUI Lifecycle , Catalyst Native Screen Resolution , Complications in SwiftUI , Xcode StoreKit Testing , HomePod Music Services , App Clips , New SwiftUI Controls , Xcode Tabs , ...
- Users can make your app the default app used for email and set a default web browser
- Developers can bring existing web-browser extensions to Safari using a new command line tool
- FindMy can now leverage all iPhones out there to locate your devices, even if they are not connected to the internet (applicable to all kinds of objects)
- Mac transition to Apple Silicon - Apple's own processor line - brings more security, better performance, longer battery life and amazing graphics
- 장점
- Cached cloud content can be kept up to date for days, even if your mac goes to sleep
- Higher quality, hardware-supported 4:4:4 encoder for eg better image quality when connecting your Mac via SideCar
- Best-In-Class platform security
- Apple provides a Developer Transition Kit
- Mac mini enclosure + A12Z SoC
- 16GB memory, 512GB SSD
- macOS Big Sur Developer Beta + Xcode
- First Macs will appear by end of the year
- Universal 2 create universal apps that run on both Apple Silicon and older architectures
- Porting to Apple Silicon takes only a few days, even for grown projects. As a result, all Apple system apps are already converted in macOS Big Sur
- Rosetta 2 lets existing app run on new architectures from day one by making them compatible at installation time
- Supports iPhone and iPad apps directly
- iOS/iPad Apps natively on Mac
- Apps will run natively on the Mac
- Apps will automatically support features like resizing, Dark Mode, scrolling, multi-window, native share sheets, ...
- Apple plans to make iOS/iPadOS apps available on the App Store for macs running with Apple Silicon
- macOS Big Sur - macOS 11
- Rounded dock ?
- Control Center for mac
- New translucent look for notification center
- Refined layout for menus of the menu bar
- New sheet presentation - parent window is dimmed
- Completely re-designed toolbars with extending search fields and images provided by SF-Symbols
- App-specific accent color
- macOS Catalyst
- macOS-specific implementation of iOS API's
- Native resolution support
- Messages re-written in Catalyst
- SwiftPlaygrounds will support multiple windows
- iPadOS
- New sidebars can now expand from two-column layout to three-column layout - even available in portrait mode
- Recommended to use side bars instead of tab bars
- New inline emoji picker - also for custom apps
- New color picker UI - easy to adopt
- New Depth APIs give you access to precise distance info captured by the LiDAR scanner on iPad
- Dramatic improvement of people inclusion and motion detection - objects can be placed in front or behind real objects in the world
- 사과 연필
- New handwriting improvements will work in your apps without any additional work
- Hand-writing for any UITextField
- Automatic support for Scribble which converts any hand-written text to typed text
- Stroke API gives access to the strokes as the user draws
- Smart Selection lets you select single words / characters you've written using your pencil and iOS text recognition features
- iOS 14
- 위젯
- New widgets take UX to a whole new level
- Users can move them to the home screen
- Widgets are packed as SwiftUI archives which are optimized for performance
- Are rendered by the system at the right time, when the user needs them
- Can be smartly stacked to consume less space and let the user flip through them
- Stack automatically moves the right widget to the top at just the right time
- Configurable in the Widget Gallery
- App Clips
- Small part of the app which is light/fast and easy to discover
- Can use Apple Pay and Sign in With Apple to provide a seamless UX
- Easily discoverable in a variety of ways, like other apps or places in the real world via new Apple-designed (QR-like) codes which are basically NFC tags
- Introduce users to what your app offers
- 기타. 새로운 기능
- Cycling directions, Guides and EV routing in Maps
- Translate app
- Messages inline replies
- Car keys
- App Library
- On device dictation
- watchOS 7
- Xcode is now able to preview watchOS complications
- SwiftUI complications
- Watch-face sharing via any sharing capabilities, eg Messages, social media, etc
- Xcode 12
- Cleaner, more expressive UI
- Navigators realized using the new Side Bar
- Any kind of content is now openable in document tab
- Navigate through nested calls in compiler failure messages
- StoreKit test environment lets you unit test In-App Purchase and Subscriptions
- New StoreKit transaction manager shows details during debugging
- Faster code completion with simplified presentation
- SwiftUI
- All SwiftUI apps will continue to compile without additional changes (Apple added no breaking changes - just extensions)
- Lazy statement makes large collections of views way less memory hungry and makes scrolling snappy again
- Now contains app-structure APIs for all Apple platforms, eg
@main , @SceneBuilder , Settings , ...
Design for intelligence: Meet people where they are
https://developer.apple.com/wwdc20/10200
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Create great enterprise apps: A chat with Box's Aaron Levie
https://developer.apple.com/wwdc20/10204
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Design with iOS pickers, menus and actions
https://developer.apple.com/wwdc20/10205
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Design for iPad
https://developer.apple.com/wwdc20/10206
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
SF Symbols 2
https://developer.apple.com/wwdc20/10207
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
What's new in Core NFC
https://developer.apple.com/wwdc20/10209
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Modernize PCI and SCSI drivers with DriverKit
https://developer.apple.com/wwdc20/10210
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Port your Mac app to Apple Silicon
https://developer.apple.com/wwdc20/10214
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
What's new in ResearchKit
https://developer.apple.com/wwdc20/10216
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Explore numerical computing in Swift
https://developer.apple.com/wwdc20/10217
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Build localization-friendly layouts using Xcode
https://developer.apple.com/wwdc20/10219
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Handle interruptions and alerts in UI tests
https://developer.apple.com/wwdc20/10220
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Get your test results faster
https://developer.apple.com/wwdc20/10221
Presenters: Sean Olszewski
- The Testing Feedback Loop
- Write tests > run tests > Interpret result >if sufficient confidence [ > Next task] else go back to write tests
- Short feedback loops is important because that means you get results from your tests faster, you can ship features to your users faster.
- Real world example: Result bundle from that CI job, which never finished. Due to dead lock, poorly chosen timeout.
- Execution Time Allowance [NEW in XCode 12]
- When enabled, Xcode enforces a limit on the amount of time each individual test can take. When a test exceeds this limit, Xcode will first capture spin dump, then kill the test that hung, restart the test runner, so that the rest of the suite can execute.
- A spin dump shows you which functions each thread is spending the most time in. It's also possible to manually capture spin dump from Terminal using the spin dump command or from within Activity Monitor.
- By default, each test gets 10 minutes. If you need to a specific test or test class, you can use the
executionTimeAllowance API to special case a particular test or subclass. For values under 60 seconds, they'll be rounded up to 60 seconds, the nearest whole minute. - Prevent a test requests unlimited time by enforcing a maximum allowance.
- You can customize the default time allowance and a maximum allowance either via a setting in the Test Plan or through an Xcodebuild option.
- Use
XCTest 's performance APIs to automate testing for regressions in the performance. Use Instruments to identify what parts of your code are slow,
- Parallel Distributed Testing
- Xcode build will distribute tests to each run destination by class. Each device runs a single test class at a time.
- If you're testing logic that is device or OS specific, this can lead to unexpected failures or skipped tests.
Create custom apps for employees
https://developer.apple.com/wwdc20/10222
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Deploy Apple devices using zero-touch
https://developer.apple.com/wwdc20/10223
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Meet Audio Workgroups
https://developer.apple.com/wwdc20/10224
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Improve stream authoring with HLS Tools
https://developer.apple.com/wwdc20/10225
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Record stereo audio with AVAudioSession
https://developer.apple.com/wwdc20/10226
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
What's new in Low-Latency HLS
https://developer.apple.com/wwdc20/10228
Presenter: Roger Pantos
- Comes out of beta this year
- Available in iOS 14, tvOS 14, watchOS 7 and this year's macOS
- Includes support for bit-rate switching, FairPlay Streaming, fMP4 CMAF, ad insertion, captioning
- Native app support, no entitlement necessary
- draft-pantos-hls-rfc8216bis07 and later now includes LL-HLS
- Includes Low-Latency Server Configuration Profile
- Includes CDN tune-in algorithm
- Updated informative articles on developer.apple.com
- Protocol Extension for Low-Latency HLS
- HLS Authoring Specification for Apple Devices
- Significant changes and improvements to the protocol
- Reducing segment delay
- Approach described last year using HTTP/2 Push to send segment with Playlist is not compatible with some delivery models
- Replaced Push with Blocking Preload Hints
- Client requests next part in advance
- Server will hold on to the request until it can send it
- Also triggers global CDN cache fill
- Discover HLS Blocking Preload Hints session for more information
- Other improvements
- Eliminated HLS report
- All Rendition Reports are provided unconditionally
- Defined EXT-X-DATERANGE handling for Playlist Delta Updates
- Optimize Live Streams with HLS Playlist Delta Updates session for more detailed information
- Added signaling of gaps in Parts and Rendition Reports
- New attributes: GAP=YES in EXT-X-PART and EXTT-X-RENDITION-REPORT
- This allowing clients to deal better with encoded outages in Low-Latency streams
- Low-Latency HLS Tools changes
- Reference implementation now produces fMP4/CMAF
- Added self-contained LL-HLS origin written in Go
- Incorporated Low-Latency HLS tools into the regular HLS tools package
- Find out more in Improve Stream Authoring with HLS Tools session
- Summary of important changes
- Replaced HTTP/2 Push with Preloading Hinting
- Simplified Delivery Directives
- Generate CMAF in reference tools
- Everything is included in the current HLS spec
Discover HLS Blocking Preload Hints
https://developer.apple.com/wwdc20/10229
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Optimize live streams with HLS Playlist Delta Updates
https://developer.apple.com/wwdc20/10230
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Reduce latency with HLS Blocking Playlist Reload
https://developer.apple.com/wwdc20/10231
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Adapt ad insertion to Low-Latency HLS
https://developer.apple.com/wwdc20/10232
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
The artist's AR toolkit
https://developer.apple.com/wwdc20/10601
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Harness Apple GPUs with Metal
https://developer.apple.com/wwdc20/10602
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Optimize Metal apps and games with GPU counters
https://developer.apple.com/wwdc20/10603
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Shop online with AR Quick Look
https://developer.apple.com/wwdc20/10604
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Gain insights into your Metal app with Xcode 12
https://developer.apple.com/wwdc20/10605
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Explore ARKit 4
https://developer.apple.com/wwdc20/10611
Presenters: Quinton Petty, Praveen Gowda
- Location Anchors
- Geo-referenced AR Content
- Uses "visual localization" from Maps
- No processing in the cloud
- No images sent back to Apple
- Pinned to a geo-location
- 3 main parts
-
ARGeoTrackingConfiguration -
ARGeoAnchor -
ARGeotrackingStatus
- Device support A12 Bionic or later + GPS support
- Requires availability checks for both device and location
-
ARGeotrackingStatus-
State -
StateReason -
accuracy : low, medium, high
- Methods for converting between local and latitude / longitude positions via
getGeoLocation(forPoint:) - Recommended to point towards buildings / static objects
- May struggle in wide open spaces (eg a field)
- Locations currently available: San Francisco Bay Area, Los Angeles, New York, Chicago and Miami
- Sample: Tracking Geographic Locations in AR
- Scene Geometry
- Topological map of environment
- Semantic classification
- Allowing for:
- Based upon the Depth API
- Depth API
- Provides a dense depth image
- Use
sceneDepth under frame semantics - Runs at 60Hz, on every ARFrame
-
depthMap and confidenceMap provided - Depth map provided as
CVPixelBuffer -
ARConfidenceLevel : high, medium or low - Available on LiDAR devices
- Object Placement
- Improvements in Raycasting
- Quicker placement with LiDAR sensor
- Allows for placing on a white wall
- Raycasting is recommend over hit-testing
- 2 types of query:
- Face Tracking
- Support added for non-TrueDepth iPhones
- Requires A12 processor or later
- iPhone SE (2020)
What's new in RealityKit
https://developer.apple.com/wwdc20/10612
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
What's new in USD
https://developer.apple.com/wwdc20/10613
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Advancements in Game Controllers
https://developer.apple.com/wwdc20/10614
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Build GPU binaries with Metal
https://developer.apple.com/wwdc20/10615
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Debug GPU-side errors in Metal
https://developer.apple.com/wwdc20/10616
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Bring keyboard and mouse gaming to iPad
https://developer.apple.com/wwdc20/10617
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Tap into Game Center: Dashboard, Access Point, and Profile
https://developer.apple.com/wwdc20/10618
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Tap into Game Center: Leaderboards, Achievements, and Multiplayer
https://developer.apple.com/wwdc20/10619
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Support performance-intensive apps and games
https://developer.apple.com/wwdc20/10621
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Bring your Metal app to Apple Silicon Macs
https://developer.apple.com/wwdc20/10631
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Optimize Metal Performance for Apple Silicon Macs
https://developer.apple.com/wwdc20/10632
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Capture and stream apps on the Mac with ReplayKit
https://developer.apple.com/wwdc20/10633
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Discover search suggestions for Apple TV
https://developer.apple.com/wwdc20/10634
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Accelerate your app with CarPlay
https://developer.apple.com/wwdc20/10635
Presenters: Jonathan Hersh, Allen Langmaier
- New CarPlay App Possibilites
- EV charging
- 주차
- Quick food ordering
- Audio Apps
- Playable content template will be deprecated
- New audio template
- New Templates
- Communication Apps
-
CPMessageListItem - Contact template
- List template
- Tab bar template
- Now playing template
- Point of interest template
- Information template
- CarPlay Design Principles
- Design for the driver
- Streamline interactions
- Reuse app configuration
- Launch first in CarPlay
- CarPlay apps must adapt
UIScene
- Updates to development
- Dynamic updates to list elements
-
CPListItem -
CPListImageRowItem
What's new in streaming audio for Apple Watch
https://developer.apple.com/wwdc20/10636
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
What's new in managing Apple devices
https://developer.apple.com/wwdc20/10639
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Design for the iPadOS pointer
https://developer.apple.com/wwdc20/10640
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Handle the Limited Photos Library in your app
https://developer.apple.com/wwdc20/10641
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Build Image and Video Style Transfer models in Create ML
https://developer.apple.com/wwdc20/10642
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Build a SwiftUI view in Swift Playgrounds
https://developer.apple.com/wwdc20/10643
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Use Swift on AWS Lambda with Xcode
https://developer.apple.com/wwdc20/10644
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Support multiple users in your tvOS app
https://developer.apple.com/wwdc20/10645
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
What's new in Web Inspector
https://developer.apple.com/wwdc20/10646
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Become a Simulator expert
https://developer.apple.com/wwdc20/10647
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Unsafe Swift
https://developer.apple.com/wwdc20/10648
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Add custom views and modifiers to the Xcode Library
https://developer.apple.com/wwdc20/10649
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Sync a Core Data store with the CloudKit public database
https://developer.apple.com/wwdc20/10650
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
What's new in App Store Connect
https://developer.apple.com/wwdc20/10651
Presenter: Daniel Miao
- App Clips
- 베타 테스트
- Safari App Clip banner appears when a website is associated with an App Clip. Tapping brings up the
App Clip Card . Tapping the card opens the app itself. - App Clips can be invoked from Safari, Messages, Maps, NFC Tags, QR Code or Location
- Invocation URL from the website is used what to show on the App Clip Card and is passed to it upon tap of the banner
- App Clip is packaged with the app and delivered to ASC
- In the new
App Clip Invocation Section on ASC you can provide titles and along with invocation URLs used in the App Clip - Title-URL combinations are selectable in TestFlight and take you directly to the App Clip by passing the invocation URL (without showing the App Clip Card)
- App Clip Card Meta Data
- Header image, App Clip title, App Clip subtitle, call to action button
- Enter the default meta data on the apps version page on ASC
- Associate your website with the App Clip by including the meta-data tag
<meta name="apple-itunes-app", content:"app-id=123456", app-clip-bundle-id:=org.appname.clip> - Use Advanced App Clip Experiences to get customized meta data and association with eg location in Maps
- Advanced assistant on your app's version page on ASC to setup advanced experience
- You can select to promote
Your own business or Other Businesses (eg Yelp)
- You have to specify an Apple App Site Association file (like with universal links) that has to match the Associated Domains Entitlement in your app
- Manage / Debug your website association on ASC
- Game Center
- Challenges other players to get achievement
- Recurring Leaderboards to collect scores for a certain period of time
- Reset after that time
- Configurable on ASC
- Family Sharing for Subscriptions
- Subscriptions can be shared among the family form fall 2020
- Auto-renewable subscriptions
- Non-consumables
- Automatic sharing for new customers
- Existing subscribers can opt-in
- Family-shared in-app purchase can be enabled on the ASC-In-App-Purchase section of your app
- Once turned on it cannot be tuned off again
- App Store Connect API
- Over 200 new endpoints will be added
- Add
App Meta Data API- Create new version
- Set app pricing
- Edit app and version metadata
- Associate build with version
- Submit app for review
- Add
Power and Performance Metrics and Diagnostics API
Meet the new Photos picker
https://developer.apple.com/wwdc20/10652
Presenters: Tobias Conradi, Justin Jia
- PHPicker
- Direct access to user's photo gallery
- Supports zoom in, multi-select, review
- Types are filterable
- Privacy built in by default
- It won't prompt the user for access
- It runs out of the app's process
- Separate process rendered on top of the app
- Only what user selects is passed back to the app
- 구현
-
PHPickerConfiguration (which can include type filters) is passed to PHPickerViewController , which has delegates to handle responses -
PHPickerConfiguration- Selection limit
- Image / Video type
- Initialize
PHPickerViewController by using the configuration - Set delegate and implement protocol functions
-
didFinishPicking -
NSItemProvider - representation of the item, async, requires error handling
- 데모
- Photo preview app
-
UIImageView with placeholder image - Plus button for image selection
- Present the new picker
- Create
PHPickerConfiguration with images filter and selection limit (set to zero for unlimited selection) - Initialize the
PHPickerViewController with this configuration - Present the new controller after setting delegate and following the protocol
- Implement
didFinishPicking- Dismiss the picker first
- Retrieve the image via item provider and use main queue to update your UI
- Use
IndexingIterator<[NSItemProvider]> to save array of item providers - Add touch event to iterate through the array of picked images
- 메모
-
AssetsLibrary will go away; switch to PhotoKit -
UIImagePickerController is to be deprecated and replaced with PHPickerViewController
Detect Body and Hand Pose with Vision
https://developer.apple.com/wwdc20/10653
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Create Swift Playgrounds content for iPad and Mac
https://developer.apple.com/wwdc20/10654
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Discover how to download and play HLS offline
https://developer.apple.com/wwdc20/10655
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Beyond counting steps
https://developer.apple.com/wwdc20/10656
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Make apps smarter with Natural Language
https://developer.apple.com/wwdc20/10657
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
What's new in education
https://developer.apple.com/wwdc20/10658
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Introducing StoreKit Testing in Xcode
https://developer.apple.com/wwdc20/10659
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
What's new in location
https://developer.apple.com/wwdc20/10660
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
What's new with in-app purchase
https://developer.apple.com/wwdc20/10661
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
What's new in Wallet and Apple Pay
https://developer.apple.com/wwdc20/10662
Presenter: Stacey Abrams
- Use Apple Pay to get into public transit and acadamic buildings
- API Enhancements
- PKSecureElementPass replaces PKPaymentPass fom now
- New Apple Pay Button types:
.reload , .addMoney , .topUp , .order , .rent , .support , .contribute , .tip - See how to declare a Apple Pay Button on a website at 2:16
- PKPaymentButton style
.automatic automatically switches between light and dark mode
- Apple Pay in App Clips
- Could revolutionize everydays payment experience when you can eg just tap an NFC tag on a gas station to pay your gas
- Guest checkouts using Apple Pay do not require to setup an account anymore and if it is necessary seamless Sign in with Apple is used.
- Enhancing Apple Pay experience across platforms
- Merchants can receive redacted billing address
- Lower risk of chargebacks for merchnts
- Price transparency leads to higher conversion rates
- Apple Pay for Catalyst
- Brings great payment experiences to more mac apps
- Brings the newly announced APIs, including the Apple Pay button, to the mac
- Improvements in WKWebView will allow more pages to allow Apple Pay transactions now
- Contacts Formatting Improvements to prevent invalid shipping addresses
- Street and city fields contain vaild characters only
- State is a two letter code
- US: Zip code is 5 or 9 digit code
- ISO country code is upper case two letter code
- Improved experience when correcting information
- Raise formatting errors earlier in the payment flow
- Users can correct information prior to authentication
- Error APIs improved and aligned to new formatting options
- Only rolles out in some Australia, Canada, UK, US for now
- Adding cards to Apple Pay
- Issuer Extensions to improve discoverability from within the Wallet app - needs installatioon of an Issuer app
- App requires non-UI extension
- Extension principal object must subclass
PKIssuerProvisioningExtensionHandler - Requires non-UI extension entitlement
- Added support for a UI extension
- Needs to handle re-authentications if required by conforming principal object to
PKIssuerProvisioningExtensionAuthorizationProviding - Requires UI extension entitlement
What's new for web developers
https://developer.apple.com/wwdc20/10663
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Getting started with HealthKit
https://developer.apple.com/wwdc20/10664
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Meet Safari Web Extensions
https://developer.apple.com/wwdc20/10665
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
One-tap account security upgrades
https://developer.apple.com/wwdc20/10666
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Custom app distribution with Apple Business Manager
https://developer.apple.com/wwdc20/10667
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Meet Nearby Interaction
https://developer.apple.com/wwdc20/10668
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Handling FHIR without getting burned
https://developer.apple.com/wwdc20/10669
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Meet Face ID and Touch ID for the web
https://developer.apple.com/wwdc20/10670
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Architecting for subscriptions
https://developer.apple.com/wwdc20/10671
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
What's new in ClassKit
https://developer.apple.com/wwdc20/10672
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Explore Computer Vision APIs
https://developer.apple.com/wwdc20/10673
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Build trust through better privacy
https://developer.apple.com/wwdc20/10676
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Build customized ML models with the Metal Performance Shaders Graph
https://developer.apple.com/wwdc20/10677
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Refine Objective-C frameworks for Swift
https://developer.apple.com/wwdc20/10680
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Explore the new system architecture of Apple Silicon Macs
https://developer.apple.com/wwdc20/10686
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md
Triage test failures with XCTIssue
https://developer.apple.com/wwdc20/10687
Presenters: Example Guy, Another Person
TO-DO! You can contribute to this session, please see CONTRIBUTING.md