๊ณต์ (share
)
๐ ์ต์ ํ ์ผ์: 2025-02-20
๊ฐ์โ
share
๋ค์์คํ์ด์ค๋ ๋ค์ดํฐ๋ธ ๊ณต์ UI๋ฅผ ํตํด ์ฝํ
์ธ ๋ฅผ ๊ณต์ ํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
๋ํ, ์นด์นด์คํก ๊ณต์ ๊ธฐ๋ฅ์ ์ง์ํ๋ฉฐ, ์ปค์คํ
ํ
ํ๋ฆฟ ๋๋ URL ์คํฌ๋ฉ ๋ฐฉ์์ผ๋ก ๋ฉ์์ง๋ฅผ ์ ์กํ ์ ์์ต๋๋ค.
ํ์ ์ ์โ
KakaoShareType
โ
์นด์นด์คํก ๊ณต์ ์ ํ์ ๋ํ๋ด๋ ์ด๊ฑฐํ(enum)์ ๋๋ค.
declare enum KakaoShareType {
CUSTOM = 'custom',
SCRAP = 'scrap',
}
๊ฐ | ์ค๋ช |
---|---|
custom | ์ฌ์ ์ ๋ฑ๋ก๋ ์ปค์คํ ํ ํ๋ฆฟ์ ์ฌ์ฉํ์ฌ ์นด์นด์คํก ๊ณต์ ๋ฉ์์ง ์ ์ก |
scrap | URL์ ๊ธฐ๋ฐ์ผ๋ก ์นด์นด์คํก ์คํฌ๋ฉ ๊ณต์ ๋ฉ์์ง ์ ์ก |
KakaoShareCustom
โ
์นด์นด์คํก ์ปค์คํ ํ ํ๋ฆฟ ๊ณต์ ์ ์ฌ์ฉํ ๋ฐ์ดํฐ ํ์ ์ ๋๋ค.
declare type KakaoShareCustom = {
templateId: number;
templateArgs?: {
[key: string]: string;
};
serverCallbackArgs?: {
[key: string]: string;
};
};
ํ๋ | ํ์ | ์ค๋ช |
---|---|---|
templateId | number | ์นด์นด์ค ๊ฐ๋ฐ์ ์ผํฐ์์ ๋ฑ๋กํ ํ ํ๋ฆฟ ID |
templateArgs | { [key: string]: string } (optional) | ํ ํ๋ฆฟ์ ์ ๋ฌํ ๊ฐ๋ณ์ ์ธ ๊ฐ |
serverCallbackArgs | { [key: string]: string } (optional) | ๊ณต์ ๊ฒฐ๊ณผ๋ฅผ ์๋ฒ์์ ์ฒ๋ฆฌํ ๊ฒฝ์ฐ ํจ๊ป ์ ๋ฌํ ๊ฐ |
KakaoShareScrap
โ
์นด์นด์คํก URL ์คํฌ๋ฉ ๊ณต์ ์ ์ฌ์ฉํ ๋ฐ์ดํฐ ํ์ ์ ๋๋ค.
declare type KakaoShareScrap = {
requestUrl: string;
templateId?: number;
templateArgs?: {
[key: string]: string;
};
serverCallbackArgs?: {
[key: string]: string;
};
};
ํ๋ | ํ์ | ์ค๋ช |
---|---|---|
requestUrl | string | ์คํฌ๋ฉํ ๋์ URL |
templateId | number (optional) | ์นด์นด์ค ๊ฐ๋ฐ์ ์ผํฐ์์ ๋ฑ๋กํ ํ ํ๋ฆฟ ID |
templateArgs | { [key: string]: string } (optional) | ํ ํ๋ฆฟ์ ์ ๋ฌํ ๊ฐ๋ณ์ ์ธ ๊ฐ |
serverCallbackArgs | { [key: string]: string } (optional) | ๊ณต์ ๊ฒฐ๊ณผ๋ฅผ ์๋ฒ์์ ์ฒ๋ฆฌํ ๊ฒฝ์ฐ ํจ๊ป ์ ๋ฌํ ๊ฐ |
KakaoShareResultStatusCode
โ
์นด์นด์ค ๊ณต์ ์์ฒญ์ ์ํ ์ฝ๋์ ๋๋ค.
declare enum KakaoShareResultStatusCode {
ERROR_JSON_FAILED = 102,
ERROR_JSON_FAILED_TO_MODEL = 103,
ERROR_JSON_FAILED_TO_KAKAO_MODEL = 104,
ERROR_JSON_WRONG_SHARE_TYPE = 105,
ERROR_JSON_EMPTY_REQUEST_URL = 106,
ERROR_JSON_EMPTY_TEMPLATE_ID = 108,
ERROR_KAKAO_FAILED = 199,
SUCCESS_KAKAO = 200,
SUCCESS_SAFARI = 201,
}
๊ฐ | ์ค๋ช |
---|---|
102 | JSON ๋ณํ ์คํจ |
103 | JSON์ ๋ชจ๋ธ๋ก ๋ณํํ๋ ๊ณผ์ ์์ ์ค๋ฅ ๋ฐ์ |
104 | JSON์ ์นด์นด์ค ๋ชจ๋ธ๋ก ๋ณํํ๋ ๊ณผ์ ์์ ์ค๋ฅ ๋ฐ์ |
105 | ์๋ชป๋ ๊ณต์ ํ์
์ง์ (custom ๋๋ scrap ์ด ์๋) |
106 | scrap ๊ณต์ ํ์
์์ requestUrl ์ด ๋น์ด ์์ |
108 | custom ๊ณต์ ํ์
์์ templateId ๊ฐ ๋น์ด ์์ |
199 | ์นด์นด์ค ๊ณต์ ์์ฒญ ์คํจ |
200 | ์นด์นด์ค ๊ณต์ ์ฑ๊ณต |
201 | Safari ๋ธ๋ผ์ฐ์ ์์ ๊ณต์ ์ฑ๊ณต |
KakaoShareResult
โ
์นด์นด์ค ๊ณต์ ์์ฒญ ๊ฒฐ๊ณผ๋ฅผ ํฌํจํ๋ ํ์ ์ ๋๋ค.
declare type KakaoShareResult = {
status: 'error' | 'success';
statusCode: KakaoShareStatusCode;
message?: string;
};
ํ๋ | ํ์ | ์ค๋ช |
---|---|---|
status | 'error' | 'success' | ๊ณต์ ์ฑ๊ณต ์ฌ๋ถ |
statusCode | KakaoShareResultStatusCode | ์์ฒญ ๊ฒฐ๊ณผ ์ํ ์ฝ๋ |
message | string (optional) | ์์ฒญ ์คํจ ์, ์ค ๋ฅ ๋ฉ์์ง ํฌํจ |
๋ฉ์๋ ๋ชฉ๋กโ
๋ฉ์๋ | ์ค๋ช | ์ถ๊ฐ๋ ๋ฒ์ |
---|---|---|
openSharing(url) | ๋ค์ดํฐ๋ธ ๊ณต์ UI๋ฅผ ์ด์ด ์ฝํ ์ธ ๋ฅผ ๊ณต์ ํฉ๋๋ค. | ver.1.1.0 |
sendKakao(type, data, callback?) | ์นด์นด์คํก ๊ณต์ ๋ฅผ ์ํํฉ๋๋ค. | ver.1.2.0 |
๋ฉ์๋ ์์ธโ
openSharing(url: string): void
โ
- since ver.1.1.0
์ค๋ช
(openSharing
)โ
์ง์ ๋ url
์ ๋ค์ดํฐ๋ธ ๊ณต์ UI๋ฅผ ํตํด ๊ณต์ ํฉ๋๋ค.
๋ค์ดํฐ๋ธ ๊ณต์ UI๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉ์์ ๋๋ฐ์ด์ค์ ์ค์น๋ ๊ณต์ ๊ฐ๋ฅํ ์ฑ ๋ชฉ๋ก์ ํ์ํฉ๋๋ค.
๋งค๊ฐ๋ณ์ (openSharing
)โ
์ด๋ฆ | ํ์ | ํ์ ์ฌ๋ถ | ์ค๋ช |
---|---|---|---|
url | string | โ | ๊ณต์ ํ ๋์ URL |
๋ฐํ ๊ฐ (openSharing
)โ
ํด๋น ๋ฉ์๋๋ ๋ฐํ ๊ฐ์ ๊ฐ์ง์ง ์์ต๋๋ค.
์ฌ์ฉ ์์ (openSharing
)โ
// ๊ณต์ ํ URL. ex) 'https://nachocode.io'
const sharedURL = 'https://nachocode.io';
// ๊ณต์ ํ URL์ ์ง์ ํ์ฌ ๋ค์ดํฐ๋ธ ๊ณต์ UI๋ฅผ ์ฝ๋๋ค.
Nachocode.share.openSharing(sharedURL);
sendKakao(type: KakaoShareType, data: KakaoShareCustom | KakaoShareScrap, callback?: (result: KakaoShareResult) => void): void
โ
- since ver.1.2.0
์ค๋ช
(sendKakao
)โ
์นด์นด์คํก ๊ณต์ ๊ธฐ๋ฅ์ ์ํํฉ๋๋ค.
์ปค์คํ
ํ
ํ๋ฆฟ(custom
) ๋๋ URL ์คํฌ๋ฉ(scrap
) ๋ฐฉ์์ ์ฌ์ฉํ์ฌ ๊ณต์ ํ ์ ์์ต๋๋ค.
๊ณต์ ๊ฒฐ๊ณผ๋ ์ ํ์ ์ผ๋ก callback
ํจ์๋ฅผ ํตํด ์ ๋ฌ๋ฐ์ ์ ์์ต๋๋ค.
๋งค๊ฐ๋ณ์ (sendKakao
)โ
์ด๋ฆ | ํ์ | ํ์ ์ฌ๋ถ | ์ค๋ช |
---|---|---|---|
type | KakaoShareType | โ | custom ๋๋ scrap ๊ณต์ ๋ฐฉ์ ์ ํ |
data | KakaoShareCustom | KakaoShareScrap | โ | ๊ณต์ ํ ๋ฐ์ดํฐ (ํ ํ๋ฆฟ ID ๋๋ URL ํ์) |
callback | (result: KakaoShareResult) => void (optional) | โ | ๊ณต์ ๊ฒฐ๊ณผ๋ฅผ ์ฒ๋ฆฌํ ์ฝ๋ฐฑ ํจ์ |
๋ฐํ ๊ฐ (sendKakao
)โ
ํด๋น ๋ฉ์๋๋ ๋ฐํ ๊ฐ์ ๊ฐ์ง์ง ์์ต๋๋ค.
๊ณต์ ๊ฒฐ๊ณผ๋ callback
ํจ์์ ์ ๋ฌ๋ฉ๋๋ค.
์ฌ์ฉ ์์ (sendKakao
)โ
// ์ปค์คํ
ํ
ํ๋ฆฟ์ ํ์ฉํ ์นด์นด์คํก ๊ณต์
Nachocode.share.sendKakao(
'custom',
{
templateId: 12345,
templateArgs: { title: 'nachocode SDK' },
},
result => {
console.log('์นด์นด์ค ๊ณต์ ๊ฒฐ๊ณผ:', result);
}
);
// URL์ ํ์ฉํ ์นด์นด์คํก ๊ณต์
Nachocode.share.sendKakao(
'scrap',
{
requestUrl: 'https://nachocode.io',
},
result => {
if (result.status === 'success') {
console.log('์นด์นด์คํก ๊ณต์ ์ฑ๊ณต');
} else {
console.error(`์นด์นด์คํก ๊ณต์ ์คํจ: ${result.message}`);
}
}
);
์ถ๊ฐ ์ ๋ณดโ
custom
๊ณต์ ๋ฐฉ์์ ๊ฒฝ์ฐ, ์นด์นด์ค ๊ฐ๋ฐ์ ์ผํฐ์์ ์ฌ์ ๋ฑ๋ก๋ ํ ํ๋ฆฟ ID๊ฐ ํ์ํฉ๋๋ค.scrap
๊ณต์ ๋ฐฉ์์ ๊ฒฝ์ฐ, ์นด์นด์ค ์คํฌ๋ฉ API๋ฅผ ํตํด ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ต๋๋ค.- ๊ณต์ ๊ฐ ์คํจํ ๊ฒฝ์ฐ,
KakaoShareResult
์status
๊ฐ์ด'error'
๋ก ์ค์ ๋๋ฉฐmessage
ํ๋์ ์ค๋ฅ ์์ธ์ด ํฌํจ๋ฉ๋๋ค.