为了解决wgt打包太大的问题,经过反复研究,决定把字体放到服务器,app通过网络加载字体,并把字体保存到本地,首次加载完成字体后,就不需要再次安装了,基本逻辑也实现了。具体做法是这样的:
1、通过 uni.getStorageSync('customFontLoaded') 判断是否已经下载字体,如果没现在执行字体下载。
2、使用 uni.downloadFile 下载字体,获得下载临时地址,再使用 uni.saveFile 保存文件,获得保存文件的路径后,再使用 plus.io.convertLocalFileSystemURL 接口把文件路径转成平台路径。
3、通过 uni.setStorageSync('customFontLoaded','ture') 和 uni.setStorageSync('customFontPath',filePath) 记录文件下载状态和文件的平台地址。
4、使用 uni.loadFontFace 引入这个字体文件地址。
到这一步,都没问题。
但第二次进入app后,uni.getStorageSync('customFontLoaded') 判断已经下载过,再通过 uni.getStorageSync('customFontPath') 拿到记录的平台地址。 进行 uni.loadFontFace 引入 时报错了: "errMsg": "loadFontFace:fail not font page"。
由于找不到原因,在下载完成后首次转平台路径时打印出平台地址:/storage/emulated/0/Android/data/io.dcloud.HBuilder/apps/HBuilder/doc/uniapp_save/16898184239830.ttf 这个地址是能加载成功的。
再次编译进入app,打印记录的平台地址,与下载完成打印的地址一致:/storage/emulated/0/Android/data/io.dcloud.HBuilder/apps/HBuilder/doc/uniapp_save/16898184239830.ttf,但报错了。
去手机上查了一下这个目录,发现文件是存在的。
请问各位大佬有没有遇到这个问题,该怎么解决?
0 个回复