모바일 응용 프로그램 설계 고려 사항

휴대 장치는 사용 면에서 그리고 물리적 특성으로 인해 신중한 코딩과 디자인이 요구됩니다. 예를 들어 최대한 빨리 실행되도록 코드를 간소화하는 것이 매우 중요합니다. 물론 이를 바탕으로 코드 최적화도 이루어져야 합니다. 장치 제한 내에서 작동하는 지능적인 디자인도 시각적 프레젠테이션이 렌더링 시스템에 과부하를 일으키지 않도록 하는 데 도움이 될 수 있습니다.

코드

코드를 보다 빨리 실행되도록 만드는 것이 항상 유리하지만, 대부분의 휴대 장치는 비교적 프로세서 속도가 느리기 때문에 코드를 간략하게 만드는 것이 더 이득일 수도 있습니다. 또한 휴대 장치는 거의 항상 배터리 전원으로 가동됩니다. 보다 적은 작업으로 같은 결과를 얻을 수 있다면 배터리 전원도 덜 사용하게 됩니다.

디자인

응용 프로그램의 사용자 환경을 디자인할 때는 작은 스크린 크기, 터치스크린 상호 작용 모드 그리고 끊임없이 바뀌는 모바일 사용자 환경 등의 요인을 고려해야 합니다.

코드와 디자인을 동시에

응용 프로그램에서 애니메이션을 사용하는 경우에는 렌더링 최적화가 매우 중요합니다. 하지만 대개의 경우 코드 최적화만으로는 부족합니다. 응용 프로그램의 시각적인 측면을 코드가 효율적으로 렌더링할 수 있도록 디자인해야 합니다.

중요한 최적화 기술은 Flash Platform의 성능 최적화 가이드에 설명되어 있습니다. 이 가이드에서 다루는 기술은 모든 Flash 및 AIR 내용에 적용되지만 휴대 장치에서 실행되는 응용 프로그램을 개발할 때 필수적입니다.

응용 프로그램 수명 주기

응용 프로그램의 포커스가 다른 응용 프로그램으로 넘어갈 때 AIR는 프레임 속도를 초당 4프레임으로 떨어뜨리고 그래픽 렌더링을 중지합니다. 이 프레임 속도 아래에서는 스트리밍 네트워크와 소켓 연결이 끊어지는 경향이 있습니다. 응용 프로그램에서 이러한 연결을 사용하지 않는 경우에는 프레임 속도를 더 낮게 조정할 수 있습니다.

적절할 때는 오디오 재생을 중지하고 Geolocation 및 Accelerometer 센서에 대한 리스너를 제거해야 합니다. AIR NativeApplication 객체는 활성화 및 비활성화 이벤트를 전달합니다. 이러한 이벤트를 사용하여 활성 및 백그라운드 상태 간의 전환을 관리하십시오.

대부분의 모바일 운영 체제는 경고 없이 백그라운드 응용 프로그램을 종료합니다. 응용 프로그램 상태를 자주 저장함으로써 응용 프로그램이 백그라운드에서 활성 상태로 돌아가거나 새로 실행될 때 합당한 상태로 복원될 수 있어야 합니다.

정보 밀도

휴대 장치 화면은 데스크톱보다 픽셀 밀도(인치당 픽셀 수)는 높고 물리적 크기는 더 작습니다. 같은 글꼴 크기를 사용해도 휴대 장치 스크린의 글자는 데스크톱 컴퓨터의 글자보다 작습니다. 가독성을 높이려면 더 큰 글꼴을 사용해야 하는 경우가 많습니다. 일반적으로 최소한 글꼴 크기가 14포인트 이상이어야 쉽게 읽을 수 있습니다.

휴대 장치는 이동 중이나 조명 상태가 나쁜 곳에서도 자주 사용됩니다. 따라서 현실적으로 가독성을 확보하면서 화면에 표시할 수 있는 정보의 양을 고려해야 합니다. 픽셀 크기가 같은 데스크톱 화면에 표시할 수 있는 정보의 양보다 적을 수밖에 없습니다.

또한 사용자가 스크린을 터치할 때 자신의 손가락과 손에 의해 디스플레이의 일부가 가려진다는 점도 고려하십시오. 사용자가 계속 사용해야 하는 대화형 요소는 스크린의 측면과 아래쪽에 배치하십시오.

텍스트 입력

많은 장치에서 가상 키보드를 사용하여 텍스트를 입력합니다. 가상 키보드는 화면의 일부분을 가리며 사용하기 번거로울 때가 많습니다. 키보드 이벤트(소프트 키 제외)에 의존하지 않도록 하십시오.

입력 테스트 필드를 사용하는 대체 방법을 구현해보십시오. 예를 들어 사용자가 숫자 값을 입력하도록 할 때는 텍스트 필드를 사용하지 않아도 됩니다. 대신 값을 높이거나 낮추는 버튼 2개만 제공하면 됩니다.

소프트 키

휴대 장치에는 다양한 수의 소프트 키가 포함되어 있습니다. 소프트 키는 다양한 기능을 수행하도록 프로그래밍할 수 있는 버튼입니다. 응용 프로그램에서 소프트 키에 대한 플랫폼 규약을 따르십시오.

화면 방향 변경

모바일 내용은 세로 또는 가로 방향으로 볼 수 있습니다. 따라서 응용 프로그램에서 화면 방향 변화를 어떻게 처리할지 고려해야 합니다. 자세한 내용은 스테이지 방향 을 참조하십시오.

화면 보호

AIR는 비디오를 재생하는 동안 화면 보호 기능이 켜지는 것을 자동으로 차단하지 않습니다. AIR NativeApplication 객체의 systemIdleMode 속성을 사용하여 장치가 절전 모드로 들어가는지 여부를 제어할 수 있습니다. 일부 플랫폼의 경우 이 기능을 사용하려면 적절한 권한을 요청해야 합니다.

수신 전화 통화

AIR 런타임은 사용자가 전화를 걸거나 받을 때 오디오를 자동으로 음소거합니다. Android에서는 응용 프로그램이 백그라운드 상태일 때 오디오를 재생하는 경우 응용 프로그램 설명자에서 Android READ_PHONE_STATE 권한을 설정해야 합니다. 이렇게 하지 않으면 Android에서 런타임이 전화 통화를 감지하여 오디오를 자동으로 음소거하는 작동이 차단됩니다. Android 권한 을 참조하십시오.

히트 대상

사용자가 누르는 버튼과 기타 사용자 인터페이스 요소를 디자인할 때는 히트 대상의 크기를 고려하십시오. 이러한 요소는 터치 스크린에서 손가락으로 쉽게 활성화할 수 있을 만큼 충분히 커야 합니다. 또한 대상 간의 공간도 충분해야 합니다. 히트 대상 영역은 dpi가 높은 일반적인 휴대폰 스크린의 경우 각 사이드에서 약 44~57픽셀 사이여야 합니다.

응용 프로그램 패키지 설치 크기

휴대 장치는 일반적으로 데스크톱 컴퓨터보다 응용 프로그램 및 데이터를 설치할 수 있는 저장 공간이 훨씬 적습니다. 사용되지 않는 에셋 및 라이브러리를 제거하여 패키지 크기를 최소화하십시오.

Android에서는 응용 프로그램이 설치될 때 응용 프로그램 패키지가 개별 파일로 압축 해제되지 않습니다. 대신 에셋에 액세스하면 해당 에셋이 임시 저장소에 압축 해제됩니다. 이 압축 해제되는 에셋 저장소 공간을 최소화하려면 에셋이 완전히 로드되었을 때 파일 및 URL 스트림을 닫으십시오.

파일 시스템 액세스

모바일 운영 체제마다 각기 다른 파일 시스템 제한이 있으며 이러한 제한은 데스크톱 운영 체제에서 적용되는 제한과는 다른 경향이 있습니다. 따라서 파일 및 데이터를 저장하기에 알맞은 위치는 플랫폼마다 다릅니다.

파일 시스템의 차이로 인해 AIR File 클래스를 통해 제공되는 공통 디렉토리에 대한 바로 가기를 사용할 수 없는 경우도 있습니다. 다음 표에서는 Android 및 iOS에서 사용할 수 있는 바로 가기를 보여 줍니다.

Android

iOS

File.applicationDirectory

URL을 통한 읽기 전용(기본 경로 아님)

읽기 전용

File.applicationStorageDirectory

사용 가능합니다.

사용 가능합니다.

File.cacheDirectory

사용 가능합니다.

사용 가능합니다.

File.desktopDirectory

sdcard의 루트

사용할 수 없습니다.

File.documentsDirectory

sdcard의 루트

사용 가능합니다.

File.userDirectory

sdcard의 루트

사용할 수 없습니다.

File.createTempDirectory()

사용 가능합니다.

사용 가능합니다.

File.createTempFile()

사용 가능합니다.

사용 가능합니다.

iOS 응용 프로그램에 관한 Apple 지침에는 상황에 따른 파일 저장 위치에 관한 구체적인 규칙이 명시되어 있습니다. 예를 들어 사용자 입력 데이터 또는 다시 생성하거나 다시 다운로드할 수 없는 데이터가 들어 있는 파일만 원격 백업용으로 지정된 디렉토리에 저장할 수 있다는 지침이 있습니다. 파일 백업 및 캐싱에 관한 Apple 지침을 준수하는 방법에 관한 자세한 내용은 파일 백업 및 캐싱 제어 를 참조하십시오.

UI 구성 요소

Adobe에서는 모바일용으로 최적화된 버전의 Flex 프레임워크를 개발하였습니다. 자세한 내용은 Flex와 Flash Builder를 활용한 모바일 응용 프로그램 개발 을 참조하십시오.

모바일 응용 프로그램에 적합한 커뮤니티 구성 요소 프로젝트도 사용할 수 있습니다. 그 중 일부는 다음과 같습니다.

스테이지 3D 가속 그래픽 렌더링

AIR 3.2부터 모바일용 AIR은 스테이지 3D 가속 그래픽 렌더링을 지원합니다. Stage3D ActionScript API는 고급 2D 및 3D 기능을 구현하는 하위 수준 GPU 가속 API 집합입니다. 개발자는 이러한 하위 수준 API를 통해 보다 자유롭게 GPU 하드웨어 가속을 활용함으로써 성능을 대폭 끌어올릴 수 있습니다. 또한 Stage3D ActionScript API를 지원하는 게임 엔진을 사용할 수도 있습니다.

자세한 내용은 게임 엔진, 3D 및 스테이지 3D 를 참조하십시오.

비디오 다듬기

성능 향상을 위해 AIR에서는 비디오 다듬기가 사용되지 않습니다.

기본 기능

대부분의 모바일 플랫폼은 표준 AIR API를 통해 아직 액세스할 수 없는 기능을 제공합니다. AIR 3부터는 고유한 기본 코드 라이브러리를 사용하여 AIR을 확장할 수 있습니다. 이러한 기본 확장 라이브러리는 운영 체제 또는 특정 장치에서 사용할 수 있는 기능에 액세스할 수 있습니다. 기본 확장은 iOS에서 C로 작성되거나 Android에서 Java 또는 C로 작성될 수 있습니다. 기본 확장 개발에 대한 자세한 내용은 Adobe AIR용 기본 확장 소개 를 참조하십시오.