ios cancelfullscrren 并没有退出全屏_开发过程中,在ios平台遇到的坑竟比安卓多,解决方今天全给你!...

温馨提示:本文篇幅较长,建议讲究阅读策略,抓住每段的重点语句。

由于并不是专职移动端app开发,但是看着丰富多彩的app, 真是手痒痒,想自己亲手动手创造一个自己的app,来满足一下自己的成就感,那么有想法很好,二话不说自己就开始动手开干了,经过一系列调查,最终采用的技术选型是 h5+cordova技术来实现这个问题,用这种选型的好处就是开发效率高,能够实现一份代码多个平台,非常省心,当然,不好的地方是可能并没有原生开发的app那么流畅,不过相信随着h5技术的提升,这一差距也会逐渐的减小(根据实际做出的效果,个人感觉流畅度还是不错的,很难分辨出是原生的还是非原生的)。

ecb9ce23b3dbf69a58f6a6c366d6d818.png

技术选型ok之后,就开始动手开干了,开始的第一步,开始写逻辑代码,利用2周的业余时间总共写了2600多行js代码,这2600行js代码算是全部功能的实现了,然后将这些代码部署了在我的一个几百块钱的安卓手机上之后,发现一些都还顺利,一切效果都是按照自己的意愿去执行的,既然安卓这么顺利了,我就想部署在苹果里也差不到哪里去,可是大错特错了,放在了我的iphone7中的运行体验真是太糟糕了,竟然还不如几百块钱的安卓里体验好,不过经过一些列的处理与代码兼容的调整,最后在我的iphone7里达到了理想的效果,那么接下来我就说说我所遇见的问题以及我是怎么去解决它的。

d0f05280d4f7608ea2649c18ffa7b150.png

全屏显示问题

作为一个娱乐游戏性的app, 个人感觉只有全屏展示才显得比较高端大气不是么?因此,没得说必须要全屏,在安卓下实现全屏很简单,按照cordova的官方说明在配置文件里加一句 这样的代码就可以轻松搞定这个问题了,可是到了ios下,发现这么做并没有什么卵用,那个可恶的电池条非常坚强的在那存在着,一丝不动,我尝试了n多种办法他依然淡定的在那里存在着,像是故意气我似的,最后找到了解决方法,在一个project.plist文件里加了两行配置,终于将它拿下,也总算是松了一口气了,嘿,小样,终于战胜你了吧,具体配置如下图所示(当然这只是其中一个解决方案,也肯定有其他的办法了)

5066e0ef9f8b3c2c201d5b464729ea51.png

事件点击问题

之前曾经听说过,ios下点击事件延迟300ms的问题,但是对于普通的点击,这么短的延迟大多数人也是感知不到的,但是对于一些场景这个差别就大了去了,我的应用场景是玩家点击下落的物体,物体是在不停的向下运动,如果点击之后,延迟300ms,300ms后物体已经移动到另外一个位置了,特别是速度越来越快这个偏差将越来越大,这种情况300ms的延迟当然是无法接受的了,根据网上说的解决方案是通过引入fastclisk这个库文件进行解决,然后加入一句代码就可以轻松搞定,代码是这样写的:FastClick.attach(document.body);

不过在实际解决问题的过程中发现直接将这句代码copy过去并没有效果,注意细节的地方应该是那个地方不要写成document.body, 可能你的实际画布与document.body并不在同一层,而应该是将这个元素直接定位到你的画布上。

1f217527cadcfab2ffea68a403f2e3a2.png

现在终于知道ios的滑动效果为啥那么流畅了,因为它是做出了牺牲的,当手触摸屏幕的时候最先触发的是touch事件,而click优先级并没有这么高,安卓并没有做出这个牺牲,因此安卓的滑动效果上就不如苹果喽。

2bc5489d02cb8acb6d0dac3925efbd4c.png

后台唤醒问题

在ios下还会出现一个问题,那就是在后台停留的时间长了,整个应用再唤醒就像死了一样,点击屏幕上任何一点也没有什么反应,解决这个问题的办法,网上有人给出了解决方案如下,在页面加载完成后加入这样一段代码:

window.onpageshow = function(event) {

if (event.persisted) {

window.location.reload()

}

};

可是到实际应用中,并没有什么效果,大概率是没有应用好的缘故,我也懒得想这其中的具体原因了,最后我自己另辟蹊径用了这样一套方案。

在应用退出后台时触发这段代码(当然,下面这个代码里也包含了部分其他逻辑,不过不影响观看)

var timestamp1 = new Date().getTime();

var data = {data:"no

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值