nachocode-client-sdk
Version:
Nachocode Client SDK
314 lines (228 loc) โข 14.4 kB
Markdown
# ๐ฆ nachocode Client SDK





<!-- markdownlint-disable MD033 -->
<p align="center">
<img src="https://cdn.nachocode.io/common/assets/images/logo.png" width="130" alt="Nachocode Logo" style="margin-top: 50px; margin-left: 150px" />
</p>
<p align="center">
<img src="https://cdn.nachocode.io/common/assets/images/character.png" width="170" alt="Nachocode Character" style="margin-bottom: 30px;"/>
</p>
<!-- markdownlint-enable MD033 -->
> ๐ **์ต์ ํ ์ผ์:** _2025-07-31_
## ๋ชฉ์ฐจ
- [๐ฆ nachocode Client SDK](#-nachocode-client-sdk)
- [๋ชฉ์ฐจ](#๋ชฉ์ฐจ)
- [๊ฐ์](#๊ฐ์)
- [์ค์น](#์ค์น)
- [์ฌ์ฉ๋ฒ](#์ฌ์ฉ๋ฒ)
- [1๏ธโฃ `NachoProvider`, `useNachocodeContext` (React Context ๋ฐฉ์)](#1๏ธโฃ-nachoprovider-usenachocodecontext-react-context-๋ฐฉ์)
- [2๏ธโฃ `useNachocode` (React Hook ๋ฐฉ์)](#2๏ธโฃ-usenachocode-react-hook-๋ฐฉ์)
- [`useNachocode()` ๋ฐํ๊ฐ](#usenachocode-๋ฐํ๊ฐ)
- [3๏ธโฃ `loadNachocode` ์ง์ ์ฌ์ฉ](#3๏ธโฃ-loadnachocode-์ง์ -์ฌ์ฉ)
- [SDK ์ด๊ธฐํ ์ต์
(`InitializeOptions`)](#sdk-์ด๊ธฐํ-์ต์
-initializeoptions)
- [SDK ๋ฒ์ ๊ด๋ฆฌ](#sdk-๋ฒ์ -๊ด๋ฆฌ)
- [SDK ๊ธฐ๋ฅ ์ฌ์ฉ](#sdk-๊ธฐ๋ฅ-์ฌ์ฉ)
- [๋ค์์คํ์ด์ค ์๊ฐ](#๋ค์์คํ์ด์ค-์๊ฐ)
- [๊ธฐ์ฌ์](#๊ธฐ์ฌ์)
- [๊ธฐ์ฌํ๊ธฐ](#๊ธฐ์ฌํ๊ธฐ)
- [๋ผ์ด์ ์ค](#๋ผ์ด์ ์ค)
---
## ๊ฐ์
**nachocode Client SDK**๋ **์น ๊ฐ๋ฐ์๋ค์ด ๋ค์ดํฐ๋ธ ์ฑ์ ๊ณ ์ ๊ธฐ๋ฅ์ ์์ฝ๊ฒ ํ์ฉํ ์ ์๋๋ก ๋๋ SDK**์
๋๋ค.
์ด ๋ฌธ์๋ **SDK์ ์ค์น, ์ด๊ธฐํ, ์ฃผ์ ๊ธฐ๋ฅ ๋ฐ ์ฌ์ฉ ๋ฐฉ๋ฒ** ๋ฑ์ ์๋ดํฉ๋๋ค.
- [๊ณต์ ๋ฌธ์ ๋ฐ๋ก๊ฐ๊ธฐ](https://developer.nachocode.io/docs/sdk/intro)
---
## ์ค์น
```bash
npm install nachocode-client-sdk
```
๋๋
```bash
yarn add nachocode-client-sdk
```
---
## ์ฌ์ฉ๋ฒ
nachocode Client SDK๋ ์ธ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
### 1๏ธโฃ `NachoProvider`, `useNachocodeContext` (React Context ๋ฐฉ์)
- ์ ํ๋ฆฌ์ผ์ด์
์ ์ฒด์์ `Nachocode`๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก `Provider` ํจํด์ ์ ๊ณตํฉ๋๋ค.
- `useNachocodeContext` ํ
์ ์ฌ์ฉํ์ฌ `Nachocode` ๊ฐ์ฒด์ ์ ๊ทผํ ์ ์์ต๋๋ค.
```jsx
import { NachoProvider, useNachocodeContext } from 'nachocode-client-sdk';
function MyComponent() {
const { Nachocode, isLoading, isError, error } = useNachocodeContext();
if (isLoading) return <p>Loading...</p>;
if (isError) return <p>Error: {error.message}</p>;
return <p>Nachocode SDK ์ฌ์ฉ ๊ฐ๋ฅ!</p>;
}
export default function App() {
return (
<NachoProvider apiKey="your-api-key-here">
<MyComponent />
</NachoProvider>
);
}
```
### 2๏ธโฃ `useNachocode` (React Hook ๋ฐฉ์)
- ํน์ `Component`์์๋ง `Nachocode`๋ฅผ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด `useNachocode` ํ
์ ์ฌ์ฉํ์ฌ `Nachocode` ๊ฐ์ฒด์ ์ ๊ทผํ ์ ์์ต๋๋ค.
```jsx
import { useNachocode } from 'nachocode-client-sdk';
export default function MyComponent2() {
const { Nachocode, isLoading, isError, error } = useNachocode('test-key');
if (isLoading) return <p>Loading...</p>;
if (isError) return <p>Error: {error.message}</p>;
return <p>Nachocode SDK ์ฌ์ฉ ๊ฐ๋ฅ!</p>;
}
```
#### `useNachocode()` ๋ฐํ๊ฐ
| ๋ฐํ๊ฐ | ์ค๋ช
|
| ----------- | --------------------------------------------- |
| `Nachocode` | Nachocode SDK ๊ฐ์ฒด |
| `isLoading` | SDK ๋ก๋ฉ ์ํ (`true` ๋๋ `false`) |
| `isError` | SDK ์๋ฌ ์ฌ๋ถ (`true` ๋๋ `false`) |
| `error` | SDK ๋ก๋ ์ค ๋ฐ์ํ ์๋ฌ (`Error` ๋๋ `null`) |
### 3๏ธโฃ `loadNachocode` ์ง์ ์ฌ์ฉ
- React ์ธ๋ถ์์๋ `loadNachocode` ํจ์๋ฅผ ์ง์ ํธ์ถํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค.
```jsx
import { loadNachocode } from 'nachocode-client-sdk';
async function initSDK() {
try {
const Nachocode = await loadNachocode('your-api-key-here');
console.log('Nachocode SDK ๋ก๋ ์๋ฃ:', Nachocode);
} catch (error) {
console.error('Nachocode SDK ๋ก๋ ์คํจ:', error);
}
}
initSDK();
```
---
## SDK ์ด๊ธฐํ ์ต์
(`InitializeOptions`)
nachocode Client SDK๋ ์ด๊ธฐํ ์ ์ ํ์ ์ผ๋ก ์ต์
์ ์ค์ ํ ์ ์์ต๋๋ค.
์ด๊ธฐํ ์ต์
์ `NachoProvider`, `loadNachocode` ๋ ๋ฐฉ์์์ ๋ชจ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
1. `NachoProvider` ๋ฐฉ์์์ `options` ์ฌ์ฉ
- `NachoProvider`์ `apiKey`์ ํจ๊ป `options`๋ฅผ ์ ๋ฌํ ์ ์์ต๋๋ค:
```jsx
<NachoProvider
apiKey="your-api-key"
options={{ sandbox: true, logger: true }}
>
<YourComponent />
</NachoProvider>
```
2. `loadNachocode` ์ง์ ํธ์ถ ์ `options` ์ฌ์ฉ
- ๋น React ํ๊ฒฝ ๋๋ ์๋์ผ๋ก ์ด๊ธฐํํ๊ณ ์ถ์ ๋ ์ฌ์ฉํฉ๋๋ค:
```jsx
loadNachocode('your-api-key', {
sandbox: true,
logger: true,
});
```
| ์ต์
์ด๋ฆ | ํ์
| ์ค๋ช
|
| --------- | ------- | -------------------------------------------------------------------- |
| `sandbox` | boolean | โ
์๋๋ฐ์ค ํ๊ฒฝ์์ ํ
์คํธ ์ `true`๋ก ์ค์ |
| `logger` | boolean | โ
์ฝ์ ๋ก๊ทธ๋ฅผ ํตํด SDK ๋ด๋ถ ๋์์ ๋๋ฒ๊น
ํ๊ณ ์ถ์ ๋ `true`๋ก ์ค์ |
- `logger`๋ ๊ธฐ๋ณธ์ ์ผ๋ก true๋ก ์ค์ ๋์ด ์์ผ๋ฉฐ, ๊ฐ๋ฐ ์ค ๋๋ฒ๊น
์ ์ ์ฉํฉ๋๋ค.
- `sandbox`๋ ์ค์ ์ด์ API๊ฐ ์๋ ํ
์คํธ ์๋ฒ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ ์ฉํฉ๋๋ค.
---
## SDK ๋ฒ์ ๊ด๋ฆฌ
์ต์ ๋ฒ์ ๋ก๋ (๊ธฐ๋ณธ)
- ์ต์ ๋ฒ์ ์ SDK๋ฅผ ํญ์ ์ ์งํ๋ ค๋ฉด ์๋ ์ฝ๋๋ฅผ ์ฌ์ฉํ์ธ์
- ํ์ฌ ์ต์ ๋ฒ์ v.1.6.3
```jsx
loadNachocode('your-api-key'); // ์ต์ ๋ฒ์ ์ด ์๋์ผ๋ก ๋ก๋๋จ
```
ํน์ ๋ฒ์ ์ง์
- ํน์ ๋ฒ์ ์ผ๋ก ๊ณ ์ ํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํฉ๋๋ค
```jsx
loadNachocode('your-api-key', options, '1.6.3');
```
> ๐ข ์ต์ ๋ฒ์ ์ฌ์ฉ์ด ๊ถ์ฅ๋๋ฉฐ, ํน์ ๋ฒ์ ๊ณ ์ ์ ํธํ์ฑ์ด ์ค์ํ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉํ์ธ์.
---
## SDK ๊ธฐ๋ฅ ์ฌ์ฉ
- nachocode Client SDK๊ฐ ์ด๊ธฐํ๊ฐ ์๋ฃ๋๋ฉด, `Nachocode` ๋ค์์คํ์ด์ค ์๋์ ์ ์๋ ๋ค์ํ ๋ค์ดํฐ๋ธ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์๋ ์์๋ SDK์ ์ผ๋ถ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค.
- **์ฑ ์ ๋ณด ๊ฐ์ ธ์ค๊ธฐ**
```jsx
const appName = Nachocode.app.getAppName();
console.log(`์ฑ ์ด๋ฆ: ${appName}`); // ex. "Nachocode Developer"
```
- **๋๋ฐ์ด์ค ์ ๋ณด ํ์ธ**
```jsx
Nachocode.device.getDeviceModel(model => {
console.log(`๋๋ฐ์ด์ค ๋ชจ๋ธ: ${model}`);
});
```
- ๋๋ถ๋ถ์ ๊ธฐ๋ฅ์ ์น ์คํํ๊ฒฝ์์ ๋ฌด์๋๊ณ , ์ฑ ์คํํ๊ฒฝ์์ ์ ์ ์๋ํฉ๋๋ค.
---
## ๋ค์์คํ์ด์ค ์๊ฐ
nachocode Client SDK๋ ๊ฐ ๊ธฐ๋ฅ๋ณ๋ก **๋ค์์คํ์ด์ค(namespace)** ๋ก ๊ตฌ๋ถ๋์ด ์์ต๋๋ค.
์๋๋ ์ฃผ์ ๋ค์์คํ์ด์ค์ ๋ชฉ๋ก๊ณผ ์ค๋ช
์
๋๋ค. ๊ฐ ๋ค์์คํ์ด์ค์ ๋ํ ์์ธํ ๋ฌธ์๋ **๋ฌธ์ ๋งํฌ**์์ ํ์ธํ์ธ์.
| **๋ค์์คํ์ด์ค** | **์ค๋ช
** | **๋ฌธ์ ๋งํฌ** |
| ---------------- | -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------ |
| `app` | ์ฑ ์ด๋ฆ, ๋ฒ์ , ํจํค์ง ์ด๋ฆ ๋ฑ์ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค. | [์ฑ ๋ฌธ์](https://developer.nachocode.io/docs/sdk/namespaces/app) |
| `apple` | Apple ๊ณ์ ์ ํตํ ์์
๋ก๊ทธ์ธ ๊ธฐ๋ฅ ๋ฑ์ ์ ๊ณตํฉ๋๋ค. | [Apple ๋ฌธ์](https://developer.nachocode.io/docs/sdk/namespaces/apple) |
| `authentication` | ์์ฒด ์ธ์ฆ(Fingerprint/Face ID) ๋ฑ์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. | [์ธ์ฆ ๋ฌธ์](https://developer.nachocode.io/docs/sdk/namespaces/authentication) |
| `backkey` | Android ๋๋ฐ์ด์ค์ ๋ค์ดํฐ๋ธ ๋ฐฑ ํค ์ด๋ฒคํธ๋ฅผ ์ ์ดํ ์ ์์ต๋๋ค. | [๋ฐฑ ํค ๋ฌธ์](https://developer.nachocode.io/docs/sdk/namespaces/backkey) |
| `browser` | ์ธ๋ถ ๋๋ ๋ด๋ถ ๋ธ๋ผ์ฐ์ ๋ก URL์ ์ด ์ ์์ต๋๋ค. | [๋ธ๋ผ์ฐ์ ๋ฌธ์](https://developer.nachocode.io/docs/sdk/namespaces/browser) |
| `clipboard` | ํ
์คํธ๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌํ๊ฑฐ๋ ์ฝ์ ์ ์์ต๋๋ค. | [ํด๋ฆฝ๋ณด๋ ๋ฌธ์](https://developer.nachocode.io/docs/sdk/namespaces/clipboard) |
| `device` | ๋๋ฐ์ด์ค ๋ชจ๋ธ, OS ๋ฒ์ , ๋ฐฐํฐ๋ฆฌ ๋ฐ ๋คํธ์ํฌ ์ํ ๋ฑ์ ํ์ธํฉ๋๋ค. | [๋๋ฐ์ด์ค ๋ฌธ์](https://developer.nachocode.io/docs/sdk/namespaces/device) |
| `env` | SDK ์ด๊ธฐํ ์ํ, ์คํ ํ๊ฒฝ(์น/์ฑ) ๋ฑ์ ํ์ธํ ์ ์์ต๋๋ค. | [ํ๊ฒฝ ๋ฌธ์](https://developer.nachocode.io/docs/sdk/namespaces/env) |
| `event` | ์ด๊ธฐํ, ํฌ๊ทธ๋ผ์ด๋/๋ฐฑ๊ทธ๋ผ์ด๋ ์ ํ, ๋คํธ์ํฌ ์ํ ๋ณ๊ฒฝ ๋ฑ์ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค. | [์ด๋ฒคํธ ๋ฌธ์](https://developer.nachocode.io/docs/sdk/namespaces/event) |
| `facebook` | Facebook ์์
๋ก๊ทธ์ธ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. | [Facebook ๋ฌธ์](https://developer.nachocode.io/docs/sdk/namespaces/facebook) |
| `google` | Google ์์
๋ก๊ทธ์ธ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. | [Google ๋ฌธ์](https://developer.nachocode.io/docs/sdk/namespaces/google) |
| `iap` | Google Play ๋ฐ Apple App Store ์ธ์ฑ ๊ฒฐ์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. | [์ธ์ฑ ๊ฒฐ์ ๋ฌธ์](https://developer.nachocode.io/docs/sdk/namespaces/iap) |
| `kakao` | Kakao ์์
๋ก๊ทธ์ธ ๋ฐ ๊ณต์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. | [Kakao ๋ฌธ์](https://developer.nachocode.io/docs/sdk/namespaces/kakao) |
| `location` | ํ์ฌ ๋๋ฐ์ด์ค ์์น์ ๊ฒฝ๋, ์๋๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. | [Location ๋ค์์คํ์ด์ค](https://developer.nachocode.io/docs/sdk/namespaces/location) |
| `permission` | ์นด๋ฉ๋ผ, ์์น, ํธ์ ์๋ฆผ ๋ฑ ๋๋ฐ์ด์ค ๊ถํ์ ์์ฒญํ๊ณ ์ํ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. | [๊ถํ ๋ฌธ์](https://developer.nachocode.io/docs/sdk/namespaces/permission) |
| `preference` | ์ ํ๋ฆฌ์ผ์ด์
๋ด๋ถ ์ ์ฅ์๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ ๋ฐ ๊ด๋ฆฌํฉ๋๋ค. | [๋ด๋ถ ์ ์ฅ์ ๋ฌธ์](https://developer.nachocode.io/docs/sdk/namespaces/preference) |
| `push` | ํธ์ ์๋ฆผ ํ ํฐ์ ๊ด๋ฆฌํ๊ณ Nachocode ์๋ฒ์ ๋ฑ๋กํ ์ ์์ต๋๋ค. | [ํธ์ ๋ฌธ์](https://developer.nachocode.io/docs/sdk/namespaces/push) |
| `scanner` | QR ์ฝ๋ ์ค์บ ๋ฐ ๊ธฐํ ์ค์บ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. | [์ค์บ๋ ๋ฌธ์](https://developer.nachocode.io/docs/sdk/namespaces/scanner) |
| `setting` | Pull to Refresh์ ๊ฐ์ ์ค์ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. | [์ค์ ๋ฌธ์](https://developer.nachocode.io/docs/sdk/namespaces/setting) |
| `share` | ๋ค์ดํฐ๋ธ ๊ณต์ UI๋ฅผ ํตํด URL์ ๊ณต์ ํ ์ ์์ต๋๋ค. | [๊ณต์ ๋ฌธ์](https://developer.nachocode.io/docs/sdk/namespaces/share) |
| `store` | Apple App Store, Google Play Store ์ํธ์์ฉ ๊ด๋ จ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. | [์คํ ์ด ๋ฌธ์](https://developer.nachocode.io/docs/sdk/namespaces/store) |
| `tabbar` | ์ฑ ๋ด๋ถ ํญ๋ฐ์ ํ์ ์ฌ๋ถ ๋ฐ ์ด๋์ ์ ์ดํ ์ ์์ต๋๋ค. | [ํญ ๋ฐ ๋ฌธ์](https://developer.nachocode.io/docs/sdk/namespaces/tabbar) |
| `vibration` | ๋๋ฐ์ด์ค ์ง๋ ๋ฐ ํ
ํฑ ํผ๋๋ฐฑ์ ์ ์ดํฉ๋๋ค. | [์ง๋ ๋ฌธ์](https://developer.nachocode.io/docs/sdk/namespaces/vibration) |
๋ ๋ง์ ๋ค์์คํ์ด์ค์ ์ฌ์ฉ๋ฒ์ [๊ณต์ ๋ฌธ์](https://developer.nachocode.io/docs/sdk/intro)๋ฅผ ํ์ธํ์ธ์.
---
## ๊ธฐ์ฌ์
<!-- markdownlint-disable MD033 -->
<table>
<tr>
<td align="center">
<a href="https://github.com/kyu6e2" target="_blank">
<img src="https://avatars.githubusercontent.com/kyu6e2" width="100px;" alt="Your GitHub Profile Picture"/><br>
<sub>
<b>Taekyu Park</b>
</sub>
</a>
</td>
<td align="center">
<a href="https://github.com/johnhjh" target="_blank">
<img src="https://avatars.githubusercontent.com/johnhjh" width="100px;" alt="GitHub Profile Picture"/><br>
<sub>
<b>John An</b>
</sub>
</a>
</td>
<td align="center">
<a href="https://github.com/lazy-sky" target="_blank">
<img src="https://avatars.githubusercontent.com/lazy-sky" width="100px;" alt="GitHub Profile Picture"/><br>
<sub>
<b>Ratel Kim</b>
</sub>
</a>
</td>
</tr>
</table>
<!-- markdownlint-enable MD033 -->
---
## ๊ธฐ์ฌํ๊ธฐ
nachocode Client SDK๋ฅผ ์ฌ์ฉํด์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค! ๐
๊ถ๊ธํ ์ ์ด๋ ๊ฐ์ ์ฌํญ์ด ์๋ค๋ฉด [Issues](https://github.com/FlipperCorporation/nachocode-client-sdk/issues) ๋๋ [Pull Requests](https://github.com/FlipperCorporation/nachocode-client-sdk/pulls)๋ฅผ ํตํด ๋จ๊ฒจ์ฃผ์๊ฑฐ๋,
์ธ์ ๋ ์ง [support@nachocode.io](mailto:support@nachocode.io)๋ก ๋ฌธ์๋ฅผ ๋ณด๋ด์ฃผ์ธ์. ๐
---
## ๋ผ์ด์ ์ค
์ด ํ๋ก์ ํธ๋ [MIT ๋ผ์ด์ ์ค](LICENSE) ํ์ ์ ๊ณต๋ฉ๋๋ค.