@react-native-kakao/share 1.0.4 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,234 @@
1
1
  import type { TurboModule } from 'react-native';
2
2
  import type { Int32, UnsafeObject } from 'react-native/Libraries/Types/CodegenTypes';
3
+ /**
4
+ * 메시지에서 콘텐츠 영역이나 버튼 클릭 시에 이동되는 링크 정보 오브젝트.
5
+ *
6
+ * @param webUrl PC 버전 카카오톡에서 사용하는 웹 링크 URL.
7
+ * @param mobileWebUrl 모바일 카카오톡에서 사용하는 웹 링크 URL.
8
+ * @param androidExecutionParams 안드로이드 카카오톡에서 사용하는 앱 링크 URL에 추가할 파라미터.
9
+ * @param iosExecutionParams iOS 카카오톡에서 사용하는 앱 링크 URL에 추가할 파라미터.
10
+ */
11
+ export interface KakaoTemplateLink {
12
+ webUrl?: string;
13
+ mobileWebUrl?: string;
14
+ iosExecutionParams?: Readonly<{
15
+ [key: string]: string;
16
+ }>;
17
+ androidExecutionParams?: Readonly<{
18
+ [key: string]: string;
19
+ }>;
20
+ }
21
+ /**
22
+ * 콘텐츠의 내용을 담고 있는 오브젝트.
23
+ *
24
+ * @param title 콘텐츠의 타이틀
25
+ * @param imageUrl 콘텐츠의 이미지 URL
26
+ * @param link 콘텐츠 클릭 시 이동할 링크 정보
27
+ * @param imageWidth 콘텐츠의 이미지 너비 (단위: 픽셀)
28
+ * @param imageHeight 콘텐츠의 이미지 높이 (단위: 픽셀)
29
+ */
30
+ export interface KakaoTemplateContent {
31
+ title: string;
32
+ imageUrl: string;
33
+ link: KakaoTemplateLink;
34
+ description?: string;
35
+ imageWidth?: number;
36
+ imageHeight?: number;
37
+ }
38
+ /**
39
+ * 아이템 목록 형태의 콘텐츠의 내용을 담고 있는 오브젝트.
40
+ *
41
+ * @param item 아이템 이름. 최대 6자까지 출력
42
+ * @param itemOp 아이템 가격. 사용 가능한 문자: 숫자, 통화기호, 쉼표(,), 마침표(.), 띄어쓰기 소수 단위 금액을 포함한 경우, 소수점 아래 2자리까지만 사용 권장.
43
+ */
44
+ export interface KakaoTemplateItemInfo {
45
+ item: string;
46
+ itemOp: string;
47
+ }
48
+ /**
49
+ * 아이템 목록 형태의 콘텐츠의 내용을 담고 있는 오브젝트.
50
+ *
51
+ * @param profileText 헤더 또는 프로필 영역에 출력될 텍스트. [profileImageUrl] 값이 없을 경우, 볼드(Bold)체로 된 제목만 담은 헤더 형태로 출력됨, 최대 16자까지 출력
52
+ * @param profileImageUrl 프로필 영역에 출력될 이미지. 작은 원형의 프로필 사진 형태로 출력됨
53
+ * @param titleImageText 이미지 아이템의 제목. 최대 2줄, 최대 24자까지 출력
54
+ * @param titleImageUrl 이미지 아이템의 이미지. iOS 108*108, Android 98*98 크기 1:1 비율이 아닌 이미지는 센터 크롭(Center crop) 방식으로 재조정됨
55
+ * @param titleImageCategory 이미지 아이템의 제목 아래에 회색 글씨로 출력되는 카테고리 정보. 최대 한 줄, 최대 14자까지 출력
56
+ * @param items 각 텍스트 아이템 정보. 아이템 이름과 가격에 해당하는 [ItemInfo.item], [ItemInfo.itemOp]를 포함한 JSON 배열, 최대 5개의 아이템 지원
57
+ * @param sum 주문금액, 결제금액 등 아이템 영역의 요약 정보 제목. 텍스트 아이템 영역 아래에 최대 6자까지 출력
58
+ * @param sumOp 아이템 영역의 가격 합산 정보.텍스트 아이템 영역 아래에 볼드체로 최대 11자까지 출력
59
+ */
60
+ export interface KakaoTemplateItemContent {
61
+ profileText?: string;
62
+ profileImageUrl?: string;
63
+ titleImageText?: string;
64
+ titleImageUrl?: string;
65
+ titleImageCategory?: string;
66
+ items?: Array<KakaoTemplateItemInfo>;
67
+ sum?: string;
68
+ sumOp?: string;
69
+ }
70
+ /**
71
+ * 좋아요 수, 댓글 수 등의 소셜 정보를 표현하기 위해 사용되는 오브젝트.
72
+ * @param likeCount 콘텐츠의 좋아요 수
73
+ * @param commentCount 콘텐츠의 댓글 수
74
+ * @param sharedCount 콘텐츠의 공유 수
75
+ * @param viewCount 콘텐츠의 조회 수
76
+ * @param subscriberCount 콘텐츠의 구독 수
77
+ */
78
+ export interface KakaoTemplateSocial {
79
+ likeCount?: Int32;
80
+ commentCount?: Int32;
81
+ sharedCount?: Int32;
82
+ viewCount?: Int32;
83
+ subscriberCount?: Int32;
84
+ }
85
+ /**
86
+ * 가격 정보를 표현하기 위해 사용되는 오브젝트.
87
+ *
88
+ * @param regularPrice 정상가격
89
+ * @param discountPrice 할인된 가격
90
+ * @param discountRate 할인율
91
+ * @param fixedDiscountPrice 정액 할인 가격
92
+ * @param productName 상품명
93
+ * @param currencyUnit 가격 단위
94
+ * @param currencyUnitPosition 가격 단위 위치 (0: 가격뒤에 단위 표시, 1 : 가격앞에 단위 표시)
95
+ */
96
+ export interface KakaoTemplateCommerce {
97
+ regularPrice: Int32;
98
+ discountPrice?: Int32;
99
+ fixedDiscountPrice?: Int32;
100
+ discountRate?: Int32;
101
+ productName?: string;
102
+ currencyUnit?: string;
103
+ currencyUnitPosition?: Int32;
104
+ }
105
+ /**
106
+ * 메시지 하단에 추가되는 버튼 오브젝트.
107
+ *
108
+ * @param title 버튼의 타이틀
109
+ * @param link 버튼 클릭 시 이동할 링크 정보
110
+ */
111
+ export interface KakaoTemplateButton {
112
+ title: string;
113
+ link: KakaoTemplateLink;
114
+ }
115
+ /**
116
+ * 기본 템플릿으로 제공되는 피드 템플릿 클래스.
117
+ *
118
+ * @property content 메시지의 메인 콘텐츠 정보
119
+ * @property itemContent 아이템 영역에 포함할 콘텐츠, [ItemContent] 참고
120
+ * @property social 콘텐츠에 대한 소셜 정보
121
+ * @property buttons 버튼 목록, 최대 2개. 버튼 타이틀과 링크를 변경하고 싶을 때, 버튼 두 개를 넣고 싶을 때 사용
122
+ * @property buttonTitle 기본 버튼 타이틀(자세히 보기)을 변경하고 싶을 때 설정. 이 값을 사용하면 클릭 시 이동할 링크는 content 에 입력된 값이 사용됨.
123
+ */
124
+ export interface KakaoFeedTemplate {
125
+ content: KakaoTemplateContent;
126
+ itemContent?: KakaoTemplateItemContent;
127
+ social?: KakaoTemplateSocial;
128
+ buttons?: KakaoTemplateButton[];
129
+ buttonTitle?: string;
130
+ }
131
+ /**
132
+ * 여러 개의 컨텐츠를 리스트 형태로 보여줄 수 있는 메시지 템플릿 클래스.
133
+ *
134
+ * @property headerTitle 리스트 상단에 노출되는 헤더 타이틀 (최대 200자)
135
+ * @property headerLink 헤더 타이틀 내용에 해당하는 링크 정보
136
+ * @property contents 리스트에 노출되는 컨텐츠 목록 (최소 2개, 최대 3개)
137
+ * @property buttons 버튼 목록. 버튼 타이틀과 링크를 변경하고 싶을때, 버튼 두개를 사용하고 싶을때 사용. (최대 2개)
138
+ * @property buttonTitle 기본 버튼 타이틀(자세히 보기)을 변경하고 싶을 때 설정. 이 값을 사용하면 클릭 시 이동할 링크는 content 에 입력된 값이 사용됨.
139
+ */
140
+ export interface KakaoListTemplate {
141
+ headerTitle: string;
142
+ headerLink: KakaoTemplateLink;
143
+ contents: KakaoTemplateContent[];
144
+ buttons?: KakaoTemplateButton[];
145
+ buttonTitle?: string;
146
+ }
147
+ /**
148
+ * 주소를 이용하여 특정 위치를 공유할 수 있는 메시지 템플릿.
149
+ *
150
+ * @property address 공유할 위치의 주소. 예) 경기 성남시 분당구 판교역로 235
151
+ * @property addressTitle 카카오톡 내의 지도 뷰에서 사용되는 타이틀. 예) 카카오판교오피스
152
+ * @property content 위치에 대해 설명하는 컨텐츠 정보
153
+ * @property social 댓글수, 좋아요수 등, 컨텐츠에 대한 소셜 정보
154
+ * @property buttons 버튼 목록. 기본 버튼의 타이틀 외에 링크도 변경하고 싶을 때 설정. (최대 1개, 오른쪽 위치 보기 버튼은 고정)
155
+ * @property buttonTitle 기본 버튼 타이틀(자세히 보기)을 변경하고 싶을 때 설정. 이 값을 사용하면 클릭 시 이동할 링크는 content에 입력된 값이 사용됨.
156
+ */
157
+ export interface KakaoLocationTemplate {
158
+ address: string;
159
+ content: KakaoTemplateContent;
160
+ addressTitle?: string;
161
+ social?: KakaoTemplateSocial;
162
+ buttons?: KakaoTemplateButton[];
163
+ buttonTitle?: string;
164
+ }
165
+ /**
166
+ * 기본 템플릿으로 제공되는 커머스 템플릿 클래스
167
+ *
168
+ * @property content 메시지의 내용. 텍스트 및 이미지, 링크 정보 포함.
169
+ * @property commerce 컨텐츠에 대한 가격 정보
170
+ * @property buttons 버튼 목록. 버튼 타이틀과 링크를 변경하고 싶을때, 버튼 두개를 사용하고 싶을때 사용. (최대 2개)
171
+ * @property buttonTitle 기본 버튼 타이틀(자세히 보기)을 변경하고 싶을 때 설정. 이 값을 사용하면 클릭 시 이동할 링크는 content 에 입력된 값이 사용됨.
172
+ */
173
+ export interface KakaoCommerceTemplate {
174
+ content: KakaoTemplateContent;
175
+ commerce: KakaoTemplateCommerce;
176
+ buttons?: KakaoTemplateButton[];
177
+ buttonTitle?: string;
178
+ }
179
+ /**
180
+ * 텍스트형 기본 템플릿 클래스
181
+ *
182
+ * @property text 메시지에 들어갈 텍스트 (최대 200자)
183
+ * @property link 컨텐츠 클릭 시 이동할 링크 정보
184
+ * @property buttons 버튼 목록. 버튼 타이틀과 링크를 변경하고 싶을때, 버튼 두개를 사용하고 싶을때 사용. (최대 2개)
185
+ * @property buttonTitle 기본 버튼 타이틀(자세히 보기)을 변경하고 싶을 때 설정. 이 값을 사용하면 클릭 시 이동할 링크는 content에 입력된 값이 사용됨.
186
+ */
187
+ export interface KakaoTextTemplate {
188
+ text: string;
189
+ link: KakaoTemplateLink;
190
+ buttons?: KakaoTemplateButton[];
191
+ buttonTitle?: string;
192
+ }
193
+ /**
194
+ * 톡캘린더의 구독 캘린더 또는 공개 일정 정보를 포함한 메시지 형식입니다.
195
+ * 카카오톡 채널의 구독 캘린더 또는 공개 일정을 사용자의 톡캘린더에 추가하는 기능을 제공합니다.
196
+ *
197
+ * @property id 구독 캘린더 또는 공개 일정 ID
198
+ * @property idType id의 타입, event(공개 일정) 또는 calendar(구독 캘린더) 중 하나
199
+ * @property content 일정에 대해 설명하는 컨텐츠 정보
200
+ * @property buttons 버튼 목록. 기본 버튼의 타이틀 외에 링크도 변경하고 싶을 때 설정. (최대 1개, 오른쪽 위치 보기 버튼은 고정)
201
+ */
202
+ export interface KakaoCalendarTemplate {
203
+ id: string;
204
+ idType: 'event' | 'calendar';
205
+ content: KakaoTemplateContent;
206
+ buttons?: KakaoTemplateButton[];
207
+ }
3
208
  export interface Spec extends TurboModule {
4
- shareCustom(templateId: Int32, useWebBrowserIfKakaoTalkNotAvailable: boolean, templateArgs: UnsafeObject, serverCallbackArgs: UnsafeObject): Promise<void>;
209
+ shareCustom(templateId: Int32, useWebBrowserIfKakaoTalkNotAvailable: boolean, templateArgs: Readonly<{
210
+ [key: string]: string;
211
+ }>, serverCallbackArgs: Readonly<{
212
+ [key: string]: string;
213
+ }>): Promise<void>;
214
+ shareFeedTemplate(value: UnsafeObject, useWebBrowserIfKakaoTalkNotAvailable: boolean, serverCallbackArgs: Readonly<{
215
+ [key: string]: string;
216
+ }>): Promise<void>;
217
+ shareListTemplate(value: UnsafeObject, useWebBrowserIfKakaoTalkNotAvailable: boolean, serverCallbackArgs: Readonly<{
218
+ [key: string]: string;
219
+ }>): Promise<void>;
220
+ shareLocationTemplate(value: UnsafeObject, useWebBrowserIfKakaoTalkNotAvailable: boolean, serverCallbackArgs: Readonly<{
221
+ [key: string]: string;
222
+ }>): Promise<void>;
223
+ shareCommerceTemplate(value: UnsafeObject, useWebBrowserIfKakaoTalkNotAvailable: boolean, serverCallbackArgs: Readonly<{
224
+ [key: string]: string;
225
+ }>): Promise<void>;
226
+ shareTextTemplate(value: UnsafeObject, useWebBrowserIfKakaoTalkNotAvailable: boolean, serverCallbackArgs: Readonly<{
227
+ [key: string]: string;
228
+ }>): Promise<void>;
229
+ shareCalendarTemplate(value: UnsafeObject, useWebBrowserIfKakaoTalkNotAvailable: boolean, serverCallbackArgs: Readonly<{
230
+ [key: string]: string;
231
+ }>): Promise<void>;
5
232
  }
6
233
  declare const _default: Spec;
7
234
  export default _default;
@@ -1 +1 @@
1
- {"version":3,"file":"NativeKakaoShare.d.ts","sourceRoot":"","sources":["../../../../src/spec/NativeKakaoShare.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AAErF,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,WAAW,CACT,UAAU,EAAE,KAAK,EACjB,oCAAoC,EAAE,OAAO,EAC7C,YAAY,EAAE,YAAY,EAC1B,kBAAkB,EAAE,YAAY,GAC/B,OAAO,CAAC,IAAI,CAAC,CAAC;CAClB;;AAED,wBAAuE"}
1
+ {"version":3,"file":"NativeKakaoShare.d.ts","sourceRoot":"","sources":["../../../../src/spec/NativeKakaoShare.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AAErF;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,QAAQ,CAAC;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC,CAAC;IACzD,sBAAsB,CAAC,EAAE,QAAQ,CAAC;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC,CAAC;CAC9D;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,iBAAiB,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,wBAAwB;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,KAAK,CAAC,EAAE,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACrC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,KAAK,CAAC;IAClB,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,WAAW,CAAC,EAAE,KAAK,CAAC;IACpB,SAAS,CAAC,EAAE,KAAK,CAAC;IAClB,eAAe,CAAC,EAAE,KAAK,CAAC;CACzB;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,KAAK,CAAC;IACpB,aAAa,CAAC,EAAE,KAAK,CAAC;IACtB,kBAAkB,CAAC,EAAE,KAAK,CAAC;IAC3B,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,KAAK,CAAC;CAC9B;AAED;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,iBAAiB,CAAC;CACzB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,oBAAoB,CAAC;IAC9B,WAAW,CAAC,EAAE,wBAAwB,CAAC;IACvC,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,iBAAiB,CAAC;IAC9B,QAAQ,EAAE,oBAAoB,EAAE,CAAC;IACjC,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,oBAAoB,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,oBAAoB,CAAC;IAC9B,QAAQ,EAAE,qBAAqB,CAAC;IAChC,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,iBAAiB,CAAC;IACxB,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,GAAG,UAAU,CAAC;IAC7B,OAAO,EAAE,oBAAoB,CAAC;IAC9B,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,WAAW,CACT,UAAU,EAAE,KAAK,EACjB,oCAAoC,EAAE,OAAO,EAC7C,YAAY,EAAE,QAAQ,CAAC;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC,EACjD,kBAAkB,EAAE,QAAQ,CAAC;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC,GACtD,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB,iBAAiB,CACf,KAAK,EAAE,YAAY,EACnB,oCAAoC,EAAE,OAAO,EAC7C,kBAAkB,EAAE,QAAQ,CAAC;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC,GACtD,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB,iBAAiB,CACf,KAAK,EAAE,YAAY,EACnB,oCAAoC,EAAE,OAAO,EAC7C,kBAAkB,EAAE,QAAQ,CAAC;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC,GACtD,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB,qBAAqB,CACnB,KAAK,EAAE,YAAY,EACnB,oCAAoC,EAAE,OAAO,EAC7C,kBAAkB,EAAE,QAAQ,CAAC;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC,GACtD,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB,qBAAqB,CACnB,KAAK,EAAE,YAAY,EACnB,oCAAoC,EAAE,OAAO,EAC7C,kBAAkB,EAAE,QAAQ,CAAC;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC,GACtD,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB,iBAAiB,CACf,KAAK,EAAE,YAAY,EACnB,oCAAoC,EAAE,OAAO,EAC7C,kBAAkB,EAAE,QAAQ,CAAC;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC,GACtD,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB,qBAAqB,CACnB,KAAK,EAAE,YAAY,EACnB,oCAAoC,EAAE,OAAO,EAC7C,kBAAkB,EAAE,QAAQ,CAAC;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC,GACtD,OAAO,CAAC,IAAI,CAAC,CAAC;CAClB;;AAED,wBAAuE"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@react-native-kakao/share",
3
3
  "description": "React Native Kakao Share SDK",
4
- "version": "1.0.4",
4
+ "version": "1.1.0",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
7
7
  "types": "lib/typescript/src/index.d.ts",
@@ -58,7 +58,7 @@
58
58
  "access": "public"
59
59
  },
60
60
  "devDependencies": {
61
- "@react-native-kakao/core": "^1.0.4",
61
+ "@react-native-kakao/core": "^1.1.0",
62
62
  "@types/jest": "^29.5.5",
63
63
  "@types/react": "^18.2.44",
64
64
  "del-cli": "^5.1.0",
@@ -69,7 +69,7 @@
69
69
  "typescript": "5.1.6"
70
70
  },
71
71
  "peerDependencies": {
72
- "@react-native-kakao/core": "^1.0.4",
72
+ "@react-native-kakao/core": "^1.1.0",
73
73
  "react": "*",
74
74
  "react-native": "*"
75
75
  },
@@ -105,5 +105,5 @@
105
105
  "javaPackageName": "net.mjstudio.rnkakao.share"
106
106
  }
107
107
  },
108
- "gitHead": "e50a806a701e689981bde39e4429a17a923490da"
108
+ "gitHead": "808962872f52207c1dc8028a836a00666bf5ff98"
109
109
  }
package/src/index.tsx CHANGED
@@ -1,6 +1,36 @@
1
1
  import { NativeModules, Platform } from 'react-native';
2
2
 
3
- import type { Spec } from './spec/NativeKakaoShare';
3
+ import type {
4
+ KakaoCalendarTemplate,
5
+ KakaoCommerceTemplate,
6
+ KakaoFeedTemplate,
7
+ KakaoListTemplate,
8
+ KakaoLocationTemplate,
9
+ KakaoTemplateButton,
10
+ KakaoTemplateCommerce,
11
+ KakaoTemplateContent,
12
+ KakaoTemplateItemContent,
13
+ KakaoTemplateItemInfo,
14
+ KakaoTemplateLink,
15
+ KakaoTemplateSocial,
16
+ KakaoTextTemplate,
17
+ Spec,
18
+ } from './spec/NativeKakaoShare';
19
+
20
+ export type {
21
+ KakaoTemplateSocial,
22
+ KakaoTextTemplate,
23
+ KakaoTemplateLink,
24
+ KakaoTemplateItemInfo,
25
+ KakaoTemplateItemContent,
26
+ KakaoTemplateContent,
27
+ KakaoTemplateCommerce,
28
+ KakaoTemplateButton,
29
+ KakaoLocationTemplate,
30
+ KakaoListTemplate,
31
+ KakaoFeedTemplate,
32
+ KakaoCommerceTemplate,
33
+ };
4
34
 
5
35
  const LINKING_ERROR =
6
36
  "The package '@react-native-kakao/share' doesn't seem to be linked. Make sure: \n\n" +
@@ -44,3 +74,99 @@ export function shareCustom({
44
74
  serverCallbackArgs,
45
75
  );
46
76
  }
77
+
78
+ export function shareFeedTemplate({
79
+ template,
80
+ useWebBrowserIfKakaoTalkNotAvailable = true,
81
+ serverCallbackArgs = {},
82
+ }: {
83
+ template: KakaoFeedTemplate;
84
+ useWebBrowserIfKakaoTalkNotAvailable?: boolean;
85
+ serverCallbackArgs?: Record<string, string>;
86
+ }) {
87
+ return Native.shareFeedTemplate(
88
+ template,
89
+ useWebBrowserIfKakaoTalkNotAvailable,
90
+ serverCallbackArgs,
91
+ );
92
+ }
93
+
94
+ export function shareListTemplate({
95
+ template,
96
+ useWebBrowserIfKakaoTalkNotAvailable = true,
97
+ serverCallbackArgs = {},
98
+ }: {
99
+ template: KakaoListTemplate;
100
+ useWebBrowserIfKakaoTalkNotAvailable?: boolean;
101
+ serverCallbackArgs?: Record<string, string>;
102
+ }) {
103
+ return Native.shareListTemplate(
104
+ template,
105
+ useWebBrowserIfKakaoTalkNotAvailable,
106
+ serverCallbackArgs,
107
+ );
108
+ }
109
+
110
+ export function shareLocationTemplate({
111
+ template,
112
+ useWebBrowserIfKakaoTalkNotAvailable = true,
113
+ serverCallbackArgs = {},
114
+ }: {
115
+ template: KakaoLocationTemplate;
116
+ useWebBrowserIfKakaoTalkNotAvailable?: boolean;
117
+ serverCallbackArgs?: Record<string, string>;
118
+ }) {
119
+ return Native.shareLocationTemplate(
120
+ template,
121
+ useWebBrowserIfKakaoTalkNotAvailable,
122
+ serverCallbackArgs,
123
+ );
124
+ }
125
+
126
+ export function shareCommerceTemplate({
127
+ template,
128
+ useWebBrowserIfKakaoTalkNotAvailable = true,
129
+ serverCallbackArgs = {},
130
+ }: {
131
+ template: KakaoCommerceTemplate;
132
+ useWebBrowserIfKakaoTalkNotAvailable?: boolean;
133
+ serverCallbackArgs?: Record<string, string>;
134
+ }) {
135
+ return Native.shareCommerceTemplate(
136
+ template,
137
+ useWebBrowserIfKakaoTalkNotAvailable,
138
+ serverCallbackArgs,
139
+ );
140
+ }
141
+
142
+ export function shareTextTemplate({
143
+ template,
144
+ useWebBrowserIfKakaoTalkNotAvailable = true,
145
+ serverCallbackArgs = {},
146
+ }: {
147
+ template: KakaoTextTemplate;
148
+ useWebBrowserIfKakaoTalkNotAvailable?: boolean;
149
+ serverCallbackArgs?: Record<string, string>;
150
+ }) {
151
+ return Native.shareTextTemplate(
152
+ template,
153
+ useWebBrowserIfKakaoTalkNotAvailable,
154
+ serverCallbackArgs,
155
+ );
156
+ }
157
+
158
+ export function shareCalendarTemplate({
159
+ template,
160
+ useWebBrowserIfKakaoTalkNotAvailable = true,
161
+ serverCallbackArgs = {},
162
+ }: {
163
+ template: KakaoCalendarTemplate;
164
+ useWebBrowserIfKakaoTalkNotAvailable?: boolean;
165
+ serverCallbackArgs?: Record<string, string>;
166
+ }) {
167
+ return Native.shareCalendarTemplate(
168
+ template,
169
+ useWebBrowserIfKakaoTalkNotAvailable,
170
+ serverCallbackArgs,
171
+ );
172
+ }
@@ -2,12 +2,262 @@ import type { TurboModule } from 'react-native';
2
2
  import { TurboModuleRegistry } from 'react-native';
3
3
  import type { Int32, UnsafeObject } from 'react-native/Libraries/Types/CodegenTypes';
4
4
 
5
+ /**
6
+ * 메시지에서 콘텐츠 영역이나 버튼 클릭 시에 이동되는 링크 정보 오브젝트.
7
+ *
8
+ * @param webUrl PC 버전 카카오톡에서 사용하는 웹 링크 URL.
9
+ * @param mobileWebUrl 모바일 카카오톡에서 사용하는 웹 링크 URL.
10
+ * @param androidExecutionParams 안드로이드 카카오톡에서 사용하는 앱 링크 URL에 추가할 파라미터.
11
+ * @param iosExecutionParams iOS 카카오톡에서 사용하는 앱 링크 URL에 추가할 파라미터.
12
+ */
13
+ export interface KakaoTemplateLink {
14
+ webUrl?: string;
15
+ mobileWebUrl?: string;
16
+ iosExecutionParams?: Readonly<{ [key: string]: string }>;
17
+ androidExecutionParams?: Readonly<{ [key: string]: string }>;
18
+ }
19
+
20
+ /**
21
+ * 콘텐츠의 내용을 담고 있는 오브젝트.
22
+ *
23
+ * @param title 콘텐츠의 타이틀
24
+ * @param imageUrl 콘텐츠의 이미지 URL
25
+ * @param link 콘텐츠 클릭 시 이동할 링크 정보
26
+ * @param imageWidth 콘텐츠의 이미지 너비 (단위: 픽셀)
27
+ * @param imageHeight 콘텐츠의 이미지 높이 (단위: 픽셀)
28
+ */
29
+ export interface KakaoTemplateContent {
30
+ title: string;
31
+ imageUrl: string;
32
+ link: KakaoTemplateLink;
33
+ description?: string;
34
+ imageWidth?: number;
35
+ imageHeight?: number;
36
+ }
37
+
38
+ /**
39
+ * 아이템 목록 형태의 콘텐츠의 내용을 담고 있는 오브젝트.
40
+ *
41
+ * @param item 아이템 이름. 최대 6자까지 출력
42
+ * @param itemOp 아이템 가격. 사용 가능한 문자: 숫자, 통화기호, 쉼표(,), 마침표(.), 띄어쓰기 소수 단위 금액을 포함한 경우, 소수점 아래 2자리까지만 사용 권장.
43
+ */
44
+ export interface KakaoTemplateItemInfo {
45
+ item: string;
46
+ itemOp: string;
47
+ }
48
+
49
+ /**
50
+ * 아이템 목록 형태의 콘텐츠의 내용을 담고 있는 오브젝트.
51
+ *
52
+ * @param profileText 헤더 또는 프로필 영역에 출력될 텍스트. [profileImageUrl] 값이 없을 경우, 볼드(Bold)체로 된 제목만 담은 헤더 형태로 출력됨, 최대 16자까지 출력
53
+ * @param profileImageUrl 프로필 영역에 출력될 이미지. 작은 원형의 프로필 사진 형태로 출력됨
54
+ * @param titleImageText 이미지 아이템의 제목. 최대 2줄, 최대 24자까지 출력
55
+ * @param titleImageUrl 이미지 아이템의 이미지. iOS 108*108, Android 98*98 크기 1:1 비율이 아닌 이미지는 센터 크롭(Center crop) 방식으로 재조정됨
56
+ * @param titleImageCategory 이미지 아이템의 제목 아래에 회색 글씨로 출력되는 카테고리 정보. 최대 한 줄, 최대 14자까지 출력
57
+ * @param items 각 텍스트 아이템 정보. 아이템 이름과 가격에 해당하는 [ItemInfo.item], [ItemInfo.itemOp]를 포함한 JSON 배열, 최대 5개의 아이템 지원
58
+ * @param sum 주문금액, 결제금액 등 아이템 영역의 요약 정보 제목. 텍스트 아이템 영역 아래에 최대 6자까지 출력
59
+ * @param sumOp 아이템 영역의 가격 합산 정보.텍스트 아이템 영역 아래에 볼드체로 최대 11자까지 출력
60
+ */
61
+ export interface KakaoTemplateItemContent {
62
+ profileText?: string;
63
+ profileImageUrl?: string;
64
+ titleImageText?: string;
65
+ titleImageUrl?: string;
66
+ titleImageCategory?: string;
67
+ items?: Array<KakaoTemplateItemInfo>;
68
+ sum?: string;
69
+ sumOp?: string;
70
+ }
71
+
72
+ /**
73
+ * 좋아요 수, 댓글 수 등의 소셜 정보를 표현하기 위해 사용되는 오브젝트.
74
+ * @param likeCount 콘텐츠의 좋아요 수
75
+ * @param commentCount 콘텐츠의 댓글 수
76
+ * @param sharedCount 콘텐츠의 공유 수
77
+ * @param viewCount 콘텐츠의 조회 수
78
+ * @param subscriberCount 콘텐츠의 구독 수
79
+ */
80
+ export interface KakaoTemplateSocial {
81
+ likeCount?: Int32;
82
+ commentCount?: Int32;
83
+ sharedCount?: Int32;
84
+ viewCount?: Int32;
85
+ subscriberCount?: Int32;
86
+ }
87
+
88
+ /**
89
+ * 가격 정보를 표현하기 위해 사용되는 오브젝트.
90
+ *
91
+ * @param regularPrice 정상가격
92
+ * @param discountPrice 할인된 가격
93
+ * @param discountRate 할인율
94
+ * @param fixedDiscountPrice 정액 할인 가격
95
+ * @param productName 상품명
96
+ * @param currencyUnit 가격 단위
97
+ * @param currencyUnitPosition 가격 단위 위치 (0: 가격뒤에 단위 표시, 1 : 가격앞에 단위 표시)
98
+ */
99
+ export interface KakaoTemplateCommerce {
100
+ regularPrice: Int32;
101
+ discountPrice?: Int32;
102
+ fixedDiscountPrice?: Int32;
103
+ discountRate?: Int32;
104
+ productName?: string;
105
+ currencyUnit?: string;
106
+ currencyUnitPosition?: Int32;
107
+ }
108
+
109
+ /**
110
+ * 메시지 하단에 추가되는 버튼 오브젝트.
111
+ *
112
+ * @param title 버튼의 타이틀
113
+ * @param link 버튼 클릭 시 이동할 링크 정보
114
+ */
115
+ export interface KakaoTemplateButton {
116
+ title: string;
117
+ link: KakaoTemplateLink;
118
+ }
119
+
120
+ /**
121
+ * 기본 템플릿으로 제공되는 피드 템플릿 클래스.
122
+ *
123
+ * @property content 메시지의 메인 콘텐츠 정보
124
+ * @property itemContent 아이템 영역에 포함할 콘텐츠, [ItemContent] 참고
125
+ * @property social 콘텐츠에 대한 소셜 정보
126
+ * @property buttons 버튼 목록, 최대 2개. 버튼 타이틀과 링크를 변경하고 싶을 때, 버튼 두 개를 넣고 싶을 때 사용
127
+ * @property buttonTitle 기본 버튼 타이틀(자세히 보기)을 변경하고 싶을 때 설정. 이 값을 사용하면 클릭 시 이동할 링크는 content 에 입력된 값이 사용됨.
128
+ */
129
+ export interface KakaoFeedTemplate {
130
+ content: KakaoTemplateContent;
131
+ itemContent?: KakaoTemplateItemContent;
132
+ social?: KakaoTemplateSocial;
133
+ buttons?: KakaoTemplateButton[];
134
+ buttonTitle?: string;
135
+ }
136
+
137
+ /**
138
+ * 여러 개의 컨텐츠를 리스트 형태로 보여줄 수 있는 메시지 템플릿 클래스.
139
+ *
140
+ * @property headerTitle 리스트 상단에 노출되는 헤더 타이틀 (최대 200자)
141
+ * @property headerLink 헤더 타이틀 내용에 해당하는 링크 정보
142
+ * @property contents 리스트에 노출되는 컨텐츠 목록 (최소 2개, 최대 3개)
143
+ * @property buttons 버튼 목록. 버튼 타이틀과 링크를 변경하고 싶을때, 버튼 두개를 사용하고 싶을때 사용. (최대 2개)
144
+ * @property buttonTitle 기본 버튼 타이틀(자세히 보기)을 변경하고 싶을 때 설정. 이 값을 사용하면 클릭 시 이동할 링크는 content 에 입력된 값이 사용됨.
145
+ */
146
+ export interface KakaoListTemplate {
147
+ headerTitle: string;
148
+ headerLink: KakaoTemplateLink;
149
+ contents: KakaoTemplateContent[];
150
+ buttons?: KakaoTemplateButton[];
151
+ buttonTitle?: string;
152
+ }
153
+
154
+ /**
155
+ * 주소를 이용하여 특정 위치를 공유할 수 있는 메시지 템플릿.
156
+ *
157
+ * @property address 공유할 위치의 주소. 예) 경기 성남시 분당구 판교역로 235
158
+ * @property addressTitle 카카오톡 내의 지도 뷰에서 사용되는 타이틀. 예) 카카오판교오피스
159
+ * @property content 위치에 대해 설명하는 컨텐츠 정보
160
+ * @property social 댓글수, 좋아요수 등, 컨텐츠에 대한 소셜 정보
161
+ * @property buttons 버튼 목록. 기본 버튼의 타이틀 외에 링크도 변경하고 싶을 때 설정. (최대 1개, 오른쪽 위치 보기 버튼은 고정)
162
+ * @property buttonTitle 기본 버튼 타이틀(자세히 보기)을 변경하고 싶을 때 설정. 이 값을 사용하면 클릭 시 이동할 링크는 content에 입력된 값이 사용됨.
163
+ */
164
+ export interface KakaoLocationTemplate {
165
+ address: string;
166
+ content: KakaoTemplateContent;
167
+ addressTitle?: string;
168
+ social?: KakaoTemplateSocial;
169
+ buttons?: KakaoTemplateButton[];
170
+ buttonTitle?: string;
171
+ }
172
+
173
+ /**
174
+ * 기본 템플릿으로 제공되는 커머스 템플릿 클래스
175
+ *
176
+ * @property content 메시지의 내용. 텍스트 및 이미지, 링크 정보 포함.
177
+ * @property commerce 컨텐츠에 대한 가격 정보
178
+ * @property buttons 버튼 목록. 버튼 타이틀과 링크를 변경하고 싶을때, 버튼 두개를 사용하고 싶을때 사용. (최대 2개)
179
+ * @property buttonTitle 기본 버튼 타이틀(자세히 보기)을 변경하고 싶을 때 설정. 이 값을 사용하면 클릭 시 이동할 링크는 content 에 입력된 값이 사용됨.
180
+ */
181
+ export interface KakaoCommerceTemplate {
182
+ content: KakaoTemplateContent;
183
+ commerce: KakaoTemplateCommerce;
184
+ buttons?: KakaoTemplateButton[];
185
+ buttonTitle?: string;
186
+ }
187
+
188
+ /**
189
+ * 텍스트형 기본 템플릿 클래스
190
+ *
191
+ * @property text 메시지에 들어갈 텍스트 (최대 200자)
192
+ * @property link 컨텐츠 클릭 시 이동할 링크 정보
193
+ * @property buttons 버튼 목록. 버튼 타이틀과 링크를 변경하고 싶을때, 버튼 두개를 사용하고 싶을때 사용. (최대 2개)
194
+ * @property buttonTitle 기본 버튼 타이틀(자세히 보기)을 변경하고 싶을 때 설정. 이 값을 사용하면 클릭 시 이동할 링크는 content에 입력된 값이 사용됨.
195
+ */
196
+ export interface KakaoTextTemplate {
197
+ text: string;
198
+ link: KakaoTemplateLink;
199
+ buttons?: KakaoTemplateButton[];
200
+ buttonTitle?: string;
201
+ }
202
+
203
+ /**
204
+ * 톡캘린더의 구독 캘린더 또는 공개 일정 정보를 포함한 메시지 형식입니다.
205
+ * 카카오톡 채널의 구독 캘린더 또는 공개 일정을 사용자의 톡캘린더에 추가하는 기능을 제공합니다.
206
+ *
207
+ * @property id 구독 캘린더 또는 공개 일정 ID
208
+ * @property idType id의 타입, event(공개 일정) 또는 calendar(구독 캘린더) 중 하나
209
+ * @property content 일정에 대해 설명하는 컨텐츠 정보
210
+ * @property buttons 버튼 목록. 기본 버튼의 타이틀 외에 링크도 변경하고 싶을 때 설정. (최대 1개, 오른쪽 위치 보기 버튼은 고정)
211
+ */
212
+ export interface KakaoCalendarTemplate {
213
+ id: string;
214
+ idType: 'event' | 'calendar';
215
+ content: KakaoTemplateContent;
216
+ buttons?: KakaoTemplateButton[];
217
+ }
218
+
5
219
  export interface Spec extends TurboModule {
6
220
  shareCustom(
7
221
  templateId: Int32,
8
222
  useWebBrowserIfKakaoTalkNotAvailable: boolean,
9
- templateArgs: UnsafeObject,
10
- serverCallbackArgs: UnsafeObject,
223
+ templateArgs: Readonly<{ [key: string]: string }>,
224
+ serverCallbackArgs: Readonly<{ [key: string]: string }>,
225
+ ): Promise<void>;
226
+
227
+ shareFeedTemplate(
228
+ value: UnsafeObject,
229
+ useWebBrowserIfKakaoTalkNotAvailable: boolean,
230
+ serverCallbackArgs: Readonly<{ [key: string]: string }>,
231
+ ): Promise<void>;
232
+
233
+ shareListTemplate(
234
+ value: UnsafeObject,
235
+ useWebBrowserIfKakaoTalkNotAvailable: boolean,
236
+ serverCallbackArgs: Readonly<{ [key: string]: string }>,
237
+ ): Promise<void>;
238
+
239
+ shareLocationTemplate(
240
+ value: UnsafeObject,
241
+ useWebBrowserIfKakaoTalkNotAvailable: boolean,
242
+ serverCallbackArgs: Readonly<{ [key: string]: string }>,
243
+ ): Promise<void>;
244
+
245
+ shareCommerceTemplate(
246
+ value: UnsafeObject,
247
+ useWebBrowserIfKakaoTalkNotAvailable: boolean,
248
+ serverCallbackArgs: Readonly<{ [key: string]: string }>,
249
+ ): Promise<void>;
250
+
251
+ shareTextTemplate(
252
+ value: UnsafeObject,
253
+ useWebBrowserIfKakaoTalkNotAvailable: boolean,
254
+ serverCallbackArgs: Readonly<{ [key: string]: string }>,
255
+ ): Promise<void>;
256
+
257
+ shareCalendarTemplate(
258
+ value: UnsafeObject,
259
+ useWebBrowserIfKakaoTalkNotAvailable: boolean,
260
+ serverCallbackArgs: Readonly<{ [key: string]: string }>,
11
261
  ): Promise<void>;
12
262
  }
13
263