The Apple Pay experience (카드 등록, 인증 등의 단계가 Apple Pay에서는 한 번에 해결, Indigogo도 250% conversion rate 증가. 따라서 Apple Pay 적용해야 한다.)
What’s new with Apple Pay (카드 등록 안되어 있으면 결제 눌렀을 때, 자동으로 카드등록 화면 띄움. 기존 code는 손댈 필요 없음. Error 가 풍부해져서 좀 더 자세한 error를 표시할 수 있음.(결제 전에 주소 등이 format에 맞는지 안맞는지 확인) )
What’s new with Wallet (sharingProhibited key가 추가되서 공유 제한 가능. NFC passes 가 추가됨. NFC로 정보 공유 가능)
Basics (CNPotalAddresss from a CLPlacemark, 지역 정보 얻어 올때, Localized string으로 얻어옴. Address dictionary methods are deprecated )
Heading vs Course (Navigation 동작을 좀 더 정확하게 함. 실내에서도 정확성 올라감 (건물 내부 지도 상세화에 따른 Update로 보임) )
Continous Background Location (Watch에서 위치 정보 동의 바로 가능. Watch background에서도 위치 정보 수집 가능)
Authorization Modes (21% Always, 79% WhenInUse. 위치정보 동의 Pop에 WhenInUse, Always, Don’t Allow 3개 동시 노출 가능하나 WhenInUse를 먼저 띄우고 → 필요할 때 Always를 띄워야 User가 수긍한다. 처음부터 Always요구하면 취소할 수 있다)
Location Usage Indicator (화면 왼쪽 상단, Location icon 상태 표시 rule이 달라짐. 사용자들에게 위치 정보 수집에 대한 오해를 줄이기 위해)
Photos, CoreNFC, Microphone-WatchOS, MusicKit 관련 변경
SafariViewController Cookie 관련 기능 추가
DeviceCheck (각 상태값을 Apple 이 알려줌. VenderID등 여러 가지 조합으로 많은 개발자 들이 Device Check를 하려고 하니 아예 Apple 제공하기로 함. 아직 부족해 보이긴 하나 Google Analytics 같은 곳에서는 눈여겨 볼만한 기능)
Accelerate 👍 - vDSP_vsmul() 이 For 문으로 Float 곱하는 것 보다 훨씬 빠름 - vDSP_vclip() 이 For 문으로 min(max()) Clip 하는 것 보다 훨씬 빠름 - cblas_sgemm() 이 For 문으로 Matrix 연산하는 것 보다 훨씬 빠름
Compression (LZ4, LZMA, ZLIB, LZFSE 간단 설명 및 Tips)
Basic Neural Network Subroutines (High-performance kernels for Machine Learning, BNNS 관련 설명)
The sims Module - Vector, Matrix 계산을 빠르게 하기 위한 것. Graphics 관련 작업할 때 많이 사용할 듯. - Small(fixed-size) vectors and matrices - Simplified vector programming - Lingua franca for vectors and matrices in the SDK
Parallelism and concurrency - DispatchQueue.concurrentPerform(100) { i in } 으로 동시에 실행. ObjC 용 DISPATCH_APPLY_AUTO 이용. 사용할 때 bubble 생기지 않게 count 수 잘 정해라 👍
- Lock Contention 설명, Instruments 를 이용한 Multi thread 비효율 구간 잡는 방법 소개
Introduction - Health care, Fitness, Toy with playground
- Build-in Profiles (Apple Notification Center Service, Apple Media Service, MIDI over Bluetooth Low Energy, iBeacon, Current Time Service, HID Over GATT)
Enhanced reliability - Backgrounded App (Background Modes에서 Uses Bluetooth LE accessories, Acts as a Bluetooth LE accessory 활성화)
- CBCentralManager restoration
- Reading Characteristics as a Central Central operations can continue when your app is not running (Scan for new devices with services, Connect to an already known device) Peripheral operations can continue when your app is not running (Publish local services, Advertise service UUID)
- State Preservation and Restoration [ NEW ! ] Try to ask for as few system resources as possible Background activities will be stopped if User force quits the app or User disables Bluetooth Write With out response (canSendWriteWithoutResponse, peripheralIsReady 참고)
- iOS + macOS (Fore / Back ground apps, Central and Peripheral, 15ms minimum connection interval, State Preservation and Restoration on iOS)
- tvOS (Foreground Only, Central role only, Limited to 2 simultaneous connections, 30ms minimum connection interval, Peripherals disconnected when app is moved to the background)
- watchOS (Access dictated by system runtime policies, Central role only, Limited to 2 simultaneous connections, 30ms minimum connection interval, Peripherals disconnected when app is suspended, Supported on Apple Watch Series 2)
- L2CAP Channels (Firmware update 같은 많은 Data 전송에 적합. Socket 통신 비슷, Sample code 필수 참조 )👍 Bluetooth SIG Protocol underlying all communication Logical Link Control and Adaptation Protocol Stream between two devices Introduced for LE in Bluetooth Core Spec 4.1
Best Practice - Follow the Bluetooth Accessory Design Guidelines for Apple Products (수년간 시행착오를 잘 정리해놨다.)
- Use Existing Profiles and Services (웬만하면 자체 구현하지말아라 )
- Service Discovery Speed ( 속도 올리는데 필수 참고 팁) Use as few services/ characteristics as possible Group services by UUID size Support GATT Caching Use “Service Changed”
- New Accessory Recommendations Use the newest chipset / Bluetooth standard available 4.2, 5.0 are backward compatible Follow these best practices
Overview ( Accelerometer, Gyroscope, Magnetometer, Altimeter의 모든 정보를 조합해서 CoreMotion framework이 처리 )
Authorization - Altimeter, Pedometer, MotionActivityManager, SensorRecoder는 Sensitive, Sensitive 정보들은 한 번 팝업 뜰것임. - CMAuthorizationStatus (notDetermined, restricted, denied, authorized)
Historical Accelerometer (50Hz로 3일 까지 기록 가능, 요청은 36시간 까지, iPhone 7, 7+ 추가됨, 딱 필요한 기간만 최소한으로 가져와라! 배터리를 위해)
DeviceMotion - 하나의 Sensor 만으로는 Tilt 인지 아닌지 판단이 어려워서 여러 Sensor 정보를 바탕으로 현재 상태를 판별 - Reference Frames - xArbitraryZVertical(tip, tilt, gesture) - xArbitraryCorrectedZVertical (aming) - xMagneticNorthZVertical & xTrueNorthZVertical (Star gazing, Augmented Reality) - Best practice (Check for availability, Reference frame choice is key)