@simplysm/capacitor-plugin-broadcast 13.0.96 → 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.
- package/package.json +1 -1
- package/README.md +0 -144
package/package.json
CHANGED
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 타입 (JSON -> Intent):** `String`, `Integer`, `Long`, `Double`, `Boolean`, `JSONArray`(-> `String[]`), `JSONObject`(-> `Bundle`)
|
|
142
|
-
- **수신 시 extras 타입 (Intent -> JSON):** `String`, `Integer`, `Long`, `Double`, `Float`(-> `Double`), `Boolean`, `Bundle`(-> 재귀 변환), `String[]`, `int[]`, `Parcelable`(-> `toString()`), `Parcelable[]`, 기타(-> `toString()`)
|
|
143
|
-
- Android 13+: `RECEIVER_EXPORTED` 플래그 사용
|
|
144
|
-
- `handleOnDestroy`에서 모든 receiver 자동 해제
|