起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1088|回复: 5

[结贴] 关于IOS打包的疑惑

[复制链接]

6

主题

17

帖子

57

积分

初级会员

Rank: 2

积分
57
QQ
发表于 2016-3-15 16:53:36 | 显示全部楼层 |阅读模式
我的应用打包后,APP成功安装在苹果手机上了,不过有些问题不太清楚,如下:
1.在IOS上跑的APP是基于Chrome浏览器内核还是Safari内核环境的?或者什么环境?
2.我的应用里涉及对文件本机存储和读取,其中用到了HTML5的FileSystem API,但是我查了一下支持的浏览器,现在好像只有Chrome对它有完善的支持,Safari应该是不支持的。
3.从运行上看,苹果手机里运行会报navigator.webkitPersistentStorage.requestQuota未定义(undefined)的错误,安卓上却不会。
4.有没有相关的解决办法或者替代方案呢?谢谢。

6

主题

17

帖子

57

积分

初级会员

Rank: 2

积分
57
QQ
 楼主| 发表于 2016-3-17 16:58:04 | 显示全部楼层
已经解决了,是因为IOS路径不支持cdvfile://localhost/persistent/这种格式,已经改用window.requestFileSystem取存储路径的方案,结帖。
回复 支持 反对

使用道具 举报

发表于 2016-3-15 17:32:04 | 显示全部楼层
1.在app上跑的应用都是基于手机内核自带的浏览器运行的!在ios系统上就是运行的Safari
2.关于文件的操作,请使用cordova插件来做!文件操作的相关插件请看下清单:http://doc.wex5.com/?p=11382
3.请问这个插件有没有打到包里!另外看一下源码这个插件中有没有提供ios的代码!写代码建议判断运行的环境,然后再写对用的代码:
UI2/system/lib/base/browser.js 
比如外卖案例中判断:justep.Browser.isWeChat

4.请问你这个插件是什么插件??你试试是不是/Native/plugins/cordova-plugin-file 引起的??
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

6

主题

17

帖子

57

积分

初级会员

Rank: 2

积分
57
QQ
 楼主| 发表于 2016-3-16 09:09:53 | 显示全部楼层
本帖最后由 1350808883 于 2016-3-16 09:11 编辑
liangyongfei 发表于 2016-3-15 17:32
1.在app上跑的应用都是基于手机内核自带的浏览器运行的!在ios系统上就是运行的Safari
2.关于文 ...

版主回复得这么快,点赞!
最初文件打开就是用平台上的rg.apache.cordova.file-opener2插件来做的,在安卓上都可以正常运行,不过到了IOS上打开文件时,执行到该段代码就直接退出应用了,在SAFARI调试也同时退出,所以看不到什么错。后来就尝试用HTML5的FileSystem API来做,发现safari就不支持。这里直接贴上原来调用插件的代码吧,如下:
Model.prototype.openFile = function(event){
//获取点击的文件名称
                var attachName =event.bindingContext.$object.val("id")+"_"+ event.bindingContext.$object.val("attachName");
//拼接文件所在位置字符串,this.fileDir为一固定值
                var uri =  "cdvfile://localhost/persistent/"+this.fileDir+"/"+attachName;
                var contentType = attachName.substring(attachName.indexOf(".")+1,attachName.length);
//进入这行后,IOS下直接闪退,安卓系统则可以成功打开
                cordova.plugins.fileOpener2.open(uri, MIMEType.getMIMETypeFromExtension(contentType), {
                        error : function(errorObj) {
                                if(errorObj.status==9){
                                        justep.Util.hint('找不到文件,请重新下载文件。');
                                        return;
                                }
                                justep.Util.hint('Error status: ' + errorObj.status + ' - Error message: ' + errorObj.message);
                        },
                        success : function() {
                                console.log("调用插件成功.");
                        }
                });
        };



回复 支持 反对

使用道具 举报

6

主题

17

帖子

57

积分

初级会员

Rank: 2

积分
57
QQ
 楼主| 发表于 2016-3-16 10:30:43 | 显示全部楼层
我测试了提供的例子:/UI2/demo/native/fileOpener/index.w,可以在IOS里成功打开图片。难道与我的文件保存路径有关?我下载时的文件保存路径是自定义的,例如:var filePath = "cdvfile://localhost/persistent/safemanage/appFile/abc.txt";
fileOpener2打开的时候也会指向这个地址。是不是安卓跟苹果对文件存储的要求不一样造成的呢?
回复 支持 反对

使用道具 举报

发表于 2016-3-16 15:15:22 | 显示全部楼层
1350808883 发表于 2016-3-16 10:30
我测试了提供的例子:/UI2/demo/native/fileOpener/index.w,可以在IOS里成功打开图片。难道与我的文件保存 ...

是的,有可能android 和 ios 调用的方法不一样!所以你参考下平台的案例吧!
在代码中判断是什么环境,执行什么代码!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-4-27 22:35 , Processed in 0.059158 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表