Programming/Mac & iOS

[iOS] What's new in iOS 10

MB Kyle KWON 2016. 6. 27. 09:55

SiriKit

    앱 내부에서 득정 도메인에 대한 서비스를 제공할 수 있다. Intent와 Intent UI 를 활용하여 서비스를 제공가능하다. 제공 가능한 도메인은 아래와 같다.


- 오디오/비디오 콜

- 메시지

- 결제 관련

- 사진 검색

- 예약 관리

- 운동 일정 관리


관련 키워드 : SiriKit, Intents framework, Intents UI framework




Proactive Suggestions

    iOS9에서 Spotlight와 Safri search results를 통해 앱의 동작이나 Depp link등을 제공할 수 있었다. iOS10에서는 사용자가 앱에서 어떤 동작들을 사용할 수 있는지 정보 제공이 가능하다. 키보드의 Quick type이나 맵, app switcher, Siri interactions, 잠금화면에서 등 다양하다. Core Spotlight, MapKit, UIKit, Media Player framework등에서 제공하는 API나 NSUserActivity, Web Markup 등으로 해당 기능을 제공할 수 있다. 


    iOS10에서 NSUserActivity에는 MapItem 프로퍼티가 추가되어 위치 정보도 지원가능하다. 이를 이용해서 여행 앱에서 근처 호텔의 리뷰를 보여주는 등의 서비스를 제공할 수 있다. 


   UIKit에서 UITextInputTraits에서 제공하는 textContentType을 활용하여 input method에서 앱의 정보와 관련된 문장을 제안할 수 있다.


    MPPlayableContentManager를 이용해서 잠금화면에서 앨범이나 재생 가능한 미디어를 사용자에게 보여줄 수 있다. 


Web markup에 관한 정보는 Scheme.org에서 찾아 볼 수 있다.




Messages App

    iOS10에서 메시지 전송, 스티커, 미디어 파일, 상호작용 메시지 등에 관한 App Extension을 제공할 수 있다. 상호 작용 메시지의 경우, 상대방의 응답에 대한 업데이트 메시지도 구현이 가능하다. App Exntension은 2가지의 타입으로 구현이 가능하다.


- Messages 컨텐츠에 스티커 팩을 제공한다.

- 스티커 브라우저, 스티커, 텍스트, 상호작용 메시지의 생성, 전송, 업데이트 등을 커스텀 UI로 제공 가능하다.




User Notifications

    특정 시간, 위치 등의 조건에 맞춰 Local Notification을 발신할 수 있다. Notification을 수신했을 때, Notification을 몰래 수정할 수 도 있다. UserNotificationUI.framework를 활용하여 기기에서 표시되는 Notification의 UI도 구현이 가능하다.




Speech Recognition

    iOS10에서 지속적인 음성을 인식하고 Text로 변환이 가능한 새로운 API를 소개한다. Speech.framwork를 이용하여 음성을 실시간으로 인식할 수 있다. 아래와 같이 이용하면 된다.


let recognizer = SFSpeechRecognizer()

let request = SFSpeechURLRecognitionRequest(url: audioFileURL)

recognizer?.recognitionTask(with: request, resultHandler: { (result, error) in

     print (result?.bestTranscription.formattedString)
})



    음성인식의 정확도를 위해 데이터가 일시적으로 Apple 서버에 저장되기 때무에 사용자의 권한을 요청하게 된다. 이를 위해서 info.plist에 NSSpeechRecognitionUsageDescription key를 설정해야한다.




Wide Color

    대부분의 그래픽 프레임워크(Core Graphics, Core Image, Metal, AVFoundation 등)에서 확장된 픽셀 포맷과 색공간을 지원한다. 새로운 sRGB 색 공간을 지원한다. 별도의 성능 저하 없이 sRGB 색들을 섞고 표현할 수 있다.




True Tone Display

    True Tone Display에서 주변의 빛 센서들을 이용하여 빛 조건과 주변 환경에 맞추어 자동으로 색을 조절한다. 이외에 info.pilist의 UIWihtePointAdaptiveStyle이라는 key를 이용해 화이트 밸런스의 정도를 조절할 수 있다.




Widget Enhancements

    iOS10에서 잠금화면을 위한 새로운 디자인이 소개됬다. 위젯의 UI가 양질을 보장하기 위해 widgetPrimaryVibrancyEffect나 widgetSecondaryVibrancyEffect를 지정해줘야 한다.추가로 현재 Widget은 얼마나 많은 정보를 표시할것인가를 사용자가 선택하도록 하는데, NCWidgetDisplayMode를 통해 설정 구현할 수 있다.




Apple Pay Enhancements




Security and Privacy Enhacements

    iOS10에서 사용자의 정보를 유지하며 코드의 보안을 강화하기 위하여 아래와 같은 변경사항이 적용됬다.


- info.plist에서 NSAllowsArbitraryLoadsInWebContent라는 key를 이용해서 ATS를 사용하는 중에도 비보안 web page 로딩을 허용할 수 있다.

- CDSA API가 패쇄되는 대신에 SecKey API를 사용한다. 이는 비대칭 키의 생성을 향상시켰다.

- UIPasteboard API를 통하여 여러 기기간에 Copy&Paste 기능을 활용할 수 있다. 여기서 Paste board의 접근 제한과 만료 기간을 설정할 수 있다. Paste board를 명명하고 검색할 수 없기된 대신에 Shared container를 통해 공유할 수 있다.

- 적합한 목적에 의해서만 info.plist에 보호되어 있는 데이터의 접근을 선언해야만 한다.




CallKit

    VoIP 앱을 일반 전화 UI에 통합할 수 있다. CallKit을 사용하여 사용자 화면과 잠금화면에서 VoIP 응답을 제공하며, 연락처 관리도 가능하다. 기본 전화 앱에 즐겨찾기나 최근 통화 목록에 표시된다. App Exntension을 이용하면 전화를 Blocking하거나 송신자의 ID를 확인하도록 구현할 수 있다.




News Publisher Enhancements

    이전보다 더 풍부한 UI와 컨텐츠를 제공할 수 있게 됬다. 자세한 사항은  https://newsresources.apple.com에서 확인 가능하다.




Video Subscriber Account

    iOS10은 Video Subscriber Account framework를 소개했다. 이 framework를 이용하면 단 한번의 인증으로 모든 케이블 위성 TV 사업자의 로그인/인증을 할 수 있다.




App Extensions

    iOS10에서 새로 추가된 App Extension


- Call Directory

- Intents

- Intents UI

- Messages

- Notification Content

- Notification Service

- Stiker Pack


    Keyboard Extension에 추가된 기능


- UITextDocumentProxy 클래스의 documentInputMode 프로퍼티로 docuemnt 언어 변경을 자동 감지하여 키보드의 언어 설정 및 배열을 변경 가능

- 'handleInputModeListFromView:withEvent:' 메소드를 하여 시스템의 키보드 Picker Menu를 지정 가능




정리 중, 잘 정리된 블로그 발견