MiEcosystem / miot-plugin-sdk

MIoT Plugin SDK for Android&iOS(beta)
400 stars 188 forks source link

判断文件是否存在 #1065

Closed lijian9088 closed 5 years ago

lijian9088 commented 5 years ago

是否为新品(必填) 新品

关联的产品名称(必填) 米兔儿童牙刷

项目ID(必填) PRJ18-SOOCA-X-003

企业名称(必填) 舒可士(深圳)科技有限公司

环境(必填)

电脑操作系统:[Mac OS] 手机系统:[iOS 12.2,iphone6] SDK分支: [master] 相关模块:[File] 现象(必填) 使用file.download方法下载文件到本地。 操作1:杀掉米家,重新打开米家,3秒内快速进入插件,插件内判断文件是否存在,显示不存在。退出插件,重新进如插件,判断文件是否存在,显示文件存在。

操作2:杀掉米家,重新打开米家,等待5秒以上进入插件,判断文件是否存在,显示存在。

期望(必填) 快速进入插件的时候能正确判断文件是否存在。 还有希望能添加获取文件路径的方法。

其他的上下文/日志/截图 image

尝试过的解决办法

santcool commented 5 years ago

此问题调试的时候是否存在?有没有报什么错误信息?

lijian9088 commented 5 years ago

调试下因为进插件前需要点击确认,所以暂时没发现这个情况。这个是需要发包到米家后台,白名单测试的时候才能复现。

lijian9088 commented 5 years ago

then后的exist是false,不会走到catch里面。

Woody2016 commented 5 years ago

还有希望能添加获取文件路径的方法。--- 想要获取文件路径干啥?

lijian9088 commented 5 years ago

插件内需要播放视频,这个视频大概30m,需求是下载一次,以后都能播放,,但是只有下载得时候才能获取到路径,没有其他的方法获取。

santcool commented 5 years ago

下载下来的那个path,你可以通过Host.storage.set('key1','value1', {expire:3600})来保存到本地,后续播放的时候,通过Host.storage.get('key1')去获取。而且还提供了Host.file. readFileList()方法,读取文件列表。提供单一文件路径的方法必要性不大。

lijian9088 commented 5 years ago

目前的解决方法就是使用Host.storage来保存和获取的。先用Host.storage获取文件路径,再通过Host.file.isFileExists判断文件存在,如果两者都false,就需要重新下载。现在问题是:实际已经下载过文件,按照我上面描述的操作步骤,用Host.file.isFileExists判断文件返回false。 image image image

lijian9088 commented 5 years ago

现在使用Host.storage保存路径,Host.file.isFileExists判断存在与否,然后用于播放视频,会有几率出现错误。 android下: 错误码是-2147483648 image ios下:错误码是-1100

我想问下这个是什么情况,这个错误码对应的是什么错误。?这种情况怎么处理。? 而且我发现,添加两个不同的牙刷设备,分别进入插件,这个Host.storage取出的路径是一样的,是不是说Host.storage保存和获取是不分插件的?

lijian9088 commented 5 years ago

在oppo r9m必现视频出错的问题。。

lijian9088 commented 5 years ago

今天遇到了下载文件到本地,会有两个不同的保存位置,

'/var/mobile/Containers/Data/Application/0D950390-745C-4E42-9E70-E30DE47170C6/Documents/PluginStorage/(null)/musicFile_1_13.mp3'

{ path: '/var/mobile/Containers/Data/Application/0D950390-745C-4E42-9E70-E30DE47170C6/Documents/PluginStorage/com.soocas.mc/musicFile_1_1.mp3', filename: 'musicFile_1_1.mp3' }

这个PluginStorage后面的包名会有null的情况。

santcool commented 5 years ago

没获取到包名,奇怪~我晚点查一下哈

lijian9088 commented 5 years ago

请问有查到什么原因吗

lijian9088 commented 5 years ago

请问有查到什么原因吗

santcool commented 5 years ago

看来不能用Storage存储全路径,ios中,app重启后,全路径中部分位置会变。

lijian9088 commented 5 years ago

那这个要怎么解决?

santcool commented 5 years ago

https://fir.im/tes5?release_id=5d4bf2ecf94548525cad0e2d,请使用此包测试,看看问题是否已解决