@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.
Files changed (2) hide show
  1. package/README.md +27 -5
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## 1. tweaks和RiffleBridge用法总览
4
4
 
5
- 本文档为Web应用提供Bridge使用指导,以连接外层native应用。分为必选的tweaks和可选的RiffleBridge两个API。
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 的本地路径,或 https://xxx 的url网址
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
- // photo.uri 是沙箱内的本地路径
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 设备信息模块
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ayden-fc2/riffle-bridge-web",
3
- "version": "1.0.2",
3
+ "version": "1.0.4",
4
4
  "description": "Riffle Bridge Web SDK - WebView 与 Native 通信桥接库",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",