@ayden-fc2/riffle-bridge-web 1.0.2 → 1.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.
- package/README.md +27 -5
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
## 1. tweaks和RiffleBridge用法总览
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
本文档为当前Web应用提供Bridge使用指导,以连接外层native应用。分为必选的tweaks和可选的RiffleBridge两个API。
|
|
6
6
|
|
|
7
7
|
**安装依赖:**
|
|
8
8
|
```bash
|
|
@@ -160,13 +160,14 @@ const tilt = bridge.utils.getTiltDirection(x, y);
|
|
|
160
160
|
```
|
|
161
161
|
|
|
162
162
|
### 3.3 音频模块(录音、播放)
|
|
163
|
+
> 特别注意拿到的uri文件资源是webview外的native文件路径,当前webview无法直接播放音频,请参考录音模块代码,先调用readAsBase64转码再播放!
|
|
163
164
|
|
|
164
165
|
**播放模块:**
|
|
165
166
|
|
|
166
167
|
单例模式实现,主要用于不需要用户交互就直接播放的背景音乐等,点击音效等仍由web应用本身实现
|
|
167
168
|
|
|
168
169
|
```
|
|
169
|
-
// 播放,支持传入 local://xxx 或 file://xxx
|
|
170
|
+
// 播放,支持传入 local://xxx 或 file://xxx 的native本地路径,或 https://xxx 的url网址
|
|
170
171
|
await bridge.audio.playOnline({ uri: playUri });
|
|
171
172
|
|
|
172
173
|
// 播放并循环(适用于背景音乐)
|
|
@@ -207,15 +208,27 @@ console.log('时长:', result.durationMillis / 1000, '秒');
|
|
|
207
208
|
|
|
208
209
|
// 保存录音(以aydens-voice为例,实际可以替换为web应用的独特键,或者result.uri的独特文件名)
|
|
209
210
|
if (result?.uri) {
|
|
211
|
+
// 保存文件到native应用并记录map
|
|
210
212
|
await bridge.fileStorage.addCustomFileMapping('local://recording/aydens-voice', result.uri);
|
|
211
213
|
}
|
|
212
214
|
|
|
213
|
-
//
|
|
215
|
+
// 1. 后续让native层播放
|
|
214
216
|
await bridge.audio.playOnline({ uri: 'local://recording/aydens-voice' });
|
|
217
|
+
|
|
218
|
+
// 2. 后续直接让web播放
|
|
219
|
+
const audioData = await bridge.fileStorage.readAsBase64(result.uri);
|
|
220
|
+
const audio = new Audio(audioData.dataUrl); // dataUrl 已是完整 'data:audio/mp4;base64,...'
|
|
221
|
+
audio.play();
|
|
222
|
+
|
|
223
|
+
// 或使用 React 方式
|
|
224
|
+
<audio src={audioData.dataUrl} controls />
|
|
225
|
+
|
|
215
226
|
```
|
|
216
227
|
|
|
217
228
|
### 3.4 相机模块(实时相机、拍照、相册、闪光灯)
|
|
218
229
|
|
|
230
|
+
>> 特别注意拿到的uri文件资源是webview外的native文件路径,当前webview无法直接渲染,请参考下方**拍照/相册**的代码,先调用readAsBase64转码再渲染!
|
|
231
|
+
|
|
219
232
|
**实时相机**
|
|
220
233
|
|
|
221
234
|
相机采用「透明 WebView + 原生相机层」实现,**打开相机时必须设置web应用背景透明**。
|
|
@@ -229,7 +242,9 @@ document.body.style.background = 'transparent';
|
|
|
229
242
|
document.documentElement.style.background = 'transparent';
|
|
230
243
|
document.getElementById('root')!.style.background = 'transparent';
|
|
231
244
|
|
|
232
|
-
// 拍照
|
|
245
|
+
// 拍照
|
|
246
|
+
// ⚠️ 拍照后不要直接渲染,参考下方**拍照/相册**的代码,先调用readAsBase64转码再渲染!
|
|
247
|
+
// ⚠️ 拍照后如果需要保存,也参考下方**拍照/相册**的代码调用native的文件存储模块保存并记录map
|
|
233
248
|
const photo = await bridge.camera.takePhoto();
|
|
234
249
|
|
|
235
250
|
// 切换摄像头
|
|
@@ -277,13 +292,14 @@ await bridge.camera.setFilter('none');
|
|
|
277
292
|
// 1. 拍照(以aydens-demo-photo为例,实际web应用使用picked.uri文件名或组特的key)
|
|
278
293
|
const photo = await bridge.fileStorage.takePhoto();
|
|
279
294
|
if (!photo?.cancelled) {
|
|
280
|
-
//
|
|
295
|
+
// 保存文件到native应用并记录map
|
|
281
296
|
await bridge.fileStorage.addCustomFileMapping('local://photos/aydens-demo-photo', photo.uri);
|
|
282
297
|
}
|
|
283
298
|
|
|
284
299
|
// 2. 或从相册选择(以aydens-photo为例,实际web应用使用picked.uri文件名或组特的key)
|
|
285
300
|
const picked = await bridge.fileStorage.pickFromGallery();
|
|
286
301
|
if (!picked?.cancelled) {
|
|
302
|
+
// 保存文件到native应用并记录map
|
|
287
303
|
await bridge.fileStorage.addCustomFileMapping('local://photos/aydens-demo-photo', picked.uri);
|
|
288
304
|
}
|
|
289
305
|
|
|
@@ -300,6 +316,7 @@ const base64 = await bridge.fileStorage.readAsBase64('local://photos/aydens-demo
|
|
|
300
316
|
当应用需要闪光灯而不要实时相机时,可以使用非透明web应用背景来遮挡实时相机
|
|
301
317
|
|
|
302
318
|
### 3.5 文件存储模块
|
|
319
|
+
>> 特别注意拿到的uri文件资源是webview外的native文件路径,当前webview无法直接渲染图片或播放音频,请参考下方代码,先调用readAsBase64转码再渲染或播放!相机&录音等模块也都有联动说明
|
|
303
320
|
|
|
304
321
|
文件映射系统维护了一个MAP映射表,支持本地文件和网络资源两种存储,web应用要根据需求选择使用哪种
|
|
305
322
|
|
|
@@ -332,6 +349,11 @@ console.log(result.cached ? '使用缓存' : '已下载', result.uri);
|
|
|
332
349
|
const base64 = await bridge.fileStorage.readAsBase64(url);
|
|
333
350
|
```
|
|
334
351
|
|
|
352
|
+
**读取资源并解码base64,从native传入web**
|
|
353
|
+
```
|
|
354
|
+
// uri为mapRecord记录值
|
|
355
|
+
const base64 = await bridge.fileStorage.readAsBase64(mapRecord);
|
|
356
|
+
```
|
|
335
357
|
|
|
336
358
|
|
|
337
359
|
### 3.6 设备信息模块
|