webOS Article/2. Luna Service 활용하기

Luna Service API 호출하기(by Enact App)

cstleb 2021. 7. 24. 17:35

LS2 API 호출하기


1. Permission 추가하기

먼저 아래의 명령어를 입력해 target device의 shell에 접속합니다.

> ares-shell -d <target device>

Luna Service API를 사용하기 위해서는 <project name>\webos-meta\appinfo.json 파일에서 requiredPermissions를 추가해야 합니다.

각 API마다 추가할 내용이 달라지기 때문에 아래의 코드를 입력해 확인해 줍니다.

> ls-moniter -i com.webos.notification

 

저희는 notification API의 createToast를 사용할 예정이기 때문에 위와 같은 코드를 추가해야합니다.

{
	"id": "com.enact.lsapp",
	"version": "1.0.0",
	"vendor": "cosmos",
	"type": "web",
	"main": "index.html",
	"title": "Enact LS Demo",
	"icon": "icon.png",
	"miniicon": "icon-mini.png",
	"largeIcon": "icon-large.png",
	"uiRevision": 2,
	"requiredPermissions": [
		"time.query",
		"activity.operation",
		"notification.operation"
	]
}

appinfo.json파일을 위와 같이 수정합니다.

 

2. API 사용하기

이제 본격적으로 MainPanel.js에서 개발을 시작합니다.

저희는 버튼을 누르면 Toast Alarm이 호출되는 간단한 어플리케이션을 개발할 것입니다.

import LS2Request from '@enact/webos/LS2Request';

우선 webOS 플랫폼에서 LS2 API를 사용하기 위하여 위의 명령어를 코드의 맨 윗줄에 입력해 import해줍니다.

자세한 내용은 enact 공식 홈페이지에서 확인할 수 있습니다: https://enactjs.com/docs/modules/webos/LS2Request/

 

const MainPanel = kind({
   name: 'MainPanel',

   render: (props) => (
      <Panel {...props}>
         <Header title="Hello world!" />
         <Button onClick={creatToast}>Click me</Button>
      </Panel>
   )
});

기본 Template 앱에 있는 버튼에 onClick 속성을 추가해 버튼을 누르면 Toast 알람이 실행되도록 createToast 코드를 작성합니다.

 

webOS OSE 2.0부터는 WebOSServiceBridge Object를 사용하도록 변경되었기 때문에 아래와 같이 object로 변수를 선언합니다. 이에 대해 자세한 내용은 이전 포스팅인 https://webos-supporters.tistory.com/20 을 참고해주시기 바랍니다.

var webOSBridge = new LS2Request();

 

createToast 코드는 다음과 같습니다.

const creatToast = () => {
   var parms = {
      "message": "This is Toast Alarm"
   }

   var lsRequest = {
      "service":"luna://com.webos.notification",
      "method":"createToast",
      "parameters": parms,
      "onSuccess": onToastSuccess,
      "onFailure": onToastFailure
   };
   webOSBridge.send(lsRequest);   
}

위 enact 페이지를 참고하여 LS2 method에 요청을 보내기 위한 option들을 lsRequest 변수에 저장합니다.

"service" key에는 LS2서비스의 이름을 써주고, "method"에는 사용할 method의 이름을 적어줍니다.
그리고 그 외 필요에 따른 파라미터와 함수들을 넣어줍니다.

notification API의 createToast를 사용할 것이기 때문에 해당 파라미터 중 필수로 요구되는(Required) message 파라미터를 parms 변수에 저장합니다. 

다른 옵션들은 https://www.webosose.org/docs/reference/ls2-api/com-webos-notification/ 에서 확인할 수 있습니다.

 

디버깅을 위한 코드를 아래와 같이 추가했습니다.

const onToastSuccess = (msg) => {
   console.log(msg);
}

const onToastFailure = (msg) => {
   console.log(msg);
}

성공 시의 msg와 실패 시의 msg를 띄워줍니다.

 

전체 코드의 작성이 끝났습니다.

확인: 

더보기
import Button from '@enact/sandstone/Button';
import kind from '@enact/core/kind';
import {Panel, Header} from '@enact/sandstone/Panels';
import LS2Request from '@enact/webos/LS2Request';

var webOSBridge = new LS2Request();

const onToastSuccess = (msg) => {
   console.log(msg);
}

const onToastFailure = (msg) => {
   console.log(msg);
}

const creatToast = () => {
   var parms = {
      "message": "This is Toast Alarm"
   }

   var lsRequest = {
      "service":"luna://com.webos.notification",
      "method":"createToast",
      "parameters": parms,
      "onSuccess": onToastSuccess,
      "onFailure": onToastFailure
   };
   webOSBridge.send(lsRequest);   
}

const MainPanel = kind({
   name: 'MainPanel',

   render: (props) => (
      <Panel {...props}>
         <Header title="Hello world!" />
         <Button onClick={creatToast}>Click me</Button>
      </Panel>
   )
});

export default MainPanel;

 

3. APP 실행하기

개발이 끝난 어플리케이션을 패키징하고 설치합니다.

참고: https://webos-supporters.tistory.com/14

패키징과 설치 과정을 거쳐 만든 어플리케이션을 실행하면 다음과 같은 결과가 나타납니다.

어플리케이션이 설치된 모습입니다.

Click Me 버튼을 누르면 위와 같은 모습으로 Toast 알람이 실행됩니다.

 

성공 !

'webOS Article > 2. Luna Service 활용하기' 카테고리의 다른 글

TTS 활용하여 음성 출력하기  (0) 2021.08.24
media 불러오기  (0) 2021.08.14
Database 사용하기 (DB8)  (0) 2021.08.14
Luna Service API 이용하기  (0) 2021.07.24
Luna Service API란 무엇인가?  (0) 2021.07.24