애플리케이션 API 가이드

개요

 

 

Tizen 애플리케이션 API를 사용하여 다음 작업을 수행할 수 있습니다.

  • 다른 애플리케이션 실행: 애플리케이션 인터페이스는 tizen.application.launch() 메서드를 사용하거나 tizen.application.launchAppControl() 메서드를 통해 다른 애플리케이션을 실행하는 메서드를 제공합니다.
  • 애플리케이션 관리: 애플리케이션 인터페이스는 호출/실행 애플리케이션 숨기기 또는 종료 등의 애플리케이션 관리 작업을 수행하는 메서드를 제공합니다.
  • 설치된 애플리케이션에 액세스: 애플리케이션 인터페이스는 장치에 설치된 애플리케이션에 대한 정보를 검색하는 메서드를 제공합니다. 이름, 아이콘 경로, 버전 정보, 애플리케이션 식별자 등의 정보를 검색할 수 있습니다.
  • 실행 중인 애플리케이션 컨텍스트에 액세스: 애플리케이션 인터페이스는 장치의 애플리케이션 컨텍스트를 검색하는 메서드를 제공합니다.
  • 알림 수신: 애플리케이션 인터페이스는 장치에 설치된 애플리케이션 목록에서 수정에 대한 알림을 받는 메서드 및 이벤트 리스너를 제공합니다.

이 API를 사용하려면 config.xml 파일(아래의 필수 구성 요소 섹션 참조)에 필요한 사용 권한을 추가합니다.
애플리케이션이 실행될 때 애플리케이션 개체는 tizen 개체에 자동으로 인스턴스화됩니다. tizen.application 개체는 ApplicationObject 인터페이스의 인스턴스입니다.

그림 1에서는 API 개체가 애플리케이션 창 내부에 구성되는 방식을 보여줍니다.

 

그림 1   

알람 개체

 

 

 

 

 

 

 

 

필수 구성 요소

애플리케이션 API에는 애플리케이션에 대한 정보를 검색하고 애플리케이션을 관리하기 위한 여러 수준의 액세스 권한이 있습니다. config.xml 파일에는 애플리케이션 API에 대한 다른 사용 권한을 설정할 수 있습니다. config.xml 파일을 열고 "기능" 탭을 선택한 다음 애플리케이션에서 사용할 수 있도록 아래의 기능을 확인합니다.

수동으로 수행하려는 경우 아래와 같이 다음 태그를 config.xml에 추가합니다.

    
    
    
    Application 
	
    
    
    
    
	
Tizen IDE 인터페이스를 사용하여 config.xml 파일을 편집하는 것이 좋습니다.

 

 

애플리케이션 실행

tizen.application.launch() 메서드를 사용하여 애플리케이션 ID에 따라 특정 애플리케이션을 시작할 수 있습니다. 인수는 다음과 같습니다.

  • id - 애플리케이션 ID를 나타내는 고유한 문자열입니다.
  • successCallback- 호출 종료 시 호출되는 함수입니다.
  • errorCallback- 오류 발생 시 호출되는 함수입니다.
  • argument- 실행된 애플리케이션에 대한 매개 변수(배열)입니다.

이 예제에서 tlp6xwqzos.Calculator 애플리케이션 ID를 가지고 있는 계산기 애플리케이션을 실행합니다.

function onsuccess() {
   console.log("Application has launched successfully");
 }
 tizen.application.launch("tlp6xwqzos.Calculator", onsuccess);

 

 

서비스 실행

식별자(애플리케이션 ID)를 사용하여 애플리케이션을 실행하지 않지만 대신 특정 기능을 제공하는 애플리케이션이 필요한 경우 요구 사항에 따른 애플리케이션을 실행하는 시스템을 요청할 수 있습니다.

tizen.ApplicationControl() 메서드를 사용하여 특정 서비스를 실행하는 시스템을 요청할 수 있습니다. 다음 인수를 사용합니다.

  • service- 서비스 정보를 설명하는 개체입니다(아래 참조).
  • id- 실행할 애플리케이션 식별자입니다.
  • successCallback- 호출 종료 시 호출되는 함수입니다.
  • errorCallback- 오류 발생 시 호출되는 함수입니다.
  • replyCallback- 콜백 응답(ApplicationServiceDataArrayReplyCallback 유형임)입니다.

ApplicationService

ApplicationService 인터페이스는 작업, URI, MIME 유형으로 구성됩니다. ApplicationService는 다른 애플리케이션에 의해 수행될 작업을 설명하고 ApplicationServiceDataArrayReplyCallback 인터페이스를 사용하여 후속 애플리케이션에서 결과를 수행할 수 있습니다.

시스템은 ApplicationService 개체와 함께 실행 요청을 수신하면 적절한 애플리케이션을 찾고(또는 애플리케이션 선택기에 애플리케이션을 표시하고) 선택된 애플리케이션을 실행합니다.

ApplicationService 개체는 다음과 같은 기본 정보로 구성됩니다.

  • Operation- 작업은 애플리케이션 서비스에 의해 수행될 작업을 정의하는 문자열입니다. 작업은 실행 요청을 보내기 위한 필수 정보입니다. 또한 자체 작업을 정의하여 애플리케이션의 특정 작업을 설명할 수 있습니다.
  • URI- URI는 작업이 수행되는 데이터를 정의합니다.
  • MIME- MIME 유형은 특정 URI 유형을 정의합니다.
  • category- 실행될 애플리케이션의 카테고리를 저장하는 특성입니다.
  • ApplicationControlData Data- ApplicationControlData는 실행 요청에 대한 추가 정보를 제공하는 키-값 쌍이며 요청 결과에 사용할 수 있습니다.

ApplicationServiceDataArrayReplyCallback

요청된 작업이 완료되면 onsuccess() 메서드가 호출됩니다. 실행된 애플리케이션이 작업 결과로 반환되었음을 알리는 데이터를 수신합니다. 데이터는 ApplicationServiceData 개체의 배열로 제공됩니다. 이러한 각 개체에는 키 및 값의 두 가지 특성이 포함됩니다. 값 특성은 실제로 값의 배열입니다. 아래의 함수는 모든 수신된 데이터를 인쇄합니다. 실패할 경우 onfail() 메서드가 호출됩니다.

ApplicationServiceDataArrayReplyCallback 개체는 다음 두 가지 메서드로 구성됩니다.

  • onsuccess()- 서비스 공급자가 ApplicationService.replyResult()를 호출하는 경우 호출되는 메서드입니다.
  • onfail()- 서비스 공급자가 ApplicationService.replyFailure()를 호출하는 경우 호출되는 메서드입니다.

실행 요청 확인

실행 요청에는 두 가지 종류가 있습니다.

var appControl = new tizen.ApplicationControl("http://tizen.org/appcontrol/operation/view","http://tizen.org", null, null, null);

  //Launch a service.
  tizen.application.launchAppControl(appControl, null,
    function() {console.log("launch application control succeed"); },
    function(e) {console.log("launch application control failed. reason: " + e.message); },
    null );
명시적 실행에서 애플리케이션 ID만 실행해야 할 애플리케이션을 결정하는 데 중요합니다.
//Create a service.
var appControl = new
	tizen.ApplicationControl("http://tizen.org/appcontrol/operation/pick", null, "IMAGE/*");
var appControlReplyCallback = {
// callee now sends a reply onsuccess:
function(data) {
for(var i=0; i < data.length; i++) {
console.log("#"+i+" key:"+data[i].key);
for(var j=0; j < data[i].value.length; j++) {
console.log("value#"+j+":"+data[i].value[j]); } } }, // Something went wrong onfail:
function() {
console.log('The launch application control failed'); } }
//Launch a service.
tizen.application.launchAppControl(appControl, null,
function() {console.log("launch application control succeed");
},
function(e) {
console.log("launch application control failed. reason: " + e.message); },
appControlReplyCallback );
애플리케이션 ID로 null을 전달하면 시스템은 가장 적합한 애플리케이션을 선택하거나 애플리케이션 선택기에서 애플리케이션을 보여줍니다.
  • 명시적 실행 명시적 실행의 경우 서비스 공급자의 정확한 applicationIDApplicationControl() 메서드에서 인수로 지정해야 합니다. 작업 http://tizen.org/appcontrol/operation/default는 일반적으로 다른 정보(URI, MIME 유형) 없이 다른 애플리케이션을 실행하는 데 사용됩니다.
  • 암시적 실행 애플리케이션의 정확한 애플리케이션 ID를 제공하지 않는 경우 실행 요청을 처리하는 데 적합한 사용 가능한 애플리케이션 종류를 결정하기 위해 시스템에 대한 충분한 정보를 제공해야 합니다. 실행 요청 중 3가지 특성만이 실행되는 애플리케이션 종류를 확인하는 데 사용됩니다.
    • 작업
    • URI 체계
    • MIME 유형

    시스템은 실행 요청에 적합한 사용 가능한 애플리케이션 종류를 결정하기 위한 실행 요청에 대한 세 가지 정보를 모두 비교합니다. 지정된 모든 정보는 설치된 애플리케이션에서 내보낸 서비스 설명 중 하나와 일치하는 경우에만 실행 요청이 확인됩니다. 애플리케이션 제어 데이터는 실행 요청을 확인하는 데 사용되지 않습니다. 아래의 예제에서 시스템의 이미지 목록에서 이미지 파일을 "선택"할 수 있도록 애플리케이션을 요청 중입니다.

 

 

서비스 제공

애플리케이션이 여러 서비스를 제공하도록 하려면 config.xml 파일에서 이러한 서비스를 선언해야 합니다. 각 서비스 설명은 작업, URI 체계 및 MIME 유형을 지정합니다.

  • src- 요청을 처리하는 페이지입니다. 
  • operation- 작업의 식별자입니다.
  • mime- 허용된 MIME 유형입니다.
  • scheme- 요청 애플리케이션이 작업 개체를 설명하는 데 사용할 수 있는 프로토콜(예: "tel", "http")입니다.

아래의 예제에서 이미지 선택기 서비스를 제공하고 있습니다. 시스템이 서비스를 실행하는 경우 image_selection_service.html 파일이 로드됩니다.

서비스 공급자 애플리케이션이 서비스를 종료하면 제공한 서비스 결과와 함께 요청 애플리케이션으로 컨트롤을 다시 전달해야 합니다. 이 작업을 수행하려면 서비스 공급자 애플리케이션의 tizen.application.getRequestedAppControl() 메서드를 호출하여 launchAppControl() 메서드에 전달된 RequestedApplicationControl 개체 참조를 가져옵니다.

요청 애플리케이션으로 컨트롤을 다시 전달하려면 reqAppControl.replyResult() 메서드(성공한 경우) 또는 RequestedApplicationControl 개체의 reqAppControl.replyFailure() 메서드(실패한 경우)를 호출합니다. 출력/결과는 ApplicationControlData 개체의 배열이 포함된 매개 변수로서 reqAppControl.replyResult() 메서드로 전달됩니다. ApplicationControlDataArrayReplyCallback.onsuccess() 메서드는 요청 애플리케이션에서 호출됩니다.

//This function is invoked once the html is loaded.
function onLoad() {
	var reqAppControl = tizen.application.getCurrentApplication().getRequestedAppControl();
    if (reqAppControl) {
        var processedData = processData(reqAppControl.appControl);
            reqAppControl.replyResult(processedData);
        }
    }

 

 

애플리케이션 관리

애플리케이션 API는 애플리케이션 수명 주기를 제어할 수 있는 애플리케이션 인터페이스를 제공합니다.

애플리케이션 종료

tizen.application.exit() 메서드는 현재 애플리케이션을 종료하는 데 사용됩니다.

 var app = tizen.application.getCurrentApplication();
 app.exit();

애플리케이션 숨기기

tizen.application.hide() 메서드는 현재 애플리케이션을 백그라운드로 보내는 데 사용됩니다.

 var app = tizen.application.getCurrentApplication();
 app.hide();

 

 

설치된 애플리케이션 목록 검색

tizen.application.getAppsInfo() 메서드를 사용하여 장치에 설치된 애플리케이션 목록을 가져올 수 있습니다. 메서드는 success 콜백(작업 성공 시 호출됨) 및 error 콜백(작업 실패 시 호출됨)의 두 가지 인수를 사용하며 설치된 애플리케이션의 배열은 success 콜백 인수로서 반환됩니다.

success 콜백은 ApplicationInformation 개체의 배열을 수신하고 각 개체에는 다음 특성이 포함되어 있습니다.

  • id- 애플리케이션의 식별자입니다.
  • name- 애플리케이션의 이름입니다.
  • iconPath- 애플리케이션의 아이콘 경로입니다.
  • version- 애플리케이션 버전입니다.
  • show- 애플리케이션 표시 여부를 알립니다.
function onListInstalledApps(applications) {
     for (var i = 0; i < applications.length; i++)
         addToApplicationGrid(applications[i]);
	 console.log('Application ID: ' + appInfo.id);
         console.log('Icon Path: ' + appInfo.iconPath);
         console.log('Name: ' + appInfo.name);
         console.log('Version: ' + appInfo.version);
         console.log('Show: ' + appInfo.show);
         console.log('');
 }
 tizen.application.getAppsInfo(onListInstalledApps);

 

 

애플리케이션 정보 검색

tizen.application.getAppInfo() 메서드는 애플리케이션 ID에 의해 식별되는 애플리케이션에 대한 애플리케이션 정보를 가져오는 데 사용됩니다. 애플리케이션 ID가 설정되지 않은 경우 호출 애플리케이션 정보를 가져옵니다.

  var appInfo = tizen.application.getAppInfo("org.tizen.application");
애플리케이션 ID를 전달하고 있지 않은 경우 호출 애플리케이션 정보를 가져옵니다.

 

 

실행 중인 애플리케이션 목록 검색

tizen.application.getAppsContext() 메서드를 사용하여 장치의 실행 애플리케이션 목록을 가져올 수 있습니다. 메서드는 success
콜백(작업 성공 시 호출됨) 및 error 콜백(작업 실패 시 호출됨)의 두 가지 인수를 사용하며 실행 애플리케이션의 배열은
success 콜백 인수로서 반환됩니다.

success 콜백은 ApplicationContext 개체의 배열을 수신하며 각 개체에는 다음 특성이 포함되어 있습니다.

  • id- 실행 애플리케이션의 식별자입니다.
  • name- 설치된 애플리케이션의 식별자입니다.
 tizen.application.getAppsContext(onRunningAppsContext);
  function onsuccess(contexts) {
    for (var i = 0; i < contexts.length; i++)
        addToTaskManager(contexts[i]);
        console.log('Application ID: ' + contextInfo.appId);
        console.log('Context ID: ' + contextInfo.id);
        console.log('');
  }
tizen.application.getAppsContext(onsuccess, onError);

 

 

애플리케이션 컨텍스트 검색

tizen.application.getAppContext() 메서드는 컨텍스트 ID에 의해 식별되는 애플리케이션에 대한 컨텍스트 정보를 가져오는 데 사용됩니다. 컨텍스트 ID가 설정되지 않은 경우 호출 애플리케이션 정보를 가져옵니다.

var appContext = tizen.application.getAppContext(null);
 console.log("Application context retrieved for app " + appContext.id);
컨텍스트 ID를 전달하고 있지 않는 경우 호출 애플리케이션 정보를 가져옵니다.

 

 

알림 수신

애플리케이션 인터페이스는 장치에 설치된 애플리케이션 목록에서 수정에 대한 알림을 제공하는 메서드 및 이벤트 리스너를 제공합니다.

애플리케이션은 애플리케이션 정보 이벤트 발생 시 알림을 수신할 수 있습니다. 설치, 제거, 제공된 애플리케이션 업데이트의 3가지 종류의 애플리케이션 정보 이벤트가 있습니다.

이벤트 리스너 등록

tizen.application.addAppInfoEventListener() 메서드를 사용하면
장치에 설치된 애플리케이션 목록의 변경 사항을 처리하는 이벤트 리스너를 등록할 수 있습니다. 이 메서드는 이벤트 발생 시 호출되는 ApplicationInformationEventCallback 및 오류 발생 시 호출되는 ErrorCallback의 두 가지 인수를 사용합니다.

ApplicationInformationEventCallback 개체는 다음 기능으로 구성됩니다.

 
함수 인수 함수 설명 인수 설명
oninstalled ApplicationInformation
개체
애플리케이션
설치 시 호출됨
설치된
애플리케이션에 대한 정보
onupdated ApplicationInformation
개체
애플리케이션
업데이트 시 호출됨
설치된
애플리케이션에 대한 정보
onuninstalled 애플리케이션 식별자 애플리케이션
제거 시 호출됨
제거된
애플리케이션 식별자
var appEventCB = {
	oninstalled: function(application) {
        console.log('Application ' + application.name + ' installed');
	},
	onupdated: function(application) {
        console.log('Application ' + application.name + ' updated');
	},
	onuninstalled: function(appid) {
        console.log('Application ' + appid + ' uninstalled');
	}
};

var listenerID = tizen.application.addAppInfoEventListener(appEventCB);
등록된 이벤트 리스너는 필요한 경우 나중에 리스너를 제거하는 데 사용할 수 있는 긴 식별자로 할당됩니다.

이벤트 리스너 제거

tizen.application.removeAppInfoEventListener() 메서드는
장치에 설치된 애플리케이션 목록에서 변경 사항을 처리하는 이벤트 리스너를 제거하는 데 사용됩니다.

var appEventCB = {
    oninstalled: function(application) {
        console.log('Application ' + application.name + ' installed');
    },
    onupdated: function(application) {
        console.log('Application ' + application.name + ' updated');
    },
    onuninstalled: function(appid) {
        console.log('Application ' + appid + ' uninstalled');
    }
};

var listenerID = tizen.application.addAppInfoEventListener(appEventCB);
tizen.application.removeAppInfoEventListener(listenerID);

 

 

첨부 파일: