@simplysm/capacitor-plugin-broadcast 13.0.95 → 13.0.97

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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/README.md +0 -144
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simplysm/capacitor-plugin-broadcast",
3
- "version": "13.0.95",
3
+ "version": "13.0.97",
4
4
  "description": "Simplysm Package - Capacitor Broadcast Plugin",
5
5
  "author": "simplysm",
6
6
  "license": "MIT",
package/README.md DELETED
@@ -1,144 +0,0 @@
1
- # @simplysm/capacitor-plugin-broadcast
2
-
3
- Capacitor Android 브로드캐스트 리시버 플러그인. 바코드 스캐너, PDA 등 산업용 기기의 인텐트 브로드캐스트를 수신/발신한다.
4
-
5
- ## 설치
6
-
7
- ```bash
8
- npm install @simplysm/capacitor-plugin-broadcast
9
- ```
10
-
11
- **Peer:** `@capacitor/core` ^7.4.4
12
- **외부 의존성 없음**
13
-
14
- ## Export 목록
15
-
16
- ```typescript
17
- // index.ts
18
- export { Broadcast } from "./Broadcast";
19
- export type { BroadcastPlugin, BroadcastResult } from "./BroadcastPlugin";
20
- ```
21
-
22
- ## 주요 사용법
23
-
24
- ### 브로드캐스트 구독
25
-
26
- 특정 인텐트 액션 필터로 구독하고, 브로드캐스트 수신 시 콜백을 실행한다.
27
-
28
- ```typescript
29
- import { Broadcast } from "@simplysm/capacitor-plugin-broadcast";
30
-
31
- // 구독 (unsubscribe 함수 반환)
32
- const unsubscribe = await Broadcast.subscribe(
33
- ["com.symbol.datawedge.api.RESULT_ACTION", "com.example.SCAN_RESULT"],
34
- (result) => {
35
- // result.action: 수신된 액션 이름
36
- // result.extras: 추가 데이터 (Record<string, unknown>)
37
- },
38
- );
39
-
40
- // 구독 해제
41
- await unsubscribe();
42
-
43
- // 전체 구독 해제
44
- await Broadcast.unsubscribeAll();
45
- ```
46
-
47
- ### 브로드캐스트 전송
48
-
49
- ```typescript
50
- await Broadcast.send({
51
- action: "com.symbol.datawedge.api.ACTION",
52
- extras: {
53
- "com.symbol.datawedge.api.SOFT_SCAN_TRIGGER": "TOGGLE_SCANNING",
54
- },
55
- });
56
- ```
57
-
58
- ### 런치 인텐트 조회
59
-
60
- 앱을 시작한 인텐트 정보를 가져온다.
61
-
62
- ```typescript
63
- const intent = await Broadcast.getLaunchIntent();
64
- // { action?: string, extras?: Record<string, unknown> }
65
- ```
66
-
67
- ### 새 인텐트 리스너
68
-
69
- 앱이 실행 중일 때 수신되는 새 인텐트를 감지한다 (`onNewIntent`).
70
-
71
- ```typescript
72
- import type { PluginListenerHandle } from "@capacitor/core";
73
-
74
- const handle: PluginListenerHandle = await Broadcast.addListener(
75
- "newIntent",
76
- (data) => {
77
- // data.action, data.extras
78
- },
79
- );
80
-
81
- // 리스너 해제
82
- await handle.remove();
83
-
84
- // 전체 리스너 해제
85
- await Broadcast.removeAllListeners();
86
- ```
87
-
88
- ## API 레퍼런스
89
-
90
- ### `Broadcast` (abstract class, static 메서드)
91
-
92
- | 메서드 | 시그니처 | 설명 |
93
- |--------|----------|------|
94
- | `subscribe` | `(filters: string[], callback: (result: BroadcastResult) => void) => Promise<() => Promise<void>>` | 브로드캐스트 구독. unsubscribe 함수 반환 |
95
- | `unsubscribeAll` | `() => Promise<void>` | 모든 구독 해제 |
96
- | `send` | `(options: { action: string; extras?: Record<string, unknown> }) => Promise<void>` | 브로드캐스트 전송 |
97
- | `getLaunchIntent` | `() => Promise<BroadcastResult>` | 런치 인텐트 조회 |
98
- | `addListener` | `(eventName: "newIntent", callback: (result: BroadcastResult) => void) => Promise<PluginListenerHandle>` | 이벤트 리스너 등록 |
99
- | `removeAllListeners` | `() => Promise<void>` | 모든 이벤트 리스너 해제 |
100
-
101
- ### `BroadcastResult` (interface)
102
-
103
- ```typescript
104
- interface BroadcastResult {
105
- action?: string; // 브로드캐스트 액션 이름
106
- extras?: Record<string, unknown>; // 추가 데이터
107
- }
108
- ```
109
-
110
- ### `BroadcastPlugin` (interface, 저수준)
111
-
112
- `Broadcast` 클래스가 래핑하는 Capacitor 플러그인 인터페이스. 직접 사용할 일은 거의 없다.
113
-
114
- ```typescript
115
- interface BroadcastPlugin {
116
- subscribe(options: { filters: string[] }, callback: (result: BroadcastResult) => void): Promise<{ id: string }>;
117
- unsubscribe(options: { id: string }): Promise<void>;
118
- unsubscribeAll(): Promise<void>;
119
- send(options: { action: string; extras?: Record<string, unknown> }): Promise<void>;
120
- getLaunchIntent(): Promise<BroadcastResult>;
121
- addListener(eventName: "newIntent", listenerFunc: (data: BroadcastResult) => void): Promise<PluginListenerHandle>;
122
- removeAllListeners(): Promise<void>;
123
- }
124
- ```
125
-
126
- ## 플랫폼 지원
127
-
128
- | 기능 | Android | Web |
129
- |------|---------|-----|
130
- | 구독 | BroadcastReceiver + IntentFilter 등록 | 경고 후 스텁 반환 (`id: "web-stub"`) |
131
- | 구독 해제 | `unregisterReceiver` | no-op |
132
- | 전송 | `sendBroadcast(intent)` | 경고 후 no-op |
133
- | 런치 인텐트 | `Activity.getIntent()` | 빈 객체 `{}` 반환 |
134
- | 새 인텐트 | `handleOnNewIntent` -> `notifyListeners` | Capacitor WebPlugin 기본 동작 |
135
-
136
- ## Android 네이티브 구현
137
-
138
- - **패키지:** `kr.co.simplysm.capacitor.broadcast`
139
- - **플러그인명:** `Broadcast`
140
- - `subscribe`: `RETURN_CALLBACK` 방식 (call.setKeepAlive), UUID 기반 receiver ID 관리
141
- - extras 타입 지원: `String`, `Integer`, `Long`, `Double`, `Boolean`, `JSONArray`(-> String[]), `JSONObject`(-> Bundle)
142
- - Intent -> JSON 변환: `Bundle`의 모든 키를 순회하며 타입별 변환 (`Parcelable` -> `toString()` 포함)
143
- - Android 13+: `RECEIVER_EXPORTED` 플래그 사용
144
- - `handleOnDestroy`에서 모든 receiver 자동 해제