nachocode-client-sdk
Version:
nachocode Client SDK
329 lines (239 loc) β’ 16.3 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 -->
> π **μ΅μ ν μΌμ:** _2026-01-16_
## λͺ©μ°¨
- [π¦ 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.9.0
```jsx
loadNachocode('your-api-key'); // μ΅μ λ²μ μ΄ μλμΌλ‘ λ‘λλ¨
```
νΉμ λ²μ μ§μ
- νΉμ λ²μ μΌλ‘ κ³ μ νλ €λ©΄ λ€μκ³Ό κ°μ΄ μ¬μ©ν©λλ€
```jsx
loadNachocode('your-api-key', options, '1.9.0');
```
> π’ μ΅μ λ²μ μ¬μ©μ΄ κΆμ₯λλ©°, νΉμ λ²μ κ³ μ μ νΈνμ±μ΄ μ€μν κ²½μ°μλ§ μ¬μ©νμΈμ.
---
## 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 SDKλ κ° κΈ°λ₯λ³λ‘ **λ€μμ€νμ΄μ€(namespace)** λ‘ κ΅¬λΆλμ΄ μμ΅λλ€.
μλλ μ£Όμ λ€μμ€νμ΄μ€μ λͺ©λ‘κ³Ό μ€λͺ
μ
λλ€. κ° λ€μμ€νμ΄μ€μ λν μμΈν λ¬Έμλ **λ¬Έμ λ§ν¬**μμ νμΈνμΈμ.
| **λ€μμ€νμ΄μ€** | **μ€λͺ
** | **λ¬Έμ λ§ν¬** |
| ---------------- | -------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| `app` | μ± μ΄λ¦, λ²μ , ν¨ν€μ§ μ΄λ¦ λ±μ μ 보λ₯Ό μ 곡ν©λλ€. | [μ± λ€μμ€νμ΄μ€](https://developer.nachocode.io/docs/sdk/namespaces/app) |
| `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) |
| `iap` | Google Play λ° Apple App Store μΈμ± κ²°μ κΈ°λ₯μ μ 곡ν©λλ€. | [μΈμ± κ²°μ λ€μμ€νμ΄μ€](https://developer.nachocode.io/docs/sdk/namespaces/iap) |
| `loading` | λ€μ΄ν°λΈ λ‘λ© μΈλμΌμ΄ν°λ₯Ό μ μ΄ν μ μμ΅λλ€. | [λ‘λ© λ€μμ€νμ΄μ€](https://developer.nachocode.io/docs/sdk/namespaces/loading) |
| `location` | νμ¬ λλ°μ΄μ€ μμΉμ κ²½λ, μλλ₯Ό νμΈν μ μμ΅λλ€. | [μμΉ λ€μμ€νμ΄μ€](https://developer.nachocode.io/docs/sdk/namespaces/location) |
| `navigation` | μ±μ λ€λΉκ²μ΄μ
μ€νμ μ μ΄νκ³ μ€μμ΄ν μ μ€μ²λ₯Ό μ€μ ν μ μμ΅λλ€. | [λ€λΉκ²μ΄μ
λ€μμ€νμ΄μ€](https://developer.nachocode.io/docs/sdk/namespaces/navigation) |
| `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` | μ±μ€ν μ΄ λ° νλ μ΄μ€ν μ΄ μνΈμμ© κΈ°λ₯μ μ 곡ν©λλ€. | [곡μ λ€μμ€νμ΄μ€](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)λ₯Ό νμΈνμΈμ.
---
## λ€μμ€νμ΄μ€ (μΈλΆμ°λ) μκ°
nachocode SDKλ μ°λλ μΈλΆ μ루μ
μ κΈ°λ₯λ€λ **λ€μμ€νμ΄μ€(namespace)** λ‘ κ΅¬λΆλμ΄ μμ΅λλ€.
μλλ μ£Όμ λ€μμ€νμ΄μ€μ λͺ©λ‘κ³Ό μ€λͺ
μ
λλ€. κ° λ€μμ€νμ΄μ€μ λν μμΈν λ¬Έμλ **λ¬Έμ λ§ν¬**μμ νμΈνμΈμ.
| **λ€μμ€νμ΄μ€** | **μ€λͺ
** | **λ¬Έμ λ§ν¬** |
| ---------------- | ------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------- |
| `apple` | Apple κ³μ μ ν΅ν μμ
λ‘κ·ΈμΈ κΈ°λ₯ λ±μ μ 곡ν©λλ€. | [Apple λ€μμ€νμ΄μ€](https://developer.nachocode.io/docs/sdk/integrations/apple/reference) |
| `appsflyer` | AppsFlyer λ§μΌν
μ νΈλ¦¬λ·°μ
λ° μ¬μ©μ νΈλνΉ κΈ°λ₯ λ±μ μ 곡ν©λλ€. | [AppsFlyer λ€μμ€νμ΄μ€](https://developer.nachocode.io/docs/sdk/integrations/appsflyer/reference) |
| `facebook` | Facebook μμ
λ‘κ·ΈμΈ κΈ°λ₯μ μ 곡ν©λλ€. | [Facebook λ€μμ€νμ΄μ€](https://developer.nachocode.io/docs/sdk/integrations/facebook/reference) |
| `google` | Google μμ
λ‘κ·ΈμΈ κΈ°λ₯μ μ 곡ν©λλ€. | [Google λ€μμ€νμ΄μ€](https://developer.nachocode.io/docs/sdk/integrations/google/reference) |
| `kakao` | Kakao μμ
λ‘κ·ΈμΈ κΈ°λ₯μ μ 곡ν©λλ€. | [Kakao λ€μμ€νμ΄μ€](https://developer.nachocode.io/docs/sdk/integrations/kakao/reference) |
| `naver` | Naver μμ
λ‘κ·ΈμΈ κΈ°λ₯μ μ 곡ν©λλ€. | [Naver λ€μμ€νμ΄μ€](https://developer.nachocode.io/docs/sdk/integrations/naver/reference) |
λ λ§μ λ€μμ€νμ΄μ€μ μ¬μ©λ²μ [곡μ λ¬Έμ](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) νμ μ 곡λ©λλ€.