Tag Archives: Core Data

[iPhone] iPhone OS 3.0 에서는 무엇이 바뀌었는가?

사용자 삽입 이미지iPhone OS 3.0의 출시가 임박해오고 있습니다. 미국시간 14일자로 새로운 Beta3 버젼이 출시된 상황이고요, 이제 곧 정식버젼이 출시되지 않을까 기대해 봅니다.

iPhone OS 3.0의 경우 다음과 같은 기능이 추가되었습니다. 제 느낌으로 읽어버린다는 짧은 영어실력에 의해 잘못된 정보가 있을수도 있으니 그럴경우에는 알려주시면 수정하겠습니다.

Apple Push Notification Service
이 기술은 사용자의 어플리케이션이 실행되어있지 않음에도 외부로부터 새로운 정보를 받아서 사용자에게 알려줄 수 있는 기능입니다. 실제로 Notification Server를 구축하여 사용하는 모양입니다. 다만 이 기술은 네트워크 연결 유지가 선조건이 되겠군요. 지금까지는 이메일, 캘린더와 같이 애플에서 제공하는 기본 어플리케이션만 가능했던 기능이지만, 이제 모든 어플리케이션이 사용가능할 것 같네요. 서버에서 아이폰으로 푸시를 한다라.
그럼 현재의 스카이프같은 어플리케이션의 경우에는 어플이 실행중이 아니더라도 전화가 걸려올 수 있겠군요.

Cut, Copy, and Paste
아이폰 개발하시는 분들은 다들 아시겠지만 가장 기본이 되는 프레임워크인 Foundation.framework와 모든 UI로 시작하는 클래스가 정의되어있는 UIKit.framework가 있습니다. 이 UIKit 프레임워크에 새롭게 UIPasteboard라는 클래스가 추가된다고 합니다. 이것이 무엇이냐 하면 제목만으로 예측이 가능한 잘라내기, 복사, 붙여넣기를 위한 중간 컨텐츠 저장소 입니다. 문자열, 이미지, 색상, URL 등의 일반적인 데이터를 손쉽게 교환할 수 있게 됩니다.
UITextField, UITextView, UIWebView 클래스에는 자동으로 위의 모든 기능이 지원되게 됩니다. 실제로 복사 붙여넣기가 무슨 쓸모가 있겠냐 싶지만 가끔 있었으면 할 때가 있더군요.

Accessory Support

이건 정말 환상적인 기능인것 같습니다. ExternalAccessory.framework를 제공하여 외부의 하드웨어와 통신을 할 수 있게 하여줍니다. 이 말이 무슨 말이냐 하면 아이폰의 하단에 있는 30핀 도크 커넥터를 이용하여 특정 장치와 통신을 할 수 있다는 것이죠. 이것을 이용하면 하드웨어 장사도 할 수 있게 될 것 같습니다. 예를 들면 가스 누출 센서를 아이팟용으로 만들어 연결한 다음에 전용 어플리케이션을 만들어 장치와 통신하여 가스 누출 테스터기를 만들어 낼 수 있다는 것이죠. 또한 블루투스를 이용하여 외부의 블루투스 장치와도 통신할 수 있게 됩니다. 현재 설정 메뉴에 들어가면 블루투스 헤드셋/이어폰 밖에 연결이 안되지만 어플안에서 블루투스 키보드나 기타 다른 장치를 사용할 수 있도록 구현만 한다면 가능하다는 이야기인것 같은데 자세한것은 모르겠군요.

In App Purchase Support
현재 아이튠즈를 통한 어플리케이션 구매는 단지 구매시에 결제가 되는 구매 시스템을 가지고 있습니다. Subscription based 모델이 있다고는 하지만 자세한건 모르겠군요. 실제로 iMob 같은 온라인 게임은 따로 Respect라는 포인트를 포인트앱스(?)를 구매하면 충전해 주는 방식을 사용하고 있습니다. 하지만 이 기능이 추가되면 이런 복잡한 문제가 해결될 것 같습니다.
StoreKit.framework를 제공하여 어플리케이션 내에서도 구매를 할 수 있도록 하고 있습니다. 게임이라면 어플 내부에서 아이템을 판매할 수 있다는 것이죠. 최대한 간편하게 이루어 질 수 있도록 한다고 하는데 어떤것일지 궁금해 지는군요. 이것이 구현된다면 이제 수많은 온라인 게임이 생겨나도 괜찮을것 같습니다. 아직 괜찮은 온라인 게임이 없던데 기대해 봅니다. 어디서 흘려들었던 이야기인데 무료 어플리케이션은 이 기능을 사용할 수 없다고 들은것 같습니다. 무료라고 해놓고 막상 뭘 할려고 보면 죄다 구매하라고 떠버리면 안되니깐요.

Peer to Peer Support
이것은 복잡하게 설명하지 않아도 될 것 같습니다. 서버없이 클라이언트끼리 데이터를 주고 받는 기능인 P2P를 제공한다고 합니다. 이 P2P 프레임워크의 이름이 재밌습니다. 바로 GameKit.framework인데요. 게임을 위해 만들어진 기능인것 같습니다. 게임안에서의 음성 채팅등이 가능해 진다고 합니다. 애플의 마이크 달린 번들 이어폰을 끼고 욕을 하면서 게임을 하는 초딩이 생각나는건 왜일까요-_-; 아무튼 다수가 참여하는 멀티플레이 게임만 아니라 게임이 아니더라도 활용할 수 있다고 합니다. 매우 단순하고 편리하게 사용할 수 있도록 하겠다는데 얼마나 사용하기 쉬운 프레임워크가 될지 기대됩니다.

Maps API
지도 활용을 위한 프레임워크(MapKit.framework) 입니다. 일반적으로 지도에서 사용하는 인터페이스를 모두 지원하며 사용자 정보와 함께 정보를 스크롤 가능한 지도로 표현가능하도록 하여 줍니다.
사용자 위치 표시 및 사용자가 정의한 특정 위치를 정의 하거나 핀 마커(지도에서 보면 특정 위치를 핀으로 꼽아 표시하죠)등의 디스플레이 영역을 강조하기 위한 추가적인 기능들을 제공합니다.

iPod Library Access
미디어 플레이어 프레임워크(MediaPlayer.framework)가 추가되었습니다. 사용자의 오디오 라이브러리에 접근할 수 있습니다. 지금까지는 어플리케이션에서는 아이튠즈로 전송한 음악의 영역에는 접근 할 수 없었지만 접근할 수 있게 됩니다. 이 기능을 통해 iPod에서 지원하는 모든 오디오 형식을 재생할 수 있게 된다고 합니다. 사용자 라이브러리 내부의 검색이 가능해 집니다. 또한 사용자가 정의한 플레이리스트를 엑세스 할 수 있게 됩니다.

Audio Recording and Management
AV Foundation Framework(AVFoundation.framework)를 제공하여 음성을 녹음하거나 오디오 세션을 관리할 수 있습니다. AV는 Audio/Video일것 같은데 단지 음성 녹음만을 제공하는 모양입니다. 단순한 녹음뿐만 아니라 음질등의 정의를 바로 할수 있게 되는 것같습니다. 실제로 iPhone OS 3.0 Beta 버젼안에 Voice Recorder가 기본 어플로 추가되었습니다.

Core Data
코어 데이터 프레임워크(CoreData.framework)는 MVC(Model-View-Controller) 개발 방법론의 Model에 해당하는 부분의 관리를 제공합니다. 지금까지 프로그래밍을 통해 데이터 구조를 정의하는 방법 대신에 XCode 개발툴에서 스키마등의 데이터 모델을 관리할 수 있는 그래픽 도구를 제공한다고 합니다. 과연 쓸모가 있을지 의문이 들기는 합니다. 데이터의 인스턴스와 모델 엔티티를 생성하고 관리하도록 설계되었습니다. 실제로 개발자의 데이터 처리를 위한 코드를 감소시켜 개발을 더 쉽게 하는 것이 목적이라고 하니 기대가 됩니다.
SQLite의 퍼포먼스에 최적화 된 저장소 데이터 객체를 제공하며 NSFetchedResultsController를 이용한 테이블 뷰의 관리, 기본적인 텍스트 에디팅에서의 Undo/Redo 제공, 객체의 무결성을 점검하는 Validation 프로퍼티와 메모리안의 데이터에 대한 그룹화, 필터링등을 제공한다고 하는데 정확히 무슨 의미인지는 모르겠습니다. 봐야 알겠군요.

In App Email
MessageUI.framework를 통해 어플리케이션 내부에서 메일을 보낼 수 있게 됩니다. 정확히는 아이폰의 이메일 시스템으 outbox를 이용하는 것입니다. 수신자, 제목, 본문 내용등을 정의할 수 있으며 사용자는 이 기능을 사용할 것인지를 미리 설정할 수 있으며 한번의 수락을 하게 되면 메일은 보낼 편지함에 들어가게 됩니다. 문서를 대충 읽어봤을때는 보낼 편지함에까지만 넣을 수 있지만 전송까지는 마음대로 할 수 없는게 아닌가 싶습니다.

Streaming Video
http를 이용한 스트리밍을 제공한다고 합니다만, 아직 자세한 내용이 나와있지 않습니다. 자세한 이야기는 시간이 좀더 지나봐야 알 것 같습니다.

Safari Features
iPhone OS 3.0 이후 부터는 아이폰에 탑재되어있는 모바일 사파리에서 오디오와 비디오를 사용할 수 있게 됩니다. 또한 디바이스의 현재 위치를 검색할 수 있는 기능을 제공하는 Geolocation Javascript 클래스를 지원합니다.
[이곳]과 비슷한 기능인것 같은데 JS만으로 위치를 파악할 수 있다니 좋군요.

Shared Keychain Items
iPhone OS 3.0부터는 Keychain을 서로 다른 다양한 어플리케이션간 공유할 수 있습니다. 사용자 암호나 기타 요소를 공유해야 하는 각 응용 프로그램에 통합적으로 사용할 수 있습니다. 아직까지는 이것이 왜 필요할 것인가에 대해 정확히 이해하진 못했습니다.

Additional Enhancements
UIKit
– 잘라내기, 복사, 붙여넣기를 제공하기 위한 UIPasteboard, UIMenuController가 추가
– 모션 이벤트에 흔들기(Shake) 이벤트 추가
– UIDevice 클래스에서 배터리 상태와 접근 센서를 사용할 수 있게 됨
– UISearchBar가 확장됨, 검색 결과를 제어하기 위한 UISearchDisplayController가 추가
– UIViewController에 One-step 뷰 회전 기능을 추가
– Modal Transition 스타일에 Flip과 Cross-Fade를 추가
– UINavigationController가 현재 활성화 되어있는 UIViewController에 따라 Toolbar 변경 가능
– UITableView에 새로운 Cell스타일, 더 많은 Reloading 옵션, 삭제 버튼 커스터마이징이 추가
– UIView의 Contents 스트레칭 지원
– UITextView에서 데이터 Detection(전화번호, URL, 주소등) 후 링크를 건다거나 하는 처리 가능.
– UIWebView에서 RTF, RTFD, PDF, iWork, 오피스 문서를 지원
Foundation
– Core Data 클래스에 NSUndoManager를 지원하여 일반적인 Undo 기능을 가능하게 함
– Core Data 클래스에 NSExpression, NSPredicate, NSComparisionPredicate, NSCompoundPredicate, NSValueTransformer 클래스를 지원
Core Audio
– MP3, AAC 컨텐츠의 소프트웨어 디코딩을 지원, 다중 인코딩된 음악파일을 재생가능(한개는 하드웨어 디코딩, 나머지는 소프트웨어 디코딩)
– Audio Toolbox 프레임워크의 오디오 코덱은 소프트웨어, 하드웨어 또는 둘다를 사용할 수 있음
– 아이폰 어플리케이션의 오디오 장치를 연결하고 처리하는 Audio Unit Framework의 향상된 지원
– DVI/Intel IMA ADPCM/Microsoft GSM 6.10/AES3-2003 오디오 포맷 지원