iOS/iOS

[WWDC2022] Platforms State of the Union

HarryJeonn 2022. 6. 9. 19:10

Why ?


  • WWDC에서 나오는 기술들을 당장 사용해보긴 어렵지만 애플이 어떤 방향으로 움직이는지 정리해두면 좋을 것 같아서 쓴다.
  • 또 WWDC를 보면서 새로운 기능들을 미리 보는 것 만으로도 도움이 된다고 생각한다.
  • 간단하게 WWDC에서 소개된 내용을 정리해보자.

Xcode Cloud 유료 제공


애플에서 Xcode Cloud를 유료로 제공한다.

2023년 말까지 개발자 멤버에게 무료로 제공해준다. 써보고싶다..

오늘은 대충 알아만보고 직접 사용해보고 기록을 남겨놓으면 좋을 것 같다.

Xcode Cloud ?

  • 애플에서 제공하는 CI/CD 시스템이다.
  • Git을 Source control로 사용하며, App Store Connect, TestFlight와 연동한다.
  • 코드를 자동으로 빌드하고 테스트한다.
  • 이슈가 생기기전에 먼저 알아채고 Xcode Cloud가 알려준다.
  • 새 버전의 앱을 팀 멤버, 테스터들에게 TestFlight로 배포한다.
  • 병렬테스트로 코딩을 진행하는동안 테스트 작업을 빠르게 완료한다.

Swift


정규 표현식

  • 문자열에서 보고자 하는 패턴을 서술하게 해주고 어떤 정보를 추출하려는지를 지정하게 해준다.
let expression = /(\\w+)\\s\\s+(\\S+)\\s\\s+((?:(?!\\s\\s).)*)\\s\\s+(.*)/
  • 새로운 정규 표현식 리터럴
  • 언어 내에 직접 탑재되어 Swift 컴파일러가 정확성을 점검하게 해주며 정규 표현식으로 정보를 추출할 때 Swift 타입 시스템의 힘을 해방하고 유니코드 지원을 최대한 활용한다.
import RegexBuilder

let order = "Order from <Betsy's Bakery>, type: maple frosted, count in dozen: 3"

let regax = /Order from <(.*)>, type: (.*), count in dozen: ([0-9]+)/

order.firstMatch(of: regex)
// Order from <Betsy's Bakery>, type: maple frosted, count in dozen: 3
  • Playground에서 regax에서 설정한 부분만 하이라이트해서 표시된다고 한다.
let log = "0     FoodTruckKit     0x000000018a0e5d88 Donut.bake() + 144"

let logRegax = Regex {
	OneOrMore(.whitespace)
	Capture {
		OneOrMore {
			CharacterClass(
				.anyOf("_."),
				("a"..."z"),
				("A"..."Z")
			)
		}
	}
	OneOrMore(.whitespace)
	Capture {
		"0x"
		OneOrMore(.hexDigit)
	}
}

log.firstMatch(of: logRegex)
// 0     FoodTruckKit     0x000000018a0e5d88 Donut.bake() + 144
  • RegexBuilder → 더 복잡한 스트링에서 추출하기 위할 때 사용된다.

Generic 개선

  • 타입에 의존하지 않는 범용 코드를 작성할 때 사용한다.
  • 중복을 피하고 코드를 유연하게 작성할 수 있다.
// 기존 Generic 코드
func playSongs<Playlist>(in playlist: Playlist) where Playlist: Collection, Playlist.Element == Song

// 개선된 Generic 코드
func playSongs(in playlist: some Collection<Song>) { ... }

// 기존 Generic 변수
var playlists: [?] // 의 형식

// 개선된 Generic 변수
var playlists: [any Collection<Song>]

SwiftUI


Navigation API

NavagationStack(path: $navPath) {
	MusicLibraryView()
		.navigationDestination(for: Album.self) { AlbumDetail($0) }
		.navigationDestination(for: Artist.self) { ArtistDetail($0) }
}
  • 앱의 실행단계 설정, 사이즈 클래스 간의 전환 관리, 딥 링크 응답 처럼 중요한 역할도 한다.

Swift Charts

Chard(data) { element in
		BarMark(
			x: .value("Product", element.product),
			y: .value("Sales", element.sales)
		)
}
  • 고도로 사용자화 가능한 차트 프레임워크
  • SwiftUI 기반
  • 더 쉽게 풍성한 시각효과를 만들게 해준다.
  • 선언형 구문
  • 차트에 애니메이션을 넣고 시각적, 감각적으로 적절하게 꾸밀 수 있다.

Grid API

  • 다수의 행과 단에 걸쳐 잘 정렬된 일련의 뷰를 배치하기 쉬워졌다.

Custom Layout API

  • 원하는 어떤 레이아웃도 제작할 수 있는 유연성을 제공한다.

SwiftUI + UIKit

  • UIKit 프로젝트에서 CollectionView에 SwiftUI를 연결할 수 있게 한다.

잠금화면 대규모 업데이트


WidgetKit

  • iOS, WatchOS 모두 사용
  • 플랫폼의 차이를 자동으로 관리
    • 적절한 시스템 폰트를 디폴트로 사용한다.
    • 위젯 색상을 조정해 가독성을 높인다.
  • 워치의 컴플리케이션, 아이폰의 잠금화면 위젯 만들기가 편리하다.

Live Activites

  • 잠금화면을 통해 실시간으로 데이터 업데이트 할 수 있다.
    • ex) 경기 최신 스코어, 차량 호출 현황, 운동 등
  • WidgetKit, SwiftUI 만듬
  • iOS 16부터 사용가능

그 외 새 기능


Messages Collaboration API

  • Identifier를 제공해 수신인이 링크를 누르면 곧바로 접속 권한을 줄 수 있다.
  • 개인정보를 보호하면서 권한을 제공한다.
    • Message ID와 App ID는 제공되지 않는다.
  • 하나의 오브젝트만 있으면 사용자에게 이미 익숙한 두 가지 편리한 방식으로 협업을 개시할 수 있다.
    • 공유 시트
    • 드래그 앤 드롭
  • 앱이 Messgae와 Face Time에 사용 될 수 있다.

App Intents

  • Siri와 단축어를 통해 자동으로 사용할 수 있게 해준다.
  • 현재는 직접 단축어를 추가해야 사용 가능 → App Intents로 바로 사용 가능
  • iOS 10의 SiriKit 다음단계라고 한다.
  • Siri를 시용한 자동화를 사용하려는 프로젝트에 추천한다.

PassKeys

  • 인증 절차를 간편하게 한다.
  • 비밀번호의 최대 보안 문제점을 해결한다.
  • FaceID, TouchID 사용

MapKit

  • 3D 지원
  • 디테일한 도로 반영
  • iOS 16이상
  • Look Around 지원
  • Apple Map Server API (RESTful) 지원
    • Geocode (좌표 → 주소 변환)
    • Reverse Geocode (주소 → 좌표 변환)
    • Search (검색)
    • Estimated Time of Arrival (예상 도착 시간)

WeatherKit

  • 악천후 알림, 풍부한 디테일 뷰, 10일간의 시간 단위 기온, 강수량 예보 등
  • 매월 50만건 API 호출 수를 Apple Developer Program에 포함

VisionKit

  • 2개의 API 추가로 VisionKit 확장
  • Live Text API
    • 사용자들이 사진이나 정지된 영상 안의 텍스트 및 QR코드와 상호작용을 할 수 있다.
  • Data Scanner API
    • 라이브 카메라 피드 분석도 가능하다.
    • 텍스트 및 바코드 인식을 크게 단순화 해준다.
  • 9개국어 감지
    • 영어, 중국어, 프랑스어, 이탈리아어, 독일어, 스페인어, 포르투갈어, 일본어, 한국어
      • 올해부터는 한국어도 추가됐다.. 넘 기쁘다..!

Watch


CallKit

  • WatchOS 9
  • 새로운 보이스오버 IP 백그라운드 모드가 추가 됐다.
  • 앱이 음성통화를 애플워치에서 직접 걸 수 있게 해준다.

Reference


https://developer.apple.com/videos/play/wwdc2022/102/

 

Platforms State of the Union - WWDC22 - Videos - Apple Developer

Take a deeper dive into the latest tools, technologies, and advances across Apple platforms to help you create even better apps.

developer.apple.com

기술 테스트 영상 (정대리 추천영상)

https://www.youtube.com/watch?v=thT00pe9epg