iOS应用中通过设置VOIP模式实现休眠状态下socket的长连接
sockets,包括那个用于连接voip 服务的socket。因此,当程序运行时,它需要一直从头创建socket。
- - (void)socket:(GCDAsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)connectedPort{
- [socket performBlock:^{
- [socket enableBackgroundingOnSocket];
- }];
- }
- BOOL backgroundAccepted = [[UIApplication sharedApplication] setKeepAliveTimeout:600 handler:^{ [self backgroundHandler]; }];
- if (backgroundAccepted)
- {
- NSLog(@"VOIP backgrounding accepted");
- }
If
you want to let your VOIP application run in background , except those
base settings in plist file, you need a TCP socket who's property is set
to VOIP, than the iOS system will
take care this socket for you, when your application enter background ,
every thing was 'sleep' except that tcp socket. and if VOIP server send
some data thought that TCP socket, your application will be awake up
for 10 secs. during this time, you can post
a local notification.
Tcp socket can be set as VOIP Socket. But from i know , mostly VOIP
application are based on UDP socket. if you do not want to separate the
control socket from the data socket.
you should create another tcp socket which is focus on 'awake' your
application , and from my personal experience , it's very hard to keep
this 'awake' signal and the real sip control signal synchronize, the
application always miss the sip invite request.
best way is separating the sip control single from the UDP data socket ,
make it as a tcp socket , this is the best solution , but never use tcp
socket to transfer voice data.
dirty way: keep the application awake all the time. As i said , each
TCP single the application received thought that 'VOIP' tcp socket ,
will keep application awake for
10 seconds, so at the end of this duration(after 9 secs) , you can send
a response to the server to ask for another signal , when the next
signal arrived, the application will be awake again,after 9 secs , send
response again. keep doing this, your application
will awake forever.
https://github.com/robbiehanson/CocoaAsyncSocket
iOS应用中通过设置VOIP模式实现休眠状态下socket的长连接的更多相关文章
- [转] iOS应用中通过设置VOIP模式实现休眠状态下socket的长连接
转自:http://blog.csdn.net/missautumn/article/details/17102067 如果你的应用程序需要在设备休眠的时候还能够收到服务器端发送的消息,那我们就可 ...
- ios系统中各种设置项的url链接
ios系统中各种设置项的url链接 在代码中调用如下代码:NSURL*url=[NSURL URLWithString:@"prefs:root=WIFI"];[[UIApplic ...
- ios开发中全局变量设置和调用方法
ios开发中,全局变量设置和调用方法如下:在AppDelegate.h文件中设置全局变量:@interface ***AppDelegate{NSString *myName;}@property ( ...
- [ios2]ios系统中各种设置项的url链接
在代码中调用如下代码:(ps: ios 5.0 以后不可用)NSURL*url=[NSURL URLWithString:@"prefs:root=WIFI"];[[UIAppli ...
- IOS 应用中从竖屏模式强制转换为横屏模式
在 iPhone 应用里,有时我们想强行把显示模式从纵屏改为横屏(反之亦然),CocoaChina 会员 “alienblue” 为我们提供了两种思路 第一种:通过人为的办法改变view.transf ...
- [iOS] iOS系统中各种设置项的url链接
在代码中调用如下代码:NSURL*url=[NSURL URLWithString:@"prefs:root=WIFI"];[[UIApplication sharedApplic ...
- 在IOS应用中从竖屏模式强制转换为横屏模式
http://www.cnblogs.com/mrhgw/archive/2012/07/18/2597218.html 在 iPhone 应用里,有时我们想强行把显示模式从纵屏改为横屏(反之亦然), ...
- IOS中快速集成短信SDK验证开发(SMSSDK),IOS开发中如何设置手机验证码
[转载请注明出处] sdk是别人的,我只是下载来集成一下. smssdk下载网站:http://www.mob.com/(也有其他很多网站有类似SDK,譬如https://www.juhe.cn/等等 ...
- 如何在 iOS 8 中使用 Swift 实现本地通知(下)
在上集中,我们已经构建了一个简单的待办列表应用(to-do list app),这个应用可以在待办项过期时通过本地通知提醒用户.现在,我们要在之前的基础上添加以下功能:应用图标角标上显示过期待办项的数 ...
随机推荐
- (12)odoo各种提前期和时间
1)Product的提前期 Customer Lead Time(sale_delay):客户提前期,指SO确认到向客户发货的天数,由于销售数量不同该时间也不同,因此,这里是一个平均时间. ...
- JAVA String作业——动手动脑以及课后实验性问题
一:如何解释这样的输出结果?从中你能总结出什么?1.源码 //mao2015.10.20 //==的两个分辨 //对原始数据而言 //对引用类型变量 public class StringPool { ...
- PHP程序员面试技巧之口试题分享
网络上流传很广的一部分php工程师面试题目,有些phper们认为这些很形式,天下面试题目一大把,不能考核一个人的真实水平,其实细细研究起来,无论怎样,能存在就表明其有存在的价值.下面小编整理了12条P ...
- jsp之 ---- 页面重定向和请求转发(笔记之深度说明)
1. HttpServletResponse对象的sendRedirect(String location)方法称作重定向. 如果location地址前面加上“/”,则表示 相对于Servlet容 ...
- java SE学习之线程同步(详细介绍)
java程序中可以允许存在多个线程,但在处理多线程问题时,必须注意这样一个问题: 当两个或多个线程同时访问同一个变量,并且一些线程需要修改这个变量时,那么这个 ...
- android:clipToPadding和android:clipChildren
假设我们要做一个效果,界面最顶部是一个ActionBar并且是半透明的,ActionBar下面是一个ListView,在初始状态 下, ListView是top是在ActionBar的bottom位置 ...
- javascript 对象和数组(花括号、方括号)
1. javascript对象定义 var a = {var a = "test", var b = "test"} 2. javascript数组定义 var ...
- pycharm 导包
如果需要requests包,python没有自带.可以执行命令:pip install requests,自动安装导入.
- Linux 服务器安全技巧
毋庸置疑,对于系统管理员,提高服务器的安全性是最重要的事情之一.因此,也就有了许多针对这个话题而生的文章.博客和论坛帖子. 一台服务器由大量功能各异的部件组成,这一点使得很难根据每个人的需求去提供定制 ...
- bzoj 2242: [SDOI2011]计算器
#include<cstdio> #include<iostream> #include<map> #include<cmath> #define ll ...