iOS 2009. 4. 5. 16:59
몇일 전 메일로 아이폰 SDK 3 베타가 나왔다는 소식을 들었는데 이제서야 추가되고 변경된 내용들을 개략적으로 둘러 보았습니다. 중요한 변경사항으로는 블루투스를 공식적으로 지원하며 30핀 독 컨넥터를 이용해 각종 액세서리들과 통신할 수 있는 수단을 제공하는 것과 App 자체내에서 결제를 제공하는 것 같습니다. 그외 각종 API가 추가되고 간단하게 사용할 수 있도록 변경되었습니다.
사용자 삽입 이미지
(이미지 출처: 애플)

애플 아이폰 개발자 센터의 아이폰 OS 3.0 소개 페이지에서 내세우는 6개의 큰 변화된 내용은 아래와 같습니다.

* In App Purchase
어플리케이션 자체내에서 사용자가 결제를 할 수 있는 StoreKit이란 프레임워크가 추가되었습니다. 이를 이용하면 App내에서 컨텐츠나 기능을 추가할 때 사용자로 부터 과금을 할 수가 있습니다. App는 무료로 배포하고 컨텐츠 접근시에만 유료로 결제를 받는 서비스들도 많이 등장할 것 같다는 생각이 듭니다. (델피니님이 댓글로 안된다고 말씀해 주셨네요. 제 착오 였습니다. ^^;;)

* Peer to Peer Connectivity
블루투스를 이용해 페어링 없이 아이폰(터치)간에 연결이 가능합니다. 이를 이용하여 데이터를 주고 받을 수도 있으며, 특별히 음성데이터를 위한 GKVoiceChatService란 서비스도 제공합니다. 연결될 기기를 선택하기 위한 기본적인 UI도 제공합니다.

* Apple Push Notification service
App가 실행되지 않을 때라도 Push Notification Service에 동록된 서버로 부터 메시지를 받을 수 있가 있습니다. App가 실행되지 않을 때 이 메시지를 받게되면 다이알로그박스, 뱃지, 효과음등을 통하여 사용자에게 새로운 데이터나 변경된 내역이 있다는 것을 알려 줍니다. 만약 어플리케이션이 실행중이라면 미리 정의된 메소드에서 이 메시지를 처리할 수 있습니다.

* Maps
구글 모바일 맵 서비스와 연동하는 Map View가 추가되었습니다. 확대, 축소가 가능하며 핀을 사용할 수 있고, 현제 좌표를 주소로 변환해주는 API도 제공합니다. 구글맵의 Open API를 사용하지 않고도 편리하게 관련된 어플리케이션을 만들 수 있습니다.


* Accessories

30핀 독과 블루투스를 통하여 외부 기기들과 통신할 수 있는  악세서리 API를 제공합니다. 아이팟의 악세서리와 이와 연동할 수 있는 App를 이용하여 다양하고 재미있는 악세서리들과 App들이 많이 나올 것으로 기대가 됩니다.

* iPod Library Access

사용자의 아이폰/터치에 있는 음악과 Podcasts, Audio Books, 플레이 리스트에 접근할 수 있는 API를 제공하면, 선택을 위한 기본적인 UI 컨트롤러도 제공합니다.

* 기타
이외에도 Cut, Copy & Paste를 지원하고, App내에서 이메일 발송을 위한 API와 UI를 제공하는 등 많은 변화가 있는 것 같습니다.

그리고 맥의 spotlight와 같은 검색기능이 추가되었습니다. 주소록, 미디어 파일등을 검색하는 용도로 사용하는 것 같습니다.


3.0에서 업그레이드 된 기능들을 이용해 개발사들은 더욱 다양한 수익모델을 만들 수 있을 것 같습니다. 사용자들도 다양한 악세사리들과 이와 연동되는 App를 사용할 수 있다는 것은 환영할 만한 일이라고 생각됩니다. 애플이 아이폰 SDK 업그레이드 로드맵을 장기적인 안목으로 정말 잘 짜놓은 것 같습니다.

AND

저번 주에 1.2 버젼을 올렸습니다. 통계에 섬머타임이 적용된 버그등을 수정하고 캐릭터 에니메이션을 추가하고 디자인을 조금 변경하였습니다.

어제 1.2 버젼이 리뷰를 끝내고 배포가 되었습니다. 그런데 어플 업로드시 공식 사이트로 등록해 놓은 블로그에 아이팟 터치 1세대 사용자께서 어플리케이션이 멈춘다는 글을 보았습니다. 혹시나 해서 앱스토어를 가보니 업그레이드 후 튕긴다는 리뷰를 보았습니다. 일단 더 이상 다운로드되는 것을 막기위해 스토어에서 내렸습니다.

제가 파악한 범위에서는 1세대 사용자에게서 문제가 발생하는데, 제가 1세대가 없고 늦은 시간이였기 때문에, 1세대를 가지고 있는 지인에게 연락하여 다음날 가져와 달라고 요청했습니다. 원인은 늘 그렇듯이 어처구니 없는 실수였습니다.

sqlite3_finalize(statement);
sqlite3_finalize(statement);

디버깅 하다보니 위와 같은 코드가 있더군요. 아마 복사를 하다 필요없는 sqlite3_finalize까지 같이 가지고 왔나 봅니다. 이 치명적인 오류는 해킹된 아이팟 1세대만 튕기고 나머지 시뮬레이터나 2세대에서는 견딘 것 같습니다.

두번째 어플리케이션이 멈추는 듯한 문제는 지나치게 느려진 속도에 있었습니다. 메인화면은 2개의 View로 나누어 놓았습니다. 상단은 에니메이션이 필요하고 추후에 다양한 에니메이션을 보여 주기위해 Open GL ES를 사용하기 위함이고, 하단의 수량, 시간등을 보여 주는 부분은 매 프레임 마다 에니메이션이 필요 없기 때문이었습니다. 그런데 이번에 업글을 하면서 하단의 뷰도 매 프레임 실행되도록 변경했습니다. 제 2세대에서는 아무 차이가 없었기 때문이었습니다. 하지만 1세대에서는 속도에 심각한 문제가 발생했습니다. 아마 애플도 리뷰시 2시대만 사용하는 것 같습니다.

현재는 이미지 출력시에 가장 간단한 방법인 drawAtPoint를 사용하고 있었습니다. 애니메이션이 더 추가되고 GL로 가기전에 그나마 퍼포먼스가 조금 나은 CGContextDrawImage로 교체할려고 합니다.

아무튼 오류를 고치고 그날 핀 수량을 뱃지로 보여주는 부분을 추가하여 다시 올렸습니다. 아마 다음주 초쯤 올라갈 것 같네요. 사용하고 계신분들께는 너무 죄송합니다.
AND

오늘 애플로 부터 등록이 심사가 완료되고 Ready fro Sale로 상태가 변경되었다고 메일이 왔습니다. 2월 25일에 올렸으니 심사에 6일정도 걸린 것 같습니다.

본업에 매달리는라 개발자 등록부터 늦게 했지만, 처음부터 시작해서 마지막 과정까지 경험해본 것 자체에 만족하고 있습니다.

사실 처음부터 과정을 정리해서 블로그에 올려 보고 싶었는데, 대부분 따라 해보다 안되고 다시 해보다 얼떨결에 된 경우들이 많아 정리도 안되고 저도 정확히 모르겠네요.

유료로 0.99달러에 올렸는데 블로그를 통하여 프로모션코드를 배포합니다. 프로모션 코드는 앱스토어의 미국계정에서만 사용할 수 있으니, 미국계정이 있으신 분들만 사용하실 수 있습니다. 비공개 댓글로 메일 주소를 알려 주시면 20분에게 프로모션 코드를 보내 드리겠습니다.

AND