@simplysm/capacitor-plugin-intent 12.16.52 → 14.0.4

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 (36) hide show
  1. package/README.md +69 -139
  2. package/android/build.gradle +1 -0
  3. package/android/src/main/kotlin/kr/co/simplysm/capacitor/intent/IntentPlugin.kt +365 -0
  4. package/dist/Intent.d.ts +29 -18
  5. package/dist/Intent.d.ts.map +1 -0
  6. package/dist/Intent.js +41 -22
  7. package/dist/Intent.js.map +1 -0
  8. package/dist/IntentPlugin.d.ts +72 -0
  9. package/dist/IntentPlugin.d.ts.map +1 -0
  10. package/dist/IntentPlugin.js +2 -0
  11. package/dist/IntentPlugin.js.map +1 -0
  12. package/dist/index.d.ts +2 -1
  13. package/dist/index.d.ts.map +1 -0
  14. package/dist/index.js +4 -2
  15. package/dist/index.js.map +1 -0
  16. package/dist/web/IntentWeb.d.ts +7 -5
  17. package/dist/web/IntentWeb.d.ts.map +1 -0
  18. package/dist/web/IntentWeb.js +17 -13
  19. package/dist/web/IntentWeb.js.map +1 -0
  20. package/package.json +15 -10
  21. package/src/Intent.ts +56 -25
  22. package/src/IntentPlugin.ts +81 -0
  23. package/src/index.ts +2 -1
  24. package/src/web/IntentWeb.ts +27 -16
  25. package/android/src/main/java/kr/co/simplysm/capacitor/intent/IntentPlugin.java +0 -376
  26. package/dist/IIntentPlugin.d.ts +0 -63
  27. package/dist/IIntentPlugin.js +0 -1
  28. package/src/IIntentPlugin.ts +0 -65
  29. package/tests/slice1-directory-and-config.spec.ts +0 -50
  30. package/tests/slice2-java-renaming.spec.ts +0 -34
  31. package/tests/slice3-typescript-renaming.spec.ts +0 -76
  32. package/tests/slice4-docs-and-deprecation.spec.ts +0 -31
  33. package/tests/slice5-start-activity-for-result-android.spec.md +0 -98
  34. package/tests/slice5-start-activity-for-result-types.spec.ts +0 -40
  35. package/tests/slice6-start-activity-for-result-web.spec.ts +0 -34
  36. package/tsconfig.json +0 -8
package/dist/Intent.d.ts CHANGED
@@ -1,12 +1,14 @@
1
- import { IActivityResult, IIntentResult, IStartActivityForResultOptions } from "./IIntentPlugin";
1
+ import type { PluginListenerHandle } from "@capacitor/core";
2
+ import type { IntentResult, StartActivityForResultOptions, StartActivityForResultResult } from "./IntentPlugin";
2
3
  /**
3
- * Android Intent 송수신 플러그인
4
- * - 산업용 장치(바코드 스캐너, PDA 등) 연동용
4
+ * Android 인텐트 플러그인
5
+ * - 브로드캐스트 송수신, 실행 인텐트 조회
6
+ * - 산업용 디바이스 연동용 (바코드 스캐너, PDA 등)
5
7
  */
6
8
  export declare abstract class Intent {
7
9
  /**
8
- * Intent 수신 등록
9
- * @returns 해제 함수
10
+ * 브로드캐스트 수신기 등록
11
+ * @returns 구독 해제 함수
10
12
  *
11
13
  * @example
12
14
  * ```ts
@@ -15,17 +17,17 @@ export declare abstract class Intent {
15
17
  * (result) => console.log(result.extras)
16
18
  * );
17
19
  *
18
- * // 해제
20
+ * // 구독 해제
19
21
  * unsub();
20
22
  * ```
21
23
  */
22
- static subscribe(filters: string[], callback: (result: IIntentResult) => void): Promise<() => Promise<void>>;
24
+ static subscribe(filters: string[], callback: (result: IntentResult) => void): Promise<() => Promise<void>>;
23
25
  /**
24
- * 모든 Intent 수신기 해제
26
+ * 모든 브로드캐스트 수신기 구독 해제
25
27
  */
26
28
  static unsubscribeAll(): Promise<void>;
27
29
  /**
28
- * Intent 전송
30
+ * 브로드캐스트 전송
29
31
  *
30
32
  * @example
31
33
  * ```ts
@@ -42,23 +44,32 @@ export declare abstract class Intent {
42
44
  extras?: Record<string, unknown>;
43
45
  }): Promise<void>;
44
46
  /**
45
- * 시작 Intent 가져오기
47
+ * 실행 인텐트 조회
46
48
  */
47
- static getLaunchIntent(): Promise<IIntentResult>;
49
+ static getLaunchIntent(): Promise<IntentResult>;
48
50
  /**
49
- * Activity 시작 후 결과 수신
51
+ * 이벤트 리스너 등록
52
+ * @returns 리스너 핸들 (handle.remove()로 해제)
53
+ */
54
+ static addListener(eventName: "newIntent", callback: (result: IntentResult) => void): Promise<PluginListenerHandle>;
55
+ /**
56
+ * 모든 이벤트 리스너 제거
57
+ */
58
+ static removeAllListeners(): Promise<void>;
59
+ /**
60
+ * startActivityForResult로 외부 Activity를 실행하고 결과를 수신한다
50
61
  *
51
62
  * @example
52
63
  * ```ts
53
64
  * const result = await Intent.startActivityForResult({
54
- * action: "android.intent.action.GET_CONTENT",
55
- * type: "image/*",
65
+ * action: "com.example.PAY",
66
+ * extras: { amount: 1000 },
56
67
  * });
57
- *
58
- * if (result.resultCode === -1) { // RESULT_OK
59
- * console.log("Selected:", result.data);
68
+ * if (result.resultCode === -1) {
69
+ * // RESULT_OK
60
70
  * }
61
71
  * ```
62
72
  */
63
- static startActivityForResult(options: IStartActivityForResultOptions): Promise<IActivityResult>;
73
+ static startActivityForResult(options: StartActivityForResultOptions): Promise<StartActivityForResultResult>;
64
74
  }
75
+ //# sourceMappingURL=Intent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Intent.d.ts","sourceRoot":"","sources":["../src/Intent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,KAAK,EAEV,YAAY,EACZ,6BAA6B,EAC7B,4BAA4B,EAC7B,MAAM,gBAAgB,CAAC;AASxB;;;;GAIG;AACH,8BAAsB,MAAM;IAC1B;;;;;;;;;;;;;;OAcG;WACU,SAAS,CACpB,OAAO,EAAE,MAAM,EAAE,EACjB,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,GACvC,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAY/B;;OAEG;WACU,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5C;;;;;;;;;;;;OAYG;WACU,IAAI,CAAC,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/F;;OAEG;WACU,eAAe,IAAI,OAAO,CAAC,YAAY,CAAC;IAIrD;;;OAGG;WACU,WAAW,CACtB,SAAS,EAAE,WAAW,EACtB,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,GACvC,OAAO,CAAC,oBAAoB,CAAC;IAIhC;;OAEG;WACU,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIhD;;;;;;;;;;;;;OAaG;WACU,sBAAsB,CACjC,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,4BAA4B,CAAC;CAGzC"}
package/dist/Intent.js CHANGED
@@ -1,18 +1,19 @@
1
1
  import { registerPlugin } from "@capacitor/core";
2
- const IntentPlugin = registerPlugin("Intent", {
2
+ const intentPlugin = registerPlugin("Intent", {
3
3
  web: async () => {
4
- const { IntentWeb } = await import("./web/IntentWeb");
4
+ const { IntentWeb } = await import("./web/IntentWeb.js");
5
5
  return new IntentWeb();
6
6
  },
7
7
  });
8
8
  /**
9
- * Android Intent 송수신 플러그인
10
- * - 산업용 장치(바코드 스캐너, PDA 등) 연동용
9
+ * Android 인텐트 플러그인
10
+ * - 브로드캐스트 송수신, 실행 인텐트 조회
11
+ * - 산업용 디바이스 연동용 (바코드 스캐너, PDA 등)
11
12
  */
12
13
  export class Intent {
13
14
  /**
14
- * Intent 수신 등록
15
- * @returns 해제 함수
15
+ * 브로드캐스트 수신기 등록
16
+ * @returns 구독 해제 함수
16
17
  *
17
18
  * @example
18
19
  * ```ts
@@ -21,24 +22,29 @@ export class Intent {
21
22
  * (result) => console.log(result.extras)
22
23
  * );
23
24
  *
24
- * // 해제
25
+ * // 구독 해제
25
26
  * unsub();
26
27
  * ```
27
28
  */
28
29
  static async subscribe(filters, callback) {
29
- const { id } = await IntentPlugin.subscribe({ filters }, callback);
30
+ const { id } = await intentPlugin.subscribe({ filters }, (result) => {
31
+ // { id }만 포함된 초기 resolve를 필터링
32
+ if (result.action != null) {
33
+ callback(result);
34
+ }
35
+ });
30
36
  return async () => {
31
- await IntentPlugin.unsubscribe({ id });
37
+ await intentPlugin.unsubscribe({ id });
32
38
  };
33
39
  }
34
40
  /**
35
- * 모든 Intent 수신기 해제
41
+ * 모든 브로드캐스트 수신기 구독 해제
36
42
  */
37
43
  static async unsubscribeAll() {
38
- await IntentPlugin.unsubscribeAll();
44
+ await intentPlugin.unsubscribeAll();
39
45
  }
40
46
  /**
41
- * Intent 전송
47
+ * 브로드캐스트 전송
42
48
  *
43
49
  * @example
44
50
  * ```ts
@@ -51,30 +57,43 @@ export class Intent {
51
57
  * ```
52
58
  */
53
59
  static async send(options) {
54
- await IntentPlugin.send(options);
60
+ await intentPlugin.send(options);
55
61
  }
56
62
  /**
57
- * 시작 Intent 가져오기
63
+ * 실행 인텐트 조회
58
64
  */
59
65
  static async getLaunchIntent() {
60
- return await IntentPlugin.getLaunchIntent();
66
+ return intentPlugin.getLaunchIntent();
61
67
  }
62
68
  /**
63
- * Activity 시작 후 결과 수신
69
+ * 이벤트 리스너 등록
70
+ * @returns 리스너 핸들 (handle.remove()로 해제)
71
+ */
72
+ static async addListener(eventName, callback) {
73
+ return intentPlugin.addListener(eventName, callback);
74
+ }
75
+ /**
76
+ * 모든 이벤트 리스너 제거
77
+ */
78
+ static async removeAllListeners() {
79
+ await intentPlugin.removeAllListeners();
80
+ }
81
+ /**
82
+ * startActivityForResult로 외부 Activity를 실행하고 결과를 수신한다
64
83
  *
65
84
  * @example
66
85
  * ```ts
67
86
  * const result = await Intent.startActivityForResult({
68
- * action: "android.intent.action.GET_CONTENT",
69
- * type: "image/*",
87
+ * action: "com.example.PAY",
88
+ * extras: { amount: 1000 },
70
89
  * });
71
- *
72
- * if (result.resultCode === -1) { // RESULT_OK
73
- * console.log("Selected:", result.data);
90
+ * if (result.resultCode === -1) {
91
+ * // RESULT_OK
74
92
  * }
75
93
  * ```
76
94
  */
77
95
  static async startActivityForResult(options) {
78
- return await IntentPlugin.startActivityForResult(options);
96
+ return intentPlugin.startActivityForResult(options);
79
97
  }
80
98
  }
99
+ //# sourceMappingURL=Intent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Intent.js","sourceRoot":"","sources":["../src/Intent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AASjD,MAAM,YAAY,GAAG,cAAc,CAAe,QAAQ,EAAE;IAC1D,GAAG,EAAE,KAAK,IAAI,EAAE;QACd,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACtD,OAAO,IAAI,SAAS,EAAE,CAAC;IACzB,CAAC;CACF,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,OAAgB,MAAM;IAC1B;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,KAAK,CAAC,SAAS,CACpB,OAAiB,EACjB,QAAwC;QAExC,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE;YAClE,8BAA8B;YAC9B,IAAI,MAAM,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;gBAC1B,QAAQ,CAAC,MAAM,CAAC,CAAC;YACnB,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,KAAK,IAAI,EAAE;YAChB,MAAM,YAAY,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACzC,CAAC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,cAAc;QACzB,MAAM,YAAY,CAAC,cAAc,EAAE,CAAC;IACtC,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAA6D;QAC7E,MAAM,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,eAAe;QAC1B,OAAO,YAAY,CAAC,eAAe,EAAE,CAAC;IACxC,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,KAAK,CAAC,WAAW,CACtB,SAAsB,EACtB,QAAwC;QAExC,OAAO,YAAY,CAAC,WAAW,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,kBAAkB;QAC7B,MAAM,YAAY,CAAC,kBAAkB,EAAE,CAAC;IAC1C,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,KAAK,CAAC,sBAAsB,CACjC,OAAsC;QAEtC,OAAO,YAAY,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACtD,CAAC;CACF"}
@@ -0,0 +1,72 @@
1
+ import type { PluginListenerHandle } from "@capacitor/core";
2
+ export interface IntentResult {
3
+ /** 브로드캐스트 액션 */
4
+ action?: string;
5
+ /** 추가 데이터 */
6
+ extras?: Record<string, unknown>;
7
+ }
8
+ export interface StartActivityForResultOptions {
9
+ action?: string;
10
+ uri?: string;
11
+ extras?: Record<string, unknown>;
12
+ /** MIME type */
13
+ type?: string;
14
+ /** 특정 앱 지정 */
15
+ packageName?: string;
16
+ /** 특정 Activity 지정 */
17
+ className?: string;
18
+ /** Intent flags */
19
+ flags?: number;
20
+ }
21
+ export interface StartActivityForResultResult {
22
+ resultCode: number;
23
+ data?: {
24
+ action?: string;
25
+ uri?: string;
26
+ extras?: Record<string, unknown>;
27
+ };
28
+ }
29
+ export interface IntentPlugin {
30
+ /**
31
+ * 브로드캐스트 수신기 등록
32
+ */
33
+ subscribe(options: {
34
+ filters: string[];
35
+ }, callback: (result: IntentResult) => void): Promise<{
36
+ id: string;
37
+ }>;
38
+ /**
39
+ * 특정 브로드캐스트 수신기 구독 해제
40
+ */
41
+ unsubscribe(options: {
42
+ id: string;
43
+ }): Promise<void>;
44
+ /**
45
+ * 모든 브로드캐스트 수신기 구독 해제
46
+ */
47
+ unsubscribeAll(): Promise<void>;
48
+ /**
49
+ * 브로드캐스트 전송
50
+ */
51
+ send(options: {
52
+ action: string;
53
+ extras?: Record<string, unknown>;
54
+ }): Promise<void>;
55
+ /**
56
+ * 실행 인텐트 조회
57
+ */
58
+ getLaunchIntent(): Promise<IntentResult>;
59
+ /**
60
+ * 앱 실행 중 수신되는 새 인텐트에 대한 리스너 등록
61
+ */
62
+ addListener(eventName: "newIntent", listenerFunc: (data: IntentResult) => void): Promise<PluginListenerHandle>;
63
+ /**
64
+ * 모든 이벤트 리스너 제거
65
+ */
66
+ removeAllListeners(): Promise<void>;
67
+ /**
68
+ * startActivityForResult로 외부 Activity를 실행하고 결과를 수신한다
69
+ */
70
+ startActivityForResult(options: StartActivityForResultOptions): Promise<StartActivityForResultResult>;
71
+ }
72
+ //# sourceMappingURL=IntentPlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IntentPlugin.d.ts","sourceRoot":"","sources":["../src/IntentPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAE5D,MAAM,WAAW,YAAY;IAC3B,gBAAgB;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa;IACb,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,6BAA6B;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,gBAAgB;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,4BAA4B;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE;QACL,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAClC,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,SAAS,CACP,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,EAC9B,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,GACvC,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAE3B;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpD;;OAEG;IACH,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhC;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnF;;OAEG;IACH,eAAe,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC;IAEzC;;OAEG;IACH,WAAW,CACT,SAAS,EAAE,WAAW,EACtB,YAAY,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,GACzC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAEjC;;OAEG;IACH,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpC;;OAEG;IACH,sBAAsB,CACpB,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,4BAA4B,CAAC,CAAC;CAC1C"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=IntentPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IntentPlugin.js","sourceRoot":"","sources":["../src/IntentPlugin.ts"],"names":[],"mappings":""}
package/dist/index.d.ts CHANGED
@@ -1,2 +1,3 @@
1
- export * from "./IIntentPlugin";
2
1
  export * from "./Intent";
2
+ export * from "./IntentPlugin";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC"}
package/dist/index.js CHANGED
@@ -1,2 +1,4 @@
1
- export * from "./IIntentPlugin";
2
- export * from "./Intent";
1
+ // 인텐트
2
+ export * from "./Intent.js";
3
+ export * from "./IntentPlugin.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,MAAM;AACN,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC"}
@@ -1,9 +1,10 @@
1
1
  import { WebPlugin } from "@capacitor/core";
2
- import { IActivityResult, IIntentPlugin, IIntentResult, IStartActivityForResultOptions } from "../IIntentPlugin";
3
- export declare class IntentWeb extends WebPlugin implements IIntentPlugin {
2
+ import type { IntentPlugin, IntentResult, StartActivityForResultOptions, StartActivityForResultResult } from "../IntentPlugin";
3
+ export declare class IntentWeb extends WebPlugin implements IntentPlugin {
4
+ private static readonly _warn;
4
5
  subscribe(_options: {
5
6
  filters: string[];
6
- }, _callback: (result: IIntentResult) => void): Promise<{
7
+ }, _callback: (result: IntentResult) => void): Promise<{
7
8
  id: string;
8
9
  }>;
9
10
  unsubscribe(_options: {
@@ -14,6 +15,7 @@ export declare class IntentWeb extends WebPlugin implements IIntentPlugin {
14
15
  action: string;
15
16
  extras?: Record<string, unknown>;
16
17
  }): Promise<void>;
17
- getLaunchIntent(): Promise<IIntentResult>;
18
- startActivityForResult(_options: IStartActivityForResultOptions): Promise<IActivityResult>;
18
+ getLaunchIntent(): Promise<IntentResult>;
19
+ startActivityForResult(_options: StartActivityForResultOptions): Promise<StartActivityForResultResult>;
19
20
  }
21
+ //# sourceMappingURL=IntentWeb.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IntentWeb.d.ts","sourceRoot":"","sources":["../../src/web/IntentWeb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,6BAA6B,EAC7B,4BAA4B,EAC7B,MAAM,iBAAiB,CAAC;AAEzB,qBAAa,SAAU,SAAQ,SAAU,YAAW,YAAY;IAC9D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAEiB;IAE9C,SAAS,CACP,QAAQ,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,EAC/B,SAAS,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,GACxC,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAKpB,WAAW,CAAC,QAAQ,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpD,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAIrC,IAAI,CAAC,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAKnF,eAAe,IAAI,OAAO,CAAC,YAAY,CAAC;IAIxC,sBAAsB,CACpB,QAAQ,EAAE,6BAA6B,GACtC,OAAO,CAAC,4BAA4B,CAAC;CAIzC"}
@@ -1,24 +1,28 @@
1
1
  import { WebPlugin } from "@capacitor/core";
2
2
  export class IntentWeb extends WebPlugin {
3
- async subscribe(_options, _callback) {
4
- alert("[Intent] 환경에서는 Intent를 지원하지 않습니다.");
5
- return await Promise.resolve({ id: "web-stub" });
3
+ static _warn = () =>
4
+ // eslint-disable-next-line no-console
5
+ console.warn("[Intent] 환경에서는 지원하지 않습니다.");
6
+ subscribe(_options, _callback) {
7
+ IntentWeb._warn();
8
+ return Promise.resolve({ id: "web-stub" });
6
9
  }
7
10
  async unsubscribe(_options) {
8
- await Promise.resolve();
11
+ // 웹에서는 동작 없음
9
12
  }
10
13
  async unsubscribeAll() {
11
- await Promise.resolve();
14
+ // 웹에서는 동작 없음
12
15
  }
13
- async send(_options) {
14
- alert("[Intent] 웹 환경에서는 Intent를 지원하지 않습니다.");
15
- await Promise.resolve();
16
+ send(_options) {
17
+ IntentWeb._warn();
18
+ return Promise.resolve();
16
19
  }
17
- async getLaunchIntent() {
18
- return await Promise.resolve({});
20
+ getLaunchIntent() {
21
+ return Promise.resolve({});
19
22
  }
20
- async startActivityForResult(_options) {
21
- alert("[Intent] 웹 환경에서는 startActivityForResult를 지원하지 않습니다.");
22
- return await Promise.resolve({ resultCode: 0 });
23
+ startActivityForResult(_options) {
24
+ IntentWeb._warn();
25
+ return Promise.resolve({ resultCode: 0 });
23
26
  }
24
27
  }
28
+ //# sourceMappingURL=IntentWeb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IntentWeb.js","sourceRoot":"","sources":["../../src/web/IntentWeb.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAQ5C,MAAM,OAAO,SAAU,SAAQ,SAAS;IAC9B,MAAM,CAAU,KAAK,GAAG,GAAG,EAAE;IACnC,sCAAsC;IACtC,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAE9C,SAAS,CACP,QAA+B,EAC/B,SAAyC;QAEzC,SAAS,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,QAAwB;QACxC,aAAa;IACf,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,aAAa;IACf,CAAC;IAED,IAAI,CAAC,QAA8D;QACjE,SAAS,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,eAAe;QACb,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IAED,sBAAsB,CACpB,QAAuC;QAEvC,SAAS,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;IAC5C,CAAC"}
package/package.json CHANGED
@@ -1,26 +1,31 @@
1
1
  {
2
2
  "name": "@simplysm/capacitor-plugin-intent",
3
- "version": "12.16.52",
4
- "description": "심플리즘 패키지 - Capacitor Intent Plugin",
5
- "author": "김석래",
3
+ "version": "14.0.4",
4
+ "description": "심플리즘 패키지 - Capacitor Intent 플러그인",
5
+ "author": "심플리즘",
6
+ "license": "Apache-2.0",
6
7
  "repository": {
7
8
  "type": "git",
8
9
  "url": "https://github.com/kslhunter/simplysm.git",
9
10
  "directory": "packages/capacitor-plugin-intent"
10
11
  },
11
- "license": "MIT",
12
12
  "type": "module",
13
13
  "main": "./dist/index.js",
14
14
  "types": "./dist/index.d.ts",
15
+ "files": [
16
+ "dist",
17
+ "src",
18
+ "android"
19
+ ],
20
+ "devDependencies": {
21
+ "@capacitor/core": "^7.6.1"
22
+ },
23
+ "peerDependencies": {
24
+ "@capacitor/core": "^7"
25
+ },
15
26
  "capacitor": {
16
27
  "android": {
17
28
  "src": "android"
18
29
  }
19
- },
20
- "peerDependencies": {
21
- "@capacitor/core": "^7.4.4"
22
- },
23
- "devDependencies": {
24
- "@capacitor/core": "^7.6.1"
25
30
  }
26
31
  }
package/src/Intent.ts CHANGED
@@ -1,7 +1,13 @@
1
1
  import { registerPlugin } from "@capacitor/core";
2
- import { IActivityResult, IIntentPlugin, IIntentResult, IStartActivityForResultOptions } from "./IIntentPlugin";
2
+ import type { PluginListenerHandle } from "@capacitor/core";
3
+ import type {
4
+ IntentPlugin,
5
+ IntentResult,
6
+ StartActivityForResultOptions,
7
+ StartActivityForResultResult,
8
+ } from "./IntentPlugin";
3
9
 
4
- const IntentPlugin = registerPlugin<IIntentPlugin>("Intent", {
10
+ const intentPlugin = registerPlugin<IntentPlugin>("Intent", {
5
11
  web: async () => {
6
12
  const { IntentWeb } = await import("./web/IntentWeb");
7
13
  return new IntentWeb();
@@ -9,13 +15,14 @@ const IntentPlugin = registerPlugin<IIntentPlugin>("Intent", {
9
15
  });
10
16
 
11
17
  /**
12
- * Android Intent 송수신 플러그인
13
- * - 산업용 장치(바코드 스캐너, PDA 등) 연동용
18
+ * Android 인텐트 플러그인
19
+ * - 브로드캐스트 송수신, 실행 인텐트 조회
20
+ * - 산업용 디바이스 연동용 (바코드 스캐너, PDA 등)
14
21
  */
15
22
  export abstract class Intent {
16
23
  /**
17
- * Intent 수신 등록
18
- * @returns 해제 함수
24
+ * 브로드캐스트 수신기 등록
25
+ * @returns 구독 해제 함수
19
26
  *
20
27
  * @example
21
28
  * ```ts
@@ -24,29 +31,34 @@ export abstract class Intent {
24
31
  * (result) => console.log(result.extras)
25
32
  * );
26
33
  *
27
- * // 해제
34
+ * // 구독 해제
28
35
  * unsub();
29
36
  * ```
30
37
  */
31
38
  static async subscribe(
32
39
  filters: string[],
33
- callback: (result: IIntentResult) => void,
40
+ callback: (result: IntentResult) => void,
34
41
  ): Promise<() => Promise<void>> {
35
- const { id } = await IntentPlugin.subscribe({ filters }, callback);
42
+ const { id } = await intentPlugin.subscribe({ filters }, (result) => {
43
+ // { id }만 포함된 초기 resolve를 필터링
44
+ if (result.action != null) {
45
+ callback(result);
46
+ }
47
+ });
36
48
  return async () => {
37
- await IntentPlugin.unsubscribe({ id });
49
+ await intentPlugin.unsubscribe({ id });
38
50
  };
39
51
  }
40
52
 
41
53
  /**
42
- * 모든 Intent 수신기 해제
54
+ * 모든 브로드캐스트 수신기 구독 해제
43
55
  */
44
56
  static async unsubscribeAll(): Promise<void> {
45
- await IntentPlugin.unsubscribeAll();
57
+ await intentPlugin.unsubscribeAll();
46
58
  }
47
59
 
48
60
  /**
49
- * Intent 전송
61
+ * 브로드캐스트 전송
50
62
  *
51
63
  * @example
52
64
  * ```ts
@@ -59,32 +71,51 @@ export abstract class Intent {
59
71
  * ```
60
72
  */
61
73
  static async send(options: { action: string; extras?: Record<string, unknown> }): Promise<void> {
62
- await IntentPlugin.send(options);
74
+ await intentPlugin.send(options);
63
75
  }
64
76
 
65
77
  /**
66
- * 시작 Intent 가져오기
78
+ * 실행 인텐트 조회
67
79
  */
68
- static async getLaunchIntent(): Promise<IIntentResult> {
69
- return await IntentPlugin.getLaunchIntent();
80
+ static async getLaunchIntent(): Promise<IntentResult> {
81
+ return intentPlugin.getLaunchIntent();
70
82
  }
71
83
 
72
84
  /**
73
- * Activity 시작 후 결과 수신
85
+ * 이벤트 리스너 등록
86
+ * @returns 리스너 핸들 (handle.remove()로 해제)
87
+ */
88
+ static async addListener(
89
+ eventName: "newIntent",
90
+ callback: (result: IntentResult) => void,
91
+ ): Promise<PluginListenerHandle> {
92
+ return intentPlugin.addListener(eventName, callback);
93
+ }
94
+
95
+ /**
96
+ * 모든 이벤트 리스너 제거
97
+ */
98
+ static async removeAllListeners(): Promise<void> {
99
+ await intentPlugin.removeAllListeners();
100
+ }
101
+
102
+ /**
103
+ * startActivityForResult로 외부 Activity를 실행하고 결과를 수신한다
74
104
  *
75
105
  * @example
76
106
  * ```ts
77
107
  * const result = await Intent.startActivityForResult({
78
- * action: "android.intent.action.GET_CONTENT",
79
- * type: "image/*",
108
+ * action: "com.example.PAY",
109
+ * extras: { amount: 1000 },
80
110
  * });
81
- *
82
- * if (result.resultCode === -1) { // RESULT_OK
83
- * console.log("Selected:", result.data);
111
+ * if (result.resultCode === -1) {
112
+ * // RESULT_OK
84
113
  * }
85
114
  * ```
86
115
  */
87
- static async startActivityForResult(options: IStartActivityForResultOptions): Promise<IActivityResult> {
88
- return await IntentPlugin.startActivityForResult(options);
116
+ static async startActivityForResult(
117
+ options: StartActivityForResultOptions,
118
+ ): Promise<StartActivityForResultResult> {
119
+ return intentPlugin.startActivityForResult(options);
89
120
  }
90
121
  }
@@ -0,0 +1,81 @@
1
+ import type { PluginListenerHandle } from "@capacitor/core";
2
+
3
+ export interface IntentResult {
4
+ /** 브로드캐스트 액션 */
5
+ action?: string;
6
+ /** 추가 데이터 */
7
+ extras?: Record<string, unknown>;
8
+ }
9
+
10
+ export interface StartActivityForResultOptions {
11
+ action?: string;
12
+ uri?: string;
13
+ extras?: Record<string, unknown>;
14
+ /** MIME type */
15
+ type?: string;
16
+ /** 특정 앱 지정 */
17
+ packageName?: string;
18
+ /** 특정 Activity 지정 */
19
+ className?: string;
20
+ /** Intent flags */
21
+ flags?: number;
22
+ }
23
+
24
+ export interface StartActivityForResultResult {
25
+ resultCode: number;
26
+ data?: {
27
+ action?: string;
28
+ uri?: string;
29
+ extras?: Record<string, unknown>;
30
+ };
31
+ }
32
+
33
+ export interface IntentPlugin {
34
+ /**
35
+ * 브로드캐스트 수신기 등록
36
+ */
37
+ subscribe(
38
+ options: { filters: string[] },
39
+ callback: (result: IntentResult) => void,
40
+ ): Promise<{ id: string }>;
41
+
42
+ /**
43
+ * 특정 브로드캐스트 수신기 구독 해제
44
+ */
45
+ unsubscribe(options: { id: string }): Promise<void>;
46
+
47
+ /**
48
+ * 모든 브로드캐스트 수신기 구독 해제
49
+ */
50
+ unsubscribeAll(): Promise<void>;
51
+
52
+ /**
53
+ * 브로드캐스트 전송
54
+ */
55
+ send(options: { action: string; extras?: Record<string, unknown> }): Promise<void>;
56
+
57
+ /**
58
+ * 실행 인텐트 조회
59
+ */
60
+ getLaunchIntent(): Promise<IntentResult>;
61
+
62
+ /**
63
+ * 앱 실행 중 수신되는 새 인텐트에 대한 리스너 등록
64
+ */
65
+ addListener(
66
+ eventName: "newIntent",
67
+ listenerFunc: (data: IntentResult) => void,
68
+ ): Promise<PluginListenerHandle>;
69
+
70
+ /**
71
+ * 모든 이벤트 리스너 제거
72
+ */
73
+ removeAllListeners(): Promise<void>;
74
+
75
+ /**
76
+ * startActivityForResult로 외부 Activity를 실행하고 결과를 수신한다
77
+ */
78
+ startActivityForResult(
79
+ options: StartActivityForResultOptions,
80
+ ): Promise<StartActivityForResultResult>;
81
+ }
package/src/index.ts CHANGED
@@ -1,2 +1,3 @@
1
- export * from "./IIntentPlugin";
1
+ // 인텐트
2
2
  export * from "./Intent";
3
+ export * from "./IntentPlugin";