Iphone锁屏导致Socket断开

14 篇文章 0 订阅
4 篇文章 0 订阅

iphone锁屏之后会将应用的socket断开。当然这样的好处能够更好的省电。

所以当我们解锁之后要么重新登录游戏 要么做短线重连。有时候我们想要使应用在锁屏的状态下也能接收服务端的消息,那么我们可以直接调用as3的一个api

NativeApplication.nativeApplication.executeInBackground = true;

但是这种方式只能让app在锁屏状态下执行3分钟或者其他什么时间 亲测 iphone6 ios9 锁屏下3分多钟 socket照样断开。

好在iphone 允许音频不受此限制 当然还有其他方式 笔者 也是通过网上得知。

于是选择最简单的方式 采用播放无声音频来达到在锁屏状态下永久的socket链接

在xx-app.xml中的InfoAdditions标签里面 加上以下键值对

1
2
3
4
<key>UIBackgroundModes</key>
  <array>
  <string>audio</string>
  </array>
1
2
3
4
5
6
7
8
</pre>
private function  onDeactivateHandler( e:Event ): void {
 
//监听到锁屏 便播放无声音频
 
}
 
NativeApplication.nativeApplication.addEventListener(Event.DEACTIVATE, onDeactivateHandler);

当然了 还得监听Event.ACTIVATE事件 即当解锁的时候 咱们得把音频给清除掉。这样就能实现锁屏状态下 也不会断开socket了

//-----------------------------------------------------------------------------------------

总结说明

1)android中 按home键或电源键都是使程序后台运行,socket不断。

2)ios中按home键是使程序后台运行,socket不断,按电源键程序后台运行,但socket断。

通过事件ACTIVATE、DEACTIVATE来进行代码逻辑控制

NativeApplication.nativeApplication.addEventListener(Event.ACTIVATE,onActivate);

NativeApplication.nativeApplication.addEventListener(Event.DEACTIVATE,onDeactivate);



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值