Swifter {Swift Developer}

메뉴

API Diffs를 통해 알 수 있는 iOS10의 새로운 기능들

VoIP API/CallKit

다중통화같은 IP전화가 어떤 느낌으로 만들 수 있을지는 좀더 지켜봐야할듯 보여지지만 일단 “Speakerbox: Using CallKit to create a VoIP app”이라는 공식샘플이 공개되어 있기 떄문에 나중에 분석해 보려고 합니다.

SiriKit/Intents/IntentsUI

이번에 드디어 Siri API가 개발자들에게 공개되었습니다. 이것이 아마도 iOS10의 핵심이 아닐까?라는 생각을 해봅니다. SiriKit라는 프레임웍이 있는 것은 아니고, Intents/IntentsUI라는 프레임웍이 그 핵심인듯 보여집니다. 다음 6가지 도메인을 지원합니다.

  • Audio or video calling
  • Messaging
  • Sending or receiving payments
  • Searching photos
  • Booking a ride
  • Managing workouts

사실 위 내용만 봐서는 어떤 것인지 확 와닿지 않기 때문에 다음 공식샘플을 테스트해봅시다.

  • IntentHandling: Using the Intents framework to handle custom Siri request
  • UnicornChat: Extending your Apps with SiriKit

음성인식 API / Speech

SiriKit과는 별도로 음성인식 API가 추가되었습니다. 실시간 음성도 녹음된 음성도 사용할 수 있습니다.

“SpeakToMe: Using Speech Recognition with AVAudioEngine”이라느 공식샘플이 공개되어 있기 때문에 바로 테스트해봅시다. SFSpeechRecognizer초기화시 Locale를 전달할 수 있도록 되어 있다.

AVFoundation

AVCapturePhotoOutput

AVFoundation에서 사진을 찍을 때 사용하던 AVCaptureStillImageOutput이 deprecated되었고 iOS10부터 AVCapturePhotoOutput이라는 새로운 클래스로 사용하도록 변경되었습니다. 모든 사진 워크플로우에 unified파이프라인을 제공한다고 되어 있는데 좀더 API 내용을 살펴봐야할 것 같습니다. 그리고 추가된 API는 Live Photo촬영기능이 오픈되어 다양한 서비스를 시도할 수 있을 것으로 보여집니다.

AVPlayerLooper

미디어의 특정부분을 쉽게 반복시킬 수 있는 클래스라고 봅니다.

Messages

키노트에서 소개된 Messages앱의 새로운 기능입니다. Messages 프레임웍이 추가되어 개발자가 할 수 있는 것들이 늘어났다는 것입니다.

What’s New에 따르면, App Extensions를 만들어 Messages앱과 자신앱을 연계할 수 있도록 하는 것입니다. 만들 수 있는 App Extension은 다음 2가지가 있습니다.

  • 스티커팩 (사용자가 Messages에 사용할 수 있음)
  • Messages에서 사용할 수 있는 사용자정의 UI (iMessage앱)

“Ice Cream Builder: A simple Messages app extension”라는 공식샘플을 확인해 봅시다. 그리고 레퍼런스도 잘나와 있고 프로그래밍 가이드가 쉽게 작성되어 있습니다.

Core Image

키노트에서 Photos내 이미지들의 얼굴이외에 승마같은 장면인식도 된다는 소리가 나왔지만, API Diffs에서는 그런 변화가 없었습니다.

필터는 아래 5가지가 추가되었습니다.

  •  CINinePartTiled
  • CINinePartStretched
  • CIHueSaturationValueGradient
  • CIEdgePreserveUpsampleFIlter
  • CIClamp

그리고 RAW이미지를 사용할 수 있습니다.

RAW image file support is now available on iOS devices that use the A8 or A9 CPU. Core Image can decode RAW images produced by several third-party cameras as well as images produced by the iSight camera of supported iOS devices (to learn more, see AVFoundation). To process RAW images, use filterWithImageData:options: or filterWithImageURL:options: to create a CIFilter object, adjust RAW processing options with the keys listed in RAW Image Options, and read the processed image from the filter’s outputImage property.

imageWithExtent: processorDescription: argumentDigest: inputFormat: outputFormat: options: roiCallback: processor: 라는 메소드가 중요하지만 아직 사용해보지 않아서 WWDC세션내용을 첨부합니다.

You can now insert custom processing into a Core Image filter graph by using the imageWithExtent:processorDescription:argumentDigest:inputFormat:outputFormat:options:roiCallback:processor: method. This method adds a callback block that Core Image invokes in between filters when processing an image for display or output; in the block, you can access the pixel buffers or Metal textures containing the current state of the processed image and apply your own image processing algorithms.

MapKit

추가된건 3가지뿐입니다.

키노트에서는 Map 앱의 여러가지 새로운 기능에 대해서 나왔지만 NSUserActivity에 추가된 mapItem라는 속성이 중요합니다.

In iOS 10, the NSUserActivity object includes the mapItem property, which lets you provide location information that can be used in other contexts. For example, if your app displays hotel reviews, you can use the mapItem property to hold the location of the hotel the user is viewing so that when the user switches to a travel planning app, that hotel’s location is automatically available. And if you support app search, you can use the new text-based address component properties in CSSearchableItemAttributeSet, such as thoroughfare and postalCode, to fully specify locations to which the user may want to go. Note that when you use the mapItem property, the system automatically populates the contentAttributeSet property, too.

Core Bluetooth

블루투스5.0이 지원될거라는 생각은 했지만 그렇게 큰 변화는 없습니다.

주요 변경사항은

가 없어지고 대신 상태를 관리하는 클래스 CBManager라는 것이 추가되었습니다. 블루투스 상태를 이 클래스를 통해 얻을 수 있습니다.

그외 CBCentralManager와 CBPeripheralManager는 인수가 없는 초기화메소드가 추가되었습니다.

그리고 캐릭터리스틱value범위를 지정하는 Descriptor의 UUID를 나타내는 정수가 추가되었습니다.

[Valid Range관련 문서]

  • https://developer.bluetooth.org/gatt/descriptors/Pages/DescriptorsHomePage.aspx
  • https://developer.bluetooth.org/gatt/descriptors/Pages/DescriptorViewer.aspx?u=org.bluetooth.descriptor.valid_range.xml

Core Motion

Significant Elevation주위의 API가 추가되었고 Significant Location처럼 백그라운드에서 배터리를 절약하면서 고도의 변화를 얻을 수 있는 것으로 여겨진다.

새 App Extension

iOS10에서 추가된 Extension들은 다음과 같습니다.

  • Call Directory
  • Intents
  • Intents UI
  • Messages
  • Notification Content
  • Notification Service
  • Sticker Pack

그외 아직 살펴보지 못한 것들

  • Proactive Suggestions
  • UserNotifications(신규 프레임웍)
  • UserNotificationsUI (신규 프레임웍)
  • VideoSubscriberAccount (신규 프레임웍)

watchOS3도 있지만 아직 애플왓치쪽은 크게 개발하지 않아서 살펴보지 않아서 정리내용에서 제외합니다.

참고자료: https://developer.apple.com/library/prerelease/content/releasenotes/General/iOS10APIDiffs/

 

Facebook Comments

카테고리:   Swift

Tags:  ,

댓글

죄송하지만 댓글은 닫혀 있습니다.