콘텐츠 (Contents)
1. 메서드
init (SDK 초기화)
⚠️ SDK에서 제공하는 모든 기능은 init 메서드를 통해 초기화가 완료된 이후에 사용할 수 있습니다. 반드시 해당 함수의 실행이 완료된 이후 SDK 기능을 사용해주세요.
Vanilla JS example
<script defer>
document.addEventListener('DOMContentLoaded', function () {
// EliceCDK SDK 초기화
var cdk = new EliceCDK();
var rootEl = document.getElementById('root') || document.body;
cdk
.init()
.then(function () {
// SDK 초기화 완료
renderApp();
})
.catch(function () {
// SDK 초기화 실패
console.error('SDK 초기화 실패');
});
function renderApp() {
// App 컴포넌트 내용
var appContent = '<div>Hello, world!';
// root 요소에 App 컴포넌트 내용 추가
rootEl.innerHTML = appContent;
}
});
</script>
React example
// main.tsx
import { EliceCDK } from '@eliceio/cdk';
const cdk = new EliceCDK();
const rootEl = document.getElementById('root') ?? document.body;
const root = createRoot(rootEl);
cdk
.init()
.then(() => {
// SDK 초기화 완료
return root.render(
<React.StrictMode>
<App />
</React.StrictMode>
);
})
.catch(() => {
// SDK 초기화 실패
});
설치된 SDK에서 제공하는 init() 함수를 사용하여 SDK를 초기화합니다.
-
해당 함수는 기본적으로
window.location.search를 통해 URL에 포함된 쿼리스트링을 파싱하여 엘리스 플랫폼과 연동하기 위한 정보인materialId,extToken을 추출합니다.// src/constants.tsimport { EliceCDK } from '@eliceio/cdk';export const cdk = new EliceCDK();cdk.init(); // 쿼리스트링에서 추출하여 초기화합니다. -
window.location.search에서 연동하기 위한 정보를 제공하기 어려울 경우,
init()함수에search인자를 통해 직접 정보를 제공할 수 있습니다.cdk.init({search: queryString.stringify({materialId: 100,extToken: '...',}),}); -
baseUrl은 기본적으로 엘리스 플랫폼 production 환경에 설정되어 있습니다. 테스트 환경에서 사용하려면 baseUrl을 인자로 설정해주세요.
cdk.init({baseUrl: 'https://dev-v4-external-contents-api.dev.elicer.io',});
sendScore (엘리스 플랫폼으로 점수 전달)
콘텐츠를 사용자가 모두 완료하였을 때, 점수를 엘리스 플랫폼으로 전달하도록 구성합니다.
-
콘텐츠가 왼료되는 시점에
@eliceio/cdk에서 제공하는sendScore()함수를 호출합니다. 함수에는score라는 인자 값이 필요로 하며, 일반적으로 콘텐츠를 완료하였을 때에는100을 보내도록 합니다.import { cdk } from './path/to/cdk';cdk.sendScore({ score: 100 }); // 100점을 엘리스 플랫폼으로 전달 -
상기 설명과 같이 콘텐츠를 엘리스 수업 자료로 설정하였다면, 수업 자료의 점수가 그림과 같이 100점이 되는지 확인합니다.
postKeyValue (엘리스 플랫폼에 실습 변경사항 저장)
학생의 콘텐츠 변경사항을 엘리스 플랫폼에 저장하기 위해서는 @eliceio/cdk에서 제공하는 postKeyValue() 함수를 사용합니다. 해당 함수는 key와 value를 저장하는 역할을 합니다.
import { cdk } from './path/to/cdk';
await cdk.postKeyValue({
key: 'quiz01.answer', // key는 항상 camelCase로 작성되어야 히며,
// 영문자 및 숫자로만 작성되어야 합니다. (`[a-zA-Z0-9]+]`)
value: '엘리스', // value의 가능한 타입은 string, number, boolean, object, array 이며,
// object의 key는 항상 camelCase로 작성되어야 합니다.
});
⚠️ 실습 변경사항은 각 사용자 및 수업 자료마다 별도로 저장되며, 타 유저 혹은 수업 자료에는 영향을 주지 않습니다.
⚠️ key 및 value 작성 규칙
- key는 항상 camelCase로 작성되어야 히며, 영문자 및 숫자로만 작성되어야 합니다. (
[a-zA-Z0-9]+])- value의 가능한 타입은 string, number, boolean, object, array 이며, object의 key는 항상 camelCase로 작성되어야 합니다.
getKeyValue (엘리스 플랫폼에 실습 변경사항 조회)
학생의 콘텐츠 변경사항을 불러올 떄에는 @eliceio/cdk에서 제공하는 getKeyValue() 함수를 사용합니다. 해당 함수는 key에 해당하는 value를 불러옵니다.
import { cdk } from './path/to/cdk';
const value = await cdk.getKeyValue({
key: 'quiz01.answer',
});
console.log(value); // "엘리스"
// 혹은 다음과 같이 키의 일부만 입력하여 해당 키의 하위 키들을 모두 불러올 수 있습니다.
// 구분자는 항상 '.'(dot)으로 작성되어야 합니다.
const value = await getKeyValue({
key: 'quiz01',
});
console.log(value); // { answer: "엘리스" }
delete (key-value 삭제)
이 메서드는 Key-Value 저장소에서 키-값 쌍을 삭제하는 데 사용됩니다.
파라미터
| 이름 | 타입 | 설명 |
|---|---|---|
key | string | kvstore에서 삭제할 데이터의 고유한 키를 의미합니다. |
JavaScript 예제
import { cdk } from './path/to/cdk';
const deleteButton = document.createElement('button');
const handleDelete = async () => {
await cdk.kvstore.delete('quiz01.answer');
const value = await cdk.kvstore.get('quiz01.answer');
console.log(value); // null
};
deleteButton.addEventListener('click', handleDelete);
deleteButton.click();
React 예제
import { cdk } from './path/to/cdk';
import { useState } from 'react';
const App = () => {
const [value, setValue] = useState(null);
const handleDelete = async () => {
await cdk.kvstore.delete('quiz01.answer');
const value = await cdk.kvstore.get('quiz01.answer');
setValue(value);
};
return (
<div>
<button onClick={handleDelete}>Delete</button>
{value === null ? 'Deleted' : value}
);
};
displayAutoLanguageOptions ( 언어 옵션 표시)
콘텐츠에서 언어 옵션을 표시하려면 @eliceio/cdk에서 제공하는 displayAutoLanguageOptions() 함수를 사용할 수 있습니다. 현재 지원되는 언어는 다음과 같습니다:
- 한국어
- 영어
- 일본어
- 태국어
예제
import { cdk } from './path/to/cdk';
cdk.init().then(() => {
cdk.displayAutoLanguageOptions().then(() => {
console.log('언어 옵션이 표시 되었습니다');
});
});
2. 속성
account (계정 정보)
⚠️
account.accountId속성은 v1.0.0 버전부터 삭제될 예정입니다. 대신account.uid를 사용해주세요.
다음은 Elice 플랫폼에 로그인한 계정의 정보를 조회할 수 있는 속성입니다. 계정 정보에는 다음과 같은 속성이 포함됩니다:
| 이름 | 유형 | 설명 |
|---|---|---|
uid | number | 계정의 고유 식별자입니다. |
fullname | string | 계정의 이름입니다. |
isTutorAccount | boolean | 계정이 튜터 계정인지 여부입니다. |
import { cdk } from './path/to/cdk';
console.log(cdk.account); // { accountId: '550e8400-e29b-41d4-a716-446655440000', fullname: 'elice', uid: 123 }