OhMyPlane

자작 앱 개발 네 번째 이야기. 이번에는 App Store에 iOS 버전을 올릴 때와 tvOS 대응 작업 시의 이야기다.

OhMyPlane

동작 화면 찍기

UI Kit으로 만든 앱의 경우, XCode의 UI Test와 sanpshot을 이용하면 자동으로 동작 화면을 찍을 수 있었다.

그러나, Sprite Kit의 경우에는 이게 안 된다. 즉, 직접 모든 동작 화면을 찍어야 했다. 시뮬레이터에서 대상 장비를 선택 후, 앱을 실행시켜 찍고자 하는 화면일 때 Command + S를 눌러 동작 화면을 찍었다. 총 6개의 장비에 대해서 같은 작업을 반복했다.

  • iPhone 4S
  • iPhone 5
  • iPhone 6
  • iPhone 6 Plus
  • iPad
  • iPad Pro

Save Screen Shot

이후, UI가 변경된다면 이 작업을 또 반복해야 한다. 흑~~

홈페이지 만들기

github pagebootstrapOne Page Wonder을 이용하여 그냥 만들었다.

동작하는 동영상 하나, App Store 링크, 이메일 주소 하나만 달았다.

앱 심사 요청 및 등록 완료

iTunes Connect에서 메타 정보들을 입력 후, 심사 요청을 했다. 다행히 거부되지 않고, 한 번에 올라갔다. 대략 심사 요청에서 완료까지 5일 정도 걸렸다.

주변 지인의 몇 명이 iOS를 사용하는지 대략 알게 된다.

경험 삼아 만든 게임 앱이기 때문에 지인들이 호기심에 한 번씩 설치할 것이기 때문에 앱 판매량을 보면 몇 명의 지인들이 iOS를 사용하는지 대략 알 수 있다.

앱 판매량

18명 정도 사용하는 것으로 나타났다. 흐흐흐~~~

tvOS 대응

이제 tvOS에서 동작하기 위한 작업이다.

iOS와 크게 다른 점은 입력 시스템이 크게 다르다. iOS의 경우 손가락으로 원하는 위치를 직접 터치할 수 있지만, tvOS의 경우는 그렇지 않다. 이를 고려한 UI 및 입력을 처리해야 한다.

UI 수정 및 입력 대응

2D iOS & tvOS Games by Tutorials 책에서 사용한 방법을 이용하였다.

리모컨을 이용해 버튼들을 돌아가면서 선택하는 방식이다. 리모컨의 터치 부분에서 좌우 Swipe를 인식하여 버튼의 선택을 옮긴다. Click을 하면 버튼을 누르는 것으로 인식한다.

버튼이 선택되었다는 표시는 버튼 그림을 깜박이는 것으로 표현했다.

iOS, tvOS 구현 구분

protocolextension을 이용해서 구현했다.

이런 protocol을 정의한다.

protocol TVControlsScene {
    // 생략...
}

별도의 파일에 extension을 이용해 tvOS에 대한 코드를 작성한다.

extension GameScene: TVControlsScene {
    // 생략...
}

extension으로 구현된 이 파일은 tvOS에만 속해있다.

tvOS 타겟

공통으로 사용하는 코드에서 tvOS에 대한 동작은 다음처럼 구현했다. tvOS용으로 만들어질 때는 extension 구현이 포함되기 때문에 해당 protocol 타입으로 인식된다.

    // for tvOS
    let scene = (self as SKScene)
    if let scene = scene as? TVControlsScene {
        scene.setupTVControls()
    }

두 번째 자작 앱 OhMyPlane #4 was originally published by developer at SoftDevStory Blog on April 25, 2016.