반응형
블로그 이미지
개발자로서 현장에서 일하면서 새로 접하는 기술들이나 알게된 정보 등을 정리하기 위한 블로그입니다. 운 좋게 미국에서 큰 회사들의 프로젝트에서 컬설턴트로 일하고 있어서 새로운 기술들을 접할 기회가 많이 있습니다. 미국의 IT 프로젝트에서 사용되는 툴들에 대해 많은 분들과 정보를 공유하고 싶습니다.
솔웅

최근에 받은 트랙백

글 보관함

FAQ Wednesday: iPhone 5 와 iOS 6

2012. 9. 20. 19:28 | Posted by 솔웅


Posted on . Written by


FAQ 시간인 수요일입니다. iOS 6 가 오늘 릴리즈 됐고 아이폰 5 는 금요일에 릴리즈 될 겁니다. 요즘 이슈가 되는 이 두가지의 릴리즈와 관련되서 많이 질문되는 것들을 오늘 다루겠습니다. 아직 Walter가 올린 iPhone 5와 iOS 6를 지원하는 것과 관련된 글을 보지 못하신 분들은 여기를 들러서 먼저 봐 주세요.


1. Will my existing apps working on the new iPhone 5?


예 여러분의 기존 앱은 iPhone 5나 iOS 6로 업데이트 된 디바이스에서도 지금처럼 작동될 겁니다. iPhone 5와 관련된 이슈는 여러분의 unmodified app 이 Retina device (640 X 960) 에서 작동되는 걸로 생각할 거라는 겁니다. iPhone 5는 640 X 1136 입니다. 여러분의 기존 앱은 iPhone 5에서 아래 위가 검정색으로 나타나는 letterbox 모드로 표시 될 겁니다. (아래 위로 길 경우)





2. Do I have to resubmit my app for iPhone 5?


위에서 얘기한 것처럼 여러분의 기존 앱이 iPhone에서 아래위로 검은처리 된 상태로 작동되는게 문제가 없으시다면 굳이 여러분 앱을 iPhone 5로 업그레이드 하실 필요는 없을 겁니다. 여러분이 iPhone 5를 가지고 있지 않더라도 iOS Simulator에서 확인하실 수 있으니 한번 확인해 보세요. 이 iOS 시뮬레이터를 이용하시려면 Xcode 4.5를 다운 받으셔야 한다는 것 알고 계시죠? 만약 여러분의 기존 앱을 iPhone 5용으로 업그레이드 하고 싶으시다면 iOS 6에 맞게 다시 빌드 하셔야 됩니다.


한가지 유념하실 부분이 있는데요. 만약 여러분의 앱이 애플의 GameCenter를 사용한다면 아래 Question #4 를 꼭 읽어 보세요.



3. How can I make my app use the full iPhone 5 screen?


기존의 여러분 앱이 iPhone 5에서 좀 더 잘 보이게 하는 방법이 몇가지 있습니다.


첫번째는 new splash 파일을 여러분의 프로젝트에 추가하는 겁니다 : Default–568@2x.png. 이것은 640 X1136  크기의 이미지 입니다. 이 이미지는 여러분 앱이 iPhone 5 device에서 로딩이 시작될 때 보여질 이미지 입니다. 이 파일은 iOS6에게 여러분의 앱이 full iPhone 5 screen을 지원한다고 통보할 겁니다. ("tall" mode). 그래도 여러분 앱은 letterbox로 보일겁니다. 하지만 status bar는 맨 위에 제위치로 가게 될 겁니다.


display.pixelWidth and display.pixelHeight. 이 API들은 스크린의 실제 가로 세로 값을 보여줄 텐데요. 이 new splash screen을 사용한 후의 화면을 보세요. iOS 6가 Corona에게 이것은 640 X 1136 디바이스라고 얘기합니다. 이 splash screen 이 없으면 그 값은 640 X 960 (iPhone 4 mode)가 표시 될 겁니다.




이 새로운 디폴트 splash file을 추가한 후에 여러분은 display.setDefault API를 사용하실 수 있습니다. 배경색을 넣을 수 있는 겁니다. 이 API로 시꺼먼 letterbox area를 다른 색으로 채우실 수 있습니다.


display.setDefault( "background", 200 )





또 다른 옵션은 배경 이미지를 로드 하는 방법입니다. 이 이미지는 letterbox area 까지 extend 될 겁니다. 여러분 앱이 iPhone 과 iPhone 5만을 타게팅 한다면 이 이미지는 320 X 568 이 될 겁니다. 이 이미지의 y 포지션을 offset 하셔야 이 이미지가 스크린의 맨 위에서부터 시작할 겁니다. y 포지션을 지정하실 때는 display.screenOriginY를 사용하셔야 합니다.


display.newImage( "background568.png", 0, display.screenOriginY )




(저는 스크린에 가득차게 보이도록 이미지 둘레에 yellow/green border를 추가했습니다.)

config.lua file 에서 zoomEven scaling mode를 사용해 보세요. 이 zoomEven은 여러분 앱의 크기를 가로 세로 똑 같은 비율로 화면에 꽉 찰 때까지 늘릴겁니다. iPhone 5의 portrait 모드에서는 여러분 앱이 아래위로 늘어나는 만큼 좌우도 늘어나기 때문에 일부가 화면 밖으로 사라질 겁니다. (아래 screen shot을 보세요.)





위 예제는 dynamic scaling 이 320 X 480 이고 target을 iPhone, iPhone4, iPhone 5 디바이스로 했을 경우를 가정해서 얘기한 겁니다. 만약 안드로이드도 지원할 필요가 있다면 안드로이드 디바이스의 크기도 같이 고려해서 이러한 것들을 정해야 할 겁니다. (최신 CoronaSDK builds는 여러분의 content 가 제대로 표시되도록 도와주는 새로운 시뮬레이터 스크린 사이즈를 제공하고 있습니다.)


4. Why does my GameCenter crash when running on iOS 6?


만약 여러분 앱이 Apple’s GameCenter를 사용한다면 그리고 그 앱이 오직 landscape mode로만 작동이 된다면 그 상황에서 발생하는 bug 가 있습니다. 뭐냐하면 여러분 앱은 landscape 인데 GameCenter의 Sign-on Screen 은 portrait mode로 표시하려고 하기 때문에 충돌이 일어납니다. 이 상황은 여러분 앱을 iOS 6 용으로 빌드하고 그 앱을 iOS 6 device에서 작동할 때 발생합니다.


한 유저가 그 해결책을 Corona의 Forums에 올리셨는데요. content를 landscape로 세팅하고 앱은 landscape와 Portrait 모두를 지원한다고 세팅 해 놓는게 그 해결방법 입니다. 이렇게 하면 GameCenter sign-on 화면은 portrait으로 뜨고 여러분 앱은 landscape 모두에서 작동하도록 할 겁니다. 폰이 rotate 될 때 status bar 도 자동으로 rotate 될 텐데요. 대부분의 게임에서 status bar를 표시하지 않으니까 이 부분은 그리 크게 신경쓰지 않으셔도 될 것 같습니다.

아래 처럼 build.settings 파일에 코딩을 해 넣으시면 됩니다.


orientation =
{
default = "landscapeRight",
content = "landscapeRight",
supported = { "landscapeLeft", "landscapeRight", "portrait" },
},



Note: 이 이슈가 iOS 6에서 빌드하고 iOS6 device에서 앱을 구동시킬때 발생하는 유일한 이슈 입니다. 만약 여러분의 기존 앱이 iOS 5.1용으로 만들었다면 이 부분은 신경 안 쓰셔도 됩니다.


5. Why don’t I see any of my print messages in the Xcode Console?


iOS 6에서 애플은 Lua print message가 보여지지 않거나 internal Corona runtime 에러가 표시되도록 바꾸었습니다. iOS 6 에서는 Xcode Console과 맥 콘솔 앱에 여러분의 iOS 6나 iOS 6 시뮬레이터로부터 더이상 메세지를 받지 않습니다.


build 915에서 코로나 런타임 에러를 메세지로 restore 하도록 바꾸었습니다. 하지만 Lua print API 관련해서는 아직 해결책을 마련하지 못했습니다. 지금으로서는 런타임 에러 메세지는 보일것이지만 print로 출력하는 디버그 메세지는 표시되지 않을 겁니다. print 함수를 임시파일에 저장하도록 redirect 해서 나중에 확인하실 수 있을 겁니다. 이게 좋은 solution은 못 되지만 여러분이 현재로서는 여러분이 device에서 테스팅하면서 디버깅할 때 사용할 수 있는 방법중의 하나입니다.

iOS 6의 변화로 인해서 저희도 맥 시뮬레이터에 에러와 메세지를 표시하는 방법을 바꾸어야 했습니다. 메세지 앞에 date/time 을 추가하는 메세지를 표시하기 위해 지금은 NSLog를 사용합니다. 이 방법이나 혹은 다른 방법으로 iOS 6 print issue를 해결해야만 합니다. 또한 맥 시뮬레이터 콘솔에 어떻게 정보를 출력할 것인지도 영향을 받을것입니다.  또한 우리의 콘솔과 에러메세지를 이용하는 3rd party 코로나 프로그램도 영향을 받을 겁니다. 이 변화의 잇점으로는 이제 맥 콘솔 앱이 코로나 시뮬레이터와 iOS 시뮬레이터 모두로부터 Corona runtime data를 받는다는 것입니다. (조만간 print 도 가능할 겁니다.) 코로나 시뮬레이터와 빌드 메세지를 보기 위해 터미널 윈도우를 ipen 해야 하는 수고를 안해도 되게 됐죠.



That’s it for today’s questions. I hope you enjoyed it and even learned a few things.

반응형

Comment