본문 바로가기

WWDC/WWDC2016

What's New in Cocoa Touch [Session 205] 3/4


What's New in Cocoa Touch

WWDC 2016 - Session 205 



WWDC 2016 세션 205의 주제인 What's New In Cocoa Touch 요약정리입니다.

이 포스트는 세션 205요약 중 세 번째 글입니다.


지난 포스팅

  1. 2016/08/13 - [WWDC/WWDC2016] - What's New in Cocoa Touch [Session 205] 1/4
  2. 2016/09/05 - [WWDC/WWDC2016] - What's New in Cocoa Touch [Session 205] 2/4
이번 포스팅에선 아래 주제를 정리하고, 나머지 주제는 다음 포스팅에서 이어집니다.

# Adopting System Features
  • Opening applications
  • Core Data
  • CloudKit
  • NSUserActivity
  • App Search
  • CoreSpotlight Search API
  • ReplayKit
  • SceneKit
  • Apple Pay



Adopting System Features



iOS 10에서는 굳이 신경써서 도입하지 않아도 알아서 적용될 많은 기능들이 있습니다.

애플리케이션을 향상시킬 새로운 기능들이 있습니다. 이 기능들은 애플리케이션 아키텍쳐를 조금 더 단순화 시켜줄 수도 있습니다.



이는 애플리케이션을 다른 기능들과 더욱 긴밀하게 통합하여 줍니다.


  • Opening applications


그 좋은 예로 먼저 openURL이 있습니다. 컴플리션 핸들러(completion handler)를 통해 URL 열기를 비동기적으로 수행하도록 만들었습니다. 유니버셜 링크(universal link)도 추가했습니다. 만약 예를 들어 SNS 앱에서 유니버셜 링크를 통해 다른 앱을 실행하려고 한다고 생각해 봅시다. 앱이 설치되어 있으면 그 해당 앱이 실행될 것입니다. 그러나 앱이 설치되어있지 않다면, 그것을 확인하여 현재 SNS앱에서 적절히 처리해 줄 수 있도록 해당 앱 설치여부를 확인할 수 있습니다. 이를 통해 컨텐츠를 통합하고 시스템 내부에서 이 애플리케이션들을 적절히 다룰 수 있습니다.

  • Core Data


다음은 코어데이터입니다. 먼저 쿼리 제네레이션(query generation)이라는 것을 살펴봅니다. 분리된 컨텍스트에서 메인UI를 위한 컨텍스트가 존재하고, 이것들은 백그라운드 큐에서 실행하는 것이 일반적입니다. 쿼리 제네레이션을 사용하면 메인UI의 모델을 한 버전에서 또다른 버전으로 변경하는 것을 정확히 제어할 수 있습니다. 이는 기존에 강제적으로 처리했던 것들을 더이상 강제적으로 처리하지 않아도 되는 것을 의미합니다. 왜냐하면 백그라운드 큐에서 무엇인가 변경되고, 메인UI가 새로운 버전의 데이터로 언제 변경될 것인지 정확하게 결정할 수 있게 되기 때문입니다. 이를 통해 코어데이터 코드를 조금 더 단순화 시킬 수 있습니다.

또 다른 기능은 커넥션 풀링에 관한 것입니다. 이제 저장소에서 다중 읽기를 완벽히 지원합니다. 이는 성능향상에 큰 도움이 됩니다. 

또, 코어데티어 관련 툴에 새로운 기능들이 추가되었습니다만, 이는 [What's New in Core Data]에서 더 자세히 알아보시기를 추천드립니다.  

  • CloudKit


데이터를 모델링 하는 방법에는 CloudKit을 이용하는 방법도 있습니다.CloudKit에는 이미 사용자별로 공개 데이터베이스와 개인 데이터베이스를 가질 수 있게 되어있습니다. iOS 10에서는 Record sharing이 추가되었습니다. 그래서 여러 사용자가 하나의 기록에 공동으로 접근할 수 있습니다. 




CloudKit을 사용하는 협업 기반의 애플리케이션은 UI흐름을 다루는 데에는 어려움이 있었습니다.

문서를 공동작업하는데 다른 사람을 어떻게 초대하나요? 정말 안전(secure)한 방법으로 이를 구현할 수 있나요? 그래서 UICloudSharingController를 만들었습니다. 이 뷰 컨트롤러는 UIKit을 통해 화면에 표현할 수 있으며, CloudKit에서 제공하는 recored sharing을 제어하는 새로운 공유 객체를 전달해주기만 하면 됩니다. 



이 뷰 컨트롤러는 초대 흐름을 관리할 수 있는 UI를 자동 생성해줍니다.



또, 초대한 사람들의 목록도 자동으로 생성해 줍니다. 이를 통해 CloudKit을 활용한 협업 기반의 애플리케이션을 조금 더 쉽게 구성할 수 있습니다. [What's New with CloudKit] 세션을 통해 조금 더 자세한 내용을 확인할 수 있습니다.


  • NSUserActivity


NSUserActivity는 애플리케이션의 상태를 캡쳐하는데 사용합니다. 이제껏 핸드오프나 스포트라이트 같은 곳에서 사용해 왔죠.

iOS 10에서는 user activity에 위치도 추가할 수 있습니다. 만약 주소를 다루는 애플리케이션이라면 이 주소에 관한 활동을 사용자에게 표현하고 제공할 수 있습니다. MapKit 아이템을 activity에 추가하여 전달하기만 하면 됩니다. 텍스트 필드의 제안 기능에서 이 주소는 유용하게 사용될 수도 있을 것입니다.

이는 지능과 액티비티 기반의 iOS 10 기능입니다.


  • App Search


NSUserActivity가 사용되는 다른 지점이 있습니다. 바로 검색입니다. iOS 9에서 인덱스된 액티비티가 추가되었습니다. 이 인덱스된 액티비티는 스포트라이트 검색에 노출되었습니다.



이제는 새로운 버튼(Search in App)을 통해 앱 내의 검색으로 바로 진입하여 이어갈 수 있습니다.



이 기능을 구현하려면 먼저 info plist파일에 CoreSpotlightContinuation 키를 추가해 줍니다. 그 후 새로운 UIApplicationDelegate 메서드를 구현해주면 됩니다.


  • CoreSpotlight Search API


iOS 9에서 CoreSpotlight를 통해 앱 내부의 컨텐츠를 인덱싱 할 수 있도록 지원했습니다. 이제는 스포트라이트에서 데이터를 검색할 수 있습니다. 스포트라이트 인덱스를 개방했습니다. 

검색 쿼리를 구성하고 요청을 보내면 애플리케이션의 데이터를 위한 스포트라이트 인덱스를 검색할 수 있습니다. 이를 통해 애플리케이션 내부의 데이터를 시스템에 직접 인덱싱 할 수 있습니다. 이와 관련해서 [Making the Most of Search APIs] 세션을 참고하면 됩니다. 이 세션에서는 continuation과 CoreSpotlight의 검색 등에 대해 자세히 다룹니다.


  • ReplayKit


기존의 ReplayKit은 애플리케이션의 화면을 기록하기 위한 방법이었습니다. 이제 iOS 10에서는 ReplayKit을 사용하여 라이브 스트리밍을 할 수 있습니다. 즉, 생방송이 가능합니다. 


  • SceneKit


SceneKit의 렌더링 엔진이 새로워졌습니다. 물리 기반 렌더링을 수행합니다. iOS 9에 비해 비약적으로 발전했습니다.


  • Apple Pay


사용자 측면에서 애플페이는 어떤 플랫폼을 사용하는지에 상관없이 모든 곳에서 사용할 수 있게 되었습니다. 이제는 iOS와 워치 뿐만 아니라, 웹에서도 애플페이를 사용할 수 있게 되었습니다.



개발자 측면에서 애플페이는 여러가지가 추가되었습니다. 

UIKit 기반의 애플리케이션에서만 지원되었던 애플페이가 많이 확장되었습니다. 

이제는 새로운 자바스크립트 프레임워크를 통해 사파리에서도 애플페이를 지원할 수 있습니다. 이는 SFSafariViewController에서 애플페이를 지원할 수 있게 되었다는 뜻이기도 합니다. 

또, UI가 아닌 코드에서도 애플페이를 사용할 수 있습니다. UI가 아닌 익스텐션에서 사용할 수도 있는데, iMessage 앱의 익스텐션에서 애플페이를 사용하는 것이 좋은 예가 되겠습니다. 이와 관련하여 자세한 내용은 [Apple Pay on the Web]과 [What's New with Wallet and Apple Pay]세션에서 확인해 볼 수 있습니다.




# 간단요약

Opening applications

  • 유니버셜 링크(universal link)를 통한 openURL이 개선되었음 - 비동기 처리, 다른 앱 설치 유무 미리 확인 등


Core Data

  • 쿼리 제네레이션(query generation)기능 추가
  • 동시 처리 성능 향상
  • 툴 발전


CloudKit

  • Record sharing 추가로 여러 사용자가 하나의 기록에 공동으로 접근가능
  • UICloudSharingController을 통해 문서 등의 여러사용자 협업관리를 수월하게 할 수 있음


NSUserActivity

  • NSUserActivity에 위치 정보 추가 가능


App Search

  • 스포트라이트검색의 Search in App 버튼을 통해 앱 내의 검색으로 바로 진입하여 이어갈 수 있음 - CoreSpotlightContinuation


CoreSpotlight Search API

  • 스포트라이트 인덱스를 개방하여 스포트라이트에서 애플리케이션 내부의 컨텐츠 뿐만 아니라 데이터도 검색할 수 있도록 변경


ReplayKit

  • ReplayKit을 사용하여 라이브 스트리밍을 할 수 있음


SceneKit

  • 새로운 렌더링 엔진 - 물리 기반 렌더링
  • iOS 9에 비해 비약적으로 발전


Apple Pay

  • 사용자가 iOS와 워치 뿐만 아니라, 웹에서도 애플페이를 사용할 수 있게 됨
  • 사파리에서도 애플페이를 지원(SFSafariViewController에서 애플페이를 지원가능)
  • UI가 아닌 익스텐션에서도 애플페이 사용가능





* 잘못되거나 부족한 내용이 있다면 덧글 남겨주시면 감사하겠습니다.

* What's New in Cocoa Touch [Session 205]의 나머지 내용은 다음 포스팅에서 이어집니다.


이어지는 다음 포스팅 내용


# Integrating with iOS

  • Keyboards Extensions
  • Widgets
  • User Notifications
  • CallKit
  • SiriKit
  • Intents Extensions
  • IntentsUI Extensions
  • Intents are Shared
  • iMessage Apps

2017/01/04 - [WWDC/WWDC2016] - What's New in Cocoa Touch [Session 205] 3/4



by yagom

facebook : http://www.facebook.com/yagomSoft

facebook group : https://www.facebook.com/groups/yagom/


p.s 제 포스팅을 RSS 피드로 받아보실 수 있습니다.

RSS Feed 받기