ms-vite-plugin 1.5.8 → 1.5.10

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 (43) hide show
  1. package/dist/cli.js +6 -6
  2. package/dist/packaging/index.d.ts +4 -1
  3. package/dist/packaging/index.js +1 -1
  4. package/docs/api/device.md +5 -9
  5. package/docs/api/global.md +2 -2
  6. package/docs/api/jbclear.md +291 -0
  7. package/docs/api/jbdevice.md +574 -0
  8. package/docs/api/jbdylib.md +219 -0
  9. package/docs/api/jbshell.md +59 -0
  10. package/docs/api/jbsystem.md +211 -0
  11. package/docs/api/jbvpn.md +219 -0
  12. package/docs/api/pip.md +50 -15
  13. package/docs/api/plist.md +137 -0
  14. package/docs/api/ui.md +114 -0
  15. package/docs/apicn/device.md +4 -8
  16. package/docs/apicn/global.md +2 -2
  17. package/docs/apicn/pip.md +50 -15
  18. package/docs/apicn/ui.md +114 -0
  19. package/docs/apilua/device.md +5 -9
  20. package/docs/apilua/global.md +2 -2
  21. package/docs/apilua/jbclear.md +313 -0
  22. package/docs/apilua/jbdevice.md +609 -0
  23. package/docs/apilua/jbdylib.md +231 -0
  24. package/docs/apilua/jbshell.md +63 -0
  25. package/docs/apilua/jbsystem.md +225 -0
  26. package/docs/apilua/jbvpn.md +233 -0
  27. package/docs/apilua/pip.md +53 -15
  28. package/docs/apilua/plist.md +153 -0
  29. package/docs/apilua/ui.md +117 -0
  30. package/docs/apipython/device.md +6 -8
  31. package/docs/apipython/g.md +1 -1
  32. package/docs/apipython/jbclear.md +288 -0
  33. package/docs/apipython/jbdevice.md +570 -0
  34. package/docs/apipython/jbdylib.md +215 -0
  35. package/docs/apipython/jbshell.md +61 -0
  36. package/docs/apipython/jbsystem.md +216 -0
  37. package/docs/apipython/jbvpn.md +231 -0
  38. package/docs/apipython/overview.md +1 -1
  39. package/docs/apipython/pip.md +52 -15
  40. package/docs/apipython/plist.md +152 -0
  41. package/docs/apipython/ui.md +118 -0
  42. package/docs/httpapi/api.md +2 -2
  43. package/package.json +1 -1
package/docs/api/pip.md CHANGED
@@ -1,13 +1,14 @@
1
1
  # 悬浮窗模块 (PIP)
2
2
 
3
- 悬浮窗模块提供 iOS 画中画(Picture in Picture)悬浮窗能力,可用于显示脚本日志、保活提示或脚本自定义文本。
3
+ 悬浮窗模块提供 iOS 悬浮窗能力。免越狱包使用系统画中画(Picture in Picture),可用于显示脚本日志、保活提示或脚本自定义文本。越狱包使用同一套 `pip` API 控制全局悬浮球:保活只显示图标,日志显示图标和日志窗口,自定义显示图标和自定义文本窗口。
4
4
 
5
5
  ## 功能特性
6
6
 
7
- - **显示模式**:支持日志、保活和自定义三种显示模式;首次安装默认保活
7
+ - **显示模式**:支持日志、保活和自定义三种显示模式;首次安装默认关闭
8
8
  - **关闭控制**:支持主动关闭悬浮窗
9
9
  - **状态查询**:判断悬浮窗是否正在显示
10
- - **尺寸设置**:日志模式和自定义模式支持设置内容宽高比(实际显示尺寸由系统决定),并按模式分别持久化
10
+ - **尺寸设置**:日志模式和自定义模式支持设置尺寸并分别持久化。系统画中画为宽高比(实际显示尺寸由系统决定);越狱包为窗口宽高(像素)
11
+ - **位置设置**:越狱包可用 `setPosition` 设置日志窗口和自定义文本窗口位置;保活模式不接受;系统画中画位置由 iOS 管理
11
12
  - **日志显示**:日志模式支持设置日志文字大小
12
13
  - **自定义文本**:自定义模式支持文本、换行、文字颜色、背景色和文字大小
13
14
 
@@ -42,7 +43,7 @@ if (isActive) {
42
43
  function switchToLogMode(): boolean;
43
44
  ```
44
45
 
45
- 切换到日志模式并尝试显示悬浮窗日志窗口。首次显示悬浮窗时 App 必须在前台。日志模式会恢复最近一次保存的日志窗口尺寸。
46
+ 切换到日志模式并尝试显示悬浮窗日志窗口。首次显示系统画中画时 App 必须在前台。日志模式会恢复最近一次保存的日志窗口尺寸。越狱包显示悬浮球图标和日志窗口。
46
47
 
47
48
  **返回值:**
48
49
 
@@ -64,7 +65,7 @@ pip.setLogFontSize(10);
64
65
  function switchToKeepAliveMode(): boolean;
65
66
  ```
66
67
 
67
- 切换到保活模式并尝试显示极小高度悬浮窗。首次显示悬浮窗时 App 必须在前台。保活模式不接受脚本尺寸设置。
68
+ 切换到保活模式并尝试显示极小高度悬浮窗。首次显示系统画中画时 App 必须在前台。保活模式不接受脚本尺寸设置。越狱包只显示悬浮球图标。
68
69
 
69
70
  **返回值:**
70
71
 
@@ -85,7 +86,7 @@ const success = pip.switchToKeepAliveMode();
85
86
  function switchToCustomMode(): boolean;
86
87
  ```
87
88
 
88
- 切换到自定义模式并显示脚本设置的自定义文本。首次显示悬浮窗时 App 必须在前台。自定义模式会恢复最近一次保存的自定义窗口尺寸。
89
+ 切换到自定义模式并显示脚本设置的自定义文本。首次显示系统画中画时 App 必须在前台。自定义模式会恢复最近一次保存的自定义窗口尺寸。越狱包显示悬浮球图标和自定义文本窗口。
89
90
 
90
91
  **返回值:**
91
92
 
@@ -129,14 +130,14 @@ const success = pip.closeWindow();
129
130
  function setContentSize(width: number, height: number): boolean;
130
131
  ```
131
132
 
132
- 设置日志模式或自定义模式的悬浮窗内容尺寸。传入的宽高表示宽高比,不是最终像素尺寸;悬浮窗实际显示的宽高由系统决定。宽度和高度都必须传入有效数字。日志模式和自定义模式会分别保存尺寸;悬浮窗关闭状态和保活模式不会生效。
133
+ 设置日志模式或自定义模式的悬浮窗内容尺寸。系统画中画传入的宽高表示宽高比,不是最终像素尺寸,实际显示宽高由系统决定。越狱包传入的宽高是对应窗口的像素尺寸。宽度和高度都必须传入有效数字。日志模式和自定义模式会分别保存尺寸;关闭状态和保活模式不会生效。
133
134
 
134
135
  **参数:**
135
136
 
136
137
  | 参数 | 类型 | 必填 | 描述 |
137
138
  | -------- | ---------------- | ---- | ---------------------------------------------- |
138
- | `width` | `number` | 是 | 宽度方向比例值(与 `height` 共同决定宽高比,不是像素) |
139
- | `height` | `number` | 是 | 高度方向比例值(与 `width` 共同决定宽高比,不是像素) |
139
+ | `width` | `number` | 是 | 宽度。系统画中画为比例值;越狱包为窗口宽度(像素) |
140
+ | `height` | `number` | 是 | 高度。系统画中画为比例值;越狱包为窗口高度(像素) |
140
141
 
141
142
  **返回值:**
142
143
 
@@ -154,6 +155,34 @@ pip.switchToCustomMode();
154
155
  pip.setContentSize(120, 180);
155
156
  ```
156
157
 
158
+ ### setPosition - 设置位置
159
+
160
+ ```typescript
161
+ function setPosition(x: number, y: number): boolean;
162
+ ```
163
+
164
+ 设置悬浮窗位置。仅越狱包生效;系统画中画由 iOS 管理位置,调用返回 `false`。只对日志窗口和自定义文本窗口生效;保活模式不接受设置位置。
165
+
166
+ **参数:**
167
+
168
+ | 参数 | 类型 | 必填 | 描述 |
169
+ | ---- | -------- | ---- | ------------------ |
170
+ | `x` | `number` | 是 | 窗口左上角逻辑 X |
171
+ | `y` | `number` | 是 | 窗口左上角逻辑 Y |
172
+
173
+ **返回值:**
174
+
175
+ | 类型 | 描述 |
176
+ | --------- | ---------------------------------------------------------- |
177
+ | `boolean` | `true` 代表位置已提交;`false` 代表当前不能设置位置 |
178
+
179
+ **示例:**
180
+
181
+ ```typescript
182
+ pip.switchToLogMode();
183
+ pip.setPosition(24, 120);
184
+ ```
185
+
157
186
  ### setLogFontSize - 设置日志文字大小
158
187
 
159
188
  ```typescript
@@ -308,9 +337,9 @@ pip.setContentSize(120, 180);
308
337
 
309
338
  ## 注意事项
310
339
 
311
- 1. **前台限制**:首次切换到日志、保活或自定义显示模式并启动悬浮窗时,App 必须在前台;悬浮窗已启动后可以继续切换显示模式或关闭悬浮窗
312
- 2. **设备兼容性**:仅支持 iOS 15+ 且具备画中画功能的设备
313
- 3. **系统限制**:悬浮窗位置和实际显示尺寸由 iOS 管理
340
+ 1. **前台限制**:系统画中画首次切换到日志、保活或自定义显示模式并启动悬浮窗时,App 必须在前台;悬浮窗已启动后可以继续切换显示模式或关闭悬浮窗
341
+ 2. **设备兼容性**:系统画中画仅支持 iOS 15+ 且具备画中画功能的设备;越狱包全局悬浮球不依赖系统画中画
342
+ 3. **位置**:系统画中画位置由 iOS 管理;越狱包日志/自定义窗口可用 `setPosition`,保活模式不接受
314
343
  4. **尺寸持久化**:日志模式和自定义模式分别保存尺寸,互不共用;保活模式不接受脚本尺寸
315
344
  5. **日志字号**:日志字号只影响日志模式,保活模式和自定义模式不受影响
316
345
  6. **竖向文本**:自定义窗口高度大于宽度时,文本会按逐字符换行方式竖向显示
@@ -319,11 +348,17 @@ pip.setContentSize(120, 180);
319
348
 
320
349
  ### 悬浮窗无法显示
321
350
 
322
- - 确认设备支持悬浮窗功能
323
- - 检查悬浮窗权限是否已开启
324
- - 确认应用当前在前台
351
+ - 确认当前已切换到日志、保活或自定义模式,且不是关闭状态
352
+ - 系统画中画:确认设备支持悬浮窗功能,并检查悬浮窗权限是否已开启
353
+ - 系统画中画:确认应用当前在前台
325
354
 
326
355
  ### setContentSize 返回 false
327
356
 
328
357
  - 确认当前模式是日志模式或自定义模式
329
358
  - 确认宽度和高度都传入了有效数字
359
+
360
+ ### setPosition 返回 false
361
+
362
+ - 确认当前是越狱包,且已切换到日志或自定义模式,对应窗口已打开
363
+ - 保活模式不支持设置位置
364
+ - 确认 x、y 都传入了有效数字
@@ -0,0 +1,137 @@
1
+ # 属性列表模块 (Plist)
2
+
3
+ 路径必须是绝对路径。
4
+
5
+ ## API 参考
6
+
7
+ ### read - 读取整个 plist。
8
+
9
+ ```typescript
10
+ function read(path: string): any | null;
11
+ ```
12
+
13
+ **参数:**
14
+
15
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
16
+ | ------ | -------- | -------- | ------ | ------------ |
17
+ | `path` | `string` | 是 | - | 文件绝对路径 |
18
+
19
+ **返回值:**
20
+
21
+ | 类型 | 描述 |
22
+ | --------------- | ------ |
23
+ | `any` \| `null` | 根对象 |
24
+
25
+ **示例:**
26
+
27
+ ```javascript
28
+ const path = file.getInternalDir("documents") + "/info.plist";
29
+ const info = plist.read(path);
30
+ ```
31
+
32
+ ### write - 写成 plist。
33
+
34
+ ```typescript
35
+ function write(path: string, value: any, format?: "xml" | "binary"): boolean;
36
+ ```
37
+
38
+ **参数:**
39
+
40
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
41
+ | -------- | --------------------- | -------- | ------- | ------------------------------ |
42
+ | `path` | `string` | 是 | - | 文件绝对路径 |
43
+ | `value` | `any` | 是 | - | 字典、数组、字符串、数字或布尔 |
44
+ | `format` | `"xml"` \| `"binary"` | 否 | `"xml"` | 写入格式 |
45
+
46
+ **返回值:**
47
+
48
+ | 类型 | 描述 |
49
+ | --------- | ----------------- |
50
+ | `boolean` | 写入成功为 `true` |
51
+
52
+ **示例:**
53
+
54
+ ```javascript
55
+ const path = file.getInternalDir("documents") + "/info.plist";
56
+ plist.write(path, { name: "kuaijs", count: 1 });
57
+ plist.write(path, { name: "kuaijs" }, "binary");
58
+ ```
59
+
60
+ ### get - 按键读取。
61
+
62
+ ```typescript
63
+ function get(path: string, key: string | string[]): any | null;
64
+ ```
65
+
66
+ **参数:**
67
+
68
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
69
+ | ------ | ---------------------- | -------- | ------ | ---------------- |
70
+ | `path` | `string` | 是 | - | 文件绝对路径 |
71
+ | `key` | `string` \| `string[]` | 是 | - | 键,或嵌套键数组 |
72
+
73
+ **返回值:**
74
+
75
+ | 类型 | 描述 |
76
+ | --------------- | -------- |
77
+ | `any` \| `null` | 该键的值 |
78
+
79
+ **示例:**
80
+
81
+ ```javascript
82
+ plist.get(path, "name");
83
+ plist.get(path, ["a", "b"]);
84
+ ```
85
+
86
+ ### set - 按键写入。
87
+
88
+ ```typescript
89
+ function set(path: string, key: string | string[], value: any): boolean;
90
+ ```
91
+
92
+ **参数:**
93
+
94
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
95
+ | ------- | ---------------------- | -------- | ------ | ---------------- |
96
+ | `path` | `string` | 是 | - | 文件绝对路径 |
97
+ | `key` | `string` \| `string[]` | 是 | - | 键,或嵌套键数组 |
98
+ | `value` | `any` | 是 | - | 要写入的值 |
99
+
100
+ **返回值:**
101
+
102
+ | 类型 | 描述 |
103
+ | --------- | ----------------- |
104
+ | `boolean` | 写入成功为 `true` |
105
+
106
+ **示例:**
107
+
108
+ ```javascript
109
+ plist.set(path, "name", "kuaijs");
110
+ plist.set(path, ["a", "b"], 1);
111
+ ```
112
+
113
+ ### remove - 按键删除。
114
+
115
+ ```typescript
116
+ function remove(path: string, key: string | string[]): boolean;
117
+ ```
118
+
119
+ **参数:**
120
+
121
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
122
+ | ------ | ---------------------- | -------- | ------ | ---------------- |
123
+ | `path` | `string` | 是 | - | 文件绝对路径 |
124
+ | `key` | `string` \| `string[]` | 是 | - | 键,或嵌套键数组 |
125
+
126
+ **返回值:**
127
+
128
+ | 类型 | 描述 |
129
+ | --------- | ----------------- |
130
+ | `boolean` | 删除成功为 `true` |
131
+
132
+ **示例:**
133
+
134
+ ```javascript
135
+ plist.remove(path, "name");
136
+ plist.remove(path, ["a", "b"]);
137
+ ```
package/docs/api/ui.md CHANGED
@@ -119,6 +119,47 @@ ui.call("loadData", {
119
119
  });
120
120
  ```
121
121
 
122
+ ### callFloatingWindow - 调用越狱悬浮窗网页中的 JavaScript 函数
123
+
124
+ ```typescript
125
+ function callFloatingWindow(key: string, data: Record<string, any>): void;
126
+ ```
127
+
128
+ 调用悬浮窗网页里 `registerUIFunc` 注册的函数。主界面 WebView 不受影响。没有悬浮窗网页时无效果。
129
+
130
+ **参数:**
131
+
132
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
133
+ | ------ | ------------------- | -------- | ------ | ------------------------ |
134
+ | `key` | string | 是 | | 悬浮窗页面 JavaScript 方法名 |
135
+ | `data` | Record<string, any> | 是 | | 传递给方法的参数 |
136
+
137
+ **示例:**
138
+
139
+ ```typescript
140
+ ui.callFloatingWindow("updateStatus", { status: "running", progress: 50 });
141
+ ```
142
+
143
+ ### evalFloatingWindow - 在越狱悬浮窗网页中执行 JavaScript
144
+
145
+ ```typescript
146
+ function evalFloatingWindow(code: string): void;
147
+ ```
148
+
149
+ 在悬浮窗网页中执行 JavaScript。主界面 WebView 不受影响。没有悬浮窗网页时无效果。
150
+
151
+ **参数:**
152
+
153
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
154
+ | ------ | ------ | -------- | ------ | -------------------- |
155
+ | `code` | string | 是 | | JavaScript 代码字符串 |
156
+
157
+ **示例:**
158
+
159
+ ```typescript
160
+ ui.evalFloatingWindow("console.log('float')");
161
+ ```
162
+
122
163
  ### showToast - 显示 Toast 提示消息
123
164
 
124
165
  ```typescript
@@ -655,6 +696,30 @@ ms.getDeviceID()
655
696
  });
656
697
  ```
657
698
 
699
+ #### getOrientation - 获取屏幕方向
700
+
701
+ ```typescript
702
+ declare function getOrientation(): Promise<"PORTRAIT" | "LANDSCAPE">;
703
+ ```
704
+
705
+ **返回值:**
706
+
707
+ | 类型 | 描述 |
708
+ | ------------------------------------------- | ------------------------------------------------------------ |
709
+ | `Promise<"PORTRAIT" \| "LANDSCAPE">` | `"PORTRAIT"` 竖屏,`"LANDSCAPE"` 横屏 |
710
+
711
+ **说明:**
712
+
713
+ 获取当前屏幕方向。
714
+
715
+ **网页端示例:**
716
+
717
+ ```javascript
718
+ ms.getOrientation().then((orientation) => {
719
+ console.log(orientation);
720
+ });
721
+ ```
722
+
658
723
  #### getAuthCardNo - 获取缓存的授权卡密
659
724
 
660
725
  ```typescript
@@ -719,6 +784,55 @@ ms.openURL("https://www.baidu.com")
719
784
  });
720
785
  ```
721
786
 
787
+ #### setWebWindowSize - 设置网页窗口宽高
788
+
789
+ ```typescript
790
+ declare function setWebWindowSize(size: {
791
+ portraitWidth: number;
792
+ portraitHeight: number;
793
+ landscapeWidth: number;
794
+ landscapeHeight: number;
795
+ }): Promise<boolean>;
796
+ ```
797
+
798
+ **参数:**
799
+
800
+ | 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
801
+ | ------ | ------ | -------- | ------ | ------------------------ |
802
+ | `size` | object | 是 | | 横竖屏网页窗口像素尺寸 |
803
+
804
+ **`size` 字段:**
805
+
806
+ | 字段名 | 类型 | 是否必填 | 默认值 | 描述 |
807
+ | ----------------- | ------ | -------- | ------ | ---------------------- |
808
+ | `portraitWidth` | number | 是 | | 竖屏窗口宽度(像素) |
809
+ | `portraitHeight` | number | 是 | | 竖屏窗口高度(像素) |
810
+ | `landscapeWidth` | number | 是 | | 横屏窗口宽度(像素) |
811
+ | `landscapeHeight` | number | 是 | | 横屏窗口高度(像素) |
812
+
813
+ **返回值:**
814
+
815
+ | 类型 | 描述 |
816
+ | ------------------ | ------------------------------------- |
817
+ | `Promise<boolean>` | 如果设置成功返回 true,否则返回 false |
818
+
819
+ **说明:**
820
+
821
+ 仅越狱包可用。一次同时设置竖屏和横屏的网页窗口像素尺寸。未调用过时,横竖屏都默认使用对应朝向屏幕宽高的 60%。免越狱包调用返回 `false`。
822
+
823
+ **网页端示例:**
824
+
825
+ ```javascript
826
+ ms.setWebWindowSize({
827
+ portraitWidth: 700,
828
+ portraitHeight: 1200,
829
+ landscapeWidth: 1200,
830
+ landscapeHeight: 700,
831
+ }).then((ok) => {
832
+ console.log(ok);
833
+ });
834
+ ```
835
+
722
836
  ### 完整示例
723
837
 
724
838
  **完整的控制面板示例:**
@@ -61,10 +61,7 @@ $打印信息日志(`剩余存储: ${存储空间.free}${存储空间.unit}`);
61
61
 
62
62
  ### 获取设备 ID
63
63
 
64
- **注意事项:**
65
-
66
- - 这个 ID 卸载重装 APP 后会改变。
67
- - 更新 APP 后,不会改变。
64
+ 越狱包返回芯片生成的固定 ID,卸载重装不变;免越狱包返回 IDFV,卸载重装会改变。
68
65
 
69
66
  ```typescript
70
67
  function 获取设备ID(): 字符串;
@@ -72,14 +69,13 @@ function 获取设备ID(): 字符串;
72
69
 
73
70
  **返回值:**
74
71
 
75
- | 类型 | 描述 |
76
- | -------- | ---------------- |
77
- | `字符串` | 设备的唯一标识符 |
72
+ | 类型 | 描述 |
73
+ | -------- | ------- |
74
+ | `字符串` | 设备 ID |
78
75
 
79
76
  **示例:**
80
77
 
81
78
  ```typescript
82
- // 获取设备ID
83
79
  const uuid = $设备.获取设备ID();
84
80
  $打印信息日志(`设备ID: ${uuid}`);
85
81
  ```
@@ -66,10 +66,10 @@ $打印信息日志(`运行状态: ${$是否运行}`);
66
66
 
67
67
  #### **$平台**
68
68
 
69
- 平台信息,标识当前应用运行的平台,例如 "ios"、"android" 等。
69
+ 免越狱包为 `"ios"`,越狱包为 `"ios_jb"`。
70
70
 
71
71
  ```typescript
72
- declare const $平台: "ios" | "android";
72
+ declare const $平台: "ios" | "ios_jb";
73
73
  ```
74
74
 
75
75
  **示例:**
package/docs/apicn/pip.md CHANGED
@@ -1,13 +1,14 @@
1
1
  # 悬浮窗模块 ($悬浮窗)
2
2
 
3
- 悬浮窗模块提供 iOS 画中画(Picture in Picture)悬浮窗能力,可用于显示脚本日志、保活提示或脚本自定义文本。
3
+ 悬浮窗模块提供 iOS 悬浮窗能力。免越狱包使用系统画中画(Picture in Picture),可用于显示脚本日志、保活提示或脚本自定义文本。越狱包使用同一套 `$悬浮窗` API 控制全局悬浮球:保活只显示图标,日志显示图标和日志窗口,自定义显示图标和自定义文本窗口。
4
4
 
5
5
  ## 功能特性
6
6
 
7
- - **显示模式**:支持日志、保活和自定义三种显示模式;首次安装默认保活
7
+ - **显示模式**:支持日志、保活和自定义三种显示模式;首次安装默认关闭
8
8
  - **关闭控制**:支持主动关闭悬浮窗
9
9
  - **状态查询**:判断悬浮窗是否正在显示
10
- - **尺寸设置**:日志模式和自定义模式支持设置内容宽高比(实际显示尺寸由系统决定),并按模式分别持久化
10
+ - **尺寸设置**:日志模式和自定义模式支持设置尺寸并分别持久化。系统画中画为宽高比(实际显示尺寸由系统决定);越狱包为窗口宽高(像素)
11
+ - **位置设置**:越狱包可用 `设置位置` 设置日志窗口和自定义文本窗口位置;保活模式不接受;系统画中画位置由 iOS 管理
11
12
  - **日志显示**:日志模式支持设置日志文字大小
12
13
  - **自定义文本**:自定义模式支持文本、换行、文字颜色、背景色和文字大小
13
14
 
@@ -42,7 +43,7 @@ if (是否显示) {
42
43
  function 切换到日志模式(): 布尔值;
43
44
  ```
44
45
 
45
- 切换到日志模式并尝试显示悬浮窗日志窗口。首次显示悬浮窗时 App 必须在前台。日志模式会恢复最近一次保存的日志窗口尺寸。
46
+ 切换到日志模式并尝试显示悬浮窗日志窗口。首次显示系统画中画时 App 必须在前台。日志模式会恢复最近一次保存的日志窗口尺寸。越狱包显示悬浮球图标和日志窗口。
46
47
 
47
48
  **返回值:**
48
49
 
@@ -64,7 +65,7 @@ $悬浮窗.设置日志文字大小(10);
64
65
  function 切换到保活模式(): 布尔值;
65
66
  ```
66
67
 
67
- 切换到保活模式并尝试显示极小高度悬浮窗。首次显示悬浮窗时 App 必须在前台。保活模式不接受脚本尺寸设置。
68
+ 切换到保活模式并尝试显示极小高度悬浮窗。首次显示系统画中画时 App 必须在前台。保活模式不接受脚本尺寸设置。越狱包只显示悬浮球图标。
68
69
 
69
70
  **返回值:**
70
71
 
@@ -85,7 +86,7 @@ const 是否成功 = $悬浮窗.切换到保活模式();
85
86
  function 切换到自定义模式(): 布尔值;
86
87
  ```
87
88
 
88
- 切换到自定义模式并显示脚本设置的自定义文本。首次显示悬浮窗时 App 必须在前台。自定义模式会恢复最近一次保存的自定义窗口尺寸。
89
+ 切换到自定义模式并显示脚本设置的自定义文本。首次显示系统画中画时 App 必须在前台。自定义模式会恢复最近一次保存的自定义窗口尺寸。越狱包显示悬浮球图标和自定义文本窗口。
89
90
 
90
91
  **返回值:**
91
92
 
@@ -129,14 +130,14 @@ const 是否成功 = $悬浮窗.关闭悬浮窗();
129
130
  function 设置内容尺寸(宽度: 数字, 高度: 数字): 布尔值;
130
131
  ```
131
132
 
132
- 设置日志模式或自定义模式的悬浮窗内容尺寸。传入的宽高表示宽高比,不是最终像素尺寸;悬浮窗实际显示的宽高由系统决定。宽度和高度都必须传入有效数字。日志模式和自定义模式会分别保存尺寸;悬浮窗关闭状态和保活模式不会生效。
133
+ 设置日志模式或自定义模式的悬浮窗内容尺寸。系统画中画传入的宽高表示宽高比,不是最终像素尺寸,实际显示宽高由系统决定。越狱包传入的宽高是对应窗口的像素尺寸。宽度和高度都必须传入有效数字。日志模式和自定义模式会分别保存尺寸;关闭状态和保活模式不会生效。
133
134
 
134
135
  **参数:**
135
136
 
136
137
  | 参数 | 类型 | 必填 | 描述 |
137
138
  | ------ | ------------- | ---- | ---------------------------------------------- |
138
- | `宽度` | `数字` | 是 | 宽度方向比例值(与高度共同决定宽高比,不是像素) |
139
- | `高度` | `数字` | 是 | 高度方向比例值(与宽度共同决定宽高比,不是像素) |
139
+ | `宽度` | `数字` | 是 | 宽度。系统画中画为比例值;越狱包为窗口宽度(像素) |
140
+ | `高度` | `数字` | 是 | 高度。系统画中画为比例值;越狱包为窗口高度(像素) |
140
141
 
141
142
  **返回值:**
142
143
 
@@ -154,6 +155,34 @@ $悬浮窗.切换到自定义模式();
154
155
  $悬浮窗.设置内容尺寸(120, 180);
155
156
  ```
156
157
 
158
+ ### 设置位置
159
+
160
+ ```typescript
161
+ function 设置位置(横坐标: 数字, 纵坐标: 数字): 布尔值;
162
+ ```
163
+
164
+ 设置悬浮窗位置。仅越狱包生效;系统画中画由 iOS 管理位置,调用返回 `false`。只对日志窗口和自定义文本窗口生效;保活模式不接受设置位置。
165
+
166
+ **参数:**
167
+
168
+ | 参数 | 类型 | 必填 | 描述 |
169
+ | -------- | ------ | ---- | ------------------ |
170
+ | `横坐标` | `数字` | 是 | 窗口左上角逻辑 X |
171
+ | `纵坐标` | `数字` | 是 | 窗口左上角逻辑 Y |
172
+
173
+ **返回值:**
174
+
175
+ | 类型 | 描述 |
176
+ | -------- | --------------------------------------------------- |
177
+ | `布尔值` | `true` 代表位置已提交;`false` 代表当前不能设置位置 |
178
+
179
+ **示例:**
180
+
181
+ ```typescript
182
+ $悬浮窗.切换到日志模式();
183
+ $悬浮窗.设置位置(24, 120);
184
+ ```
185
+
157
186
  ### 设置日志文字大小
158
187
 
159
188
  ```typescript
@@ -308,9 +337,9 @@ $悬浮窗.设置内容尺寸(120, 180);
308
337
 
309
338
  ## 注意事项
310
339
 
311
- 1. **前台限制**:首次切换到日志、保活或自定义显示模式并启动悬浮窗时,App 必须在前台;悬浮窗已启动后可以继续切换显示模式或关闭悬浮窗
312
- 2. **设备兼容性**:仅支持 iOS 15+ 且具备画中画功能的设备
313
- 3. **系统限制**:悬浮窗位置和实际显示尺寸由 iOS 管理
340
+ 1. **前台限制**:系统画中画首次切换到日志、保活或自定义显示模式并启动悬浮窗时,App 必须在前台;悬浮窗已启动后可以继续切换显示模式或关闭悬浮窗
341
+ 2. **设备兼容性**:系统画中画仅支持 iOS 15+ 且具备画中画功能的设备;越狱包全局悬浮球不依赖系统画中画
342
+ 3. **位置**:系统画中画位置由 iOS 管理;越狱包日志/自定义窗口可用 `设置位置`,保活模式不接受
314
343
  4. **尺寸持久化**:日志模式和自定义模式分别保存尺寸,互不共用;保活模式不接受脚本尺寸
315
344
  5. **日志字号**:日志字号只影响日志模式,保活模式和自定义模式不受影响
316
345
  6. **竖向文本**:自定义窗口高度大于宽度时,文本会按逐字符换行方式竖向显示
@@ -319,11 +348,17 @@ $悬浮窗.设置内容尺寸(120, 180);
319
348
 
320
349
  ### 悬浮窗无法显示
321
350
 
322
- - 确认设备支持悬浮窗功能
323
- - 检查悬浮窗权限是否已开启
324
- - 确认应用当前在前台
351
+ - 确认当前已切换到日志、保活或自定义模式,且不是关闭状态
352
+ - 系统画中画:确认设备支持悬浮窗功能,并检查悬浮窗权限是否已开启
353
+ - 系统画中画:确认应用当前在前台
325
354
 
326
355
  ### 设置内容尺寸返回 false
327
356
 
328
357
  - 确认当前模式是日志模式或自定义模式
329
358
  - 确认宽度和高度都传入了有效数字
359
+
360
+ ### 设置位置返回 false
361
+
362
+ - 确认当前是越狱包,且已切换到日志或自定义模式,对应窗口已打开
363
+ - 保活模式不支持设置位置
364
+ - 确认横坐标、纵坐标都传入了有效数字