IOS在后台每隔一段时间执行一下 资料2
来源:互联网 发布:sass for mac中文版 编辑:程序博客网 时间:2024/05/16 01:53
步骤:
1.在info.plist里加入UIBackgroundModes键,其值为数组,数组之一为voip字符串:
<key>UIBackgroundModes</key><array><string>voip</string></array>
2.在程序启动的时候调用- (void)setupBackgroundHandler函数,函数体如下:
#pragma mark - VoIP
- (
void
)setupBackgroundHandler
{
if
( UIUDeviceIsBackgroundSupported() )
{
if
(
[[UIApplication sharedApplication] setKeepAliveTimeout:600 handler: ^
{
[
self
requestServerHowManyUnreadMessages];
}
]
)
{
UDLog(@
"Set Background handler successed!"
);
}
else
{
//failed
UDLog(@
"Set Background handler failed!"
);
}
}
else
{
UDLog(@
"This Deviece is not Background supported."
);
}
}
- (
void
)requestServerHowManyUnreadMessages
{
UIApplication* app = [UIApplication sharedApplication];
if
([app applicationState] == UIApplicationStateBackground)
{
NSArray
* oldNotifications = [app scheduledLocalNotifications];
if
([oldNotifications count] > 0)
[app cancelAllLocalNotifications];
UILocalNotification* alarm = [[[UILocalNotification alloc] init] autorelease];
if
(alarm)
{
alarm.fireDate = [
NSDate
dateWithTimeIntervalSinceNow:15];
alarm.timeZone = [
NSTimeZone
defaultTimeZone];
alarm.repeatInterval = 0;
alarm.soundName = UILocalNotificationDefaultSoundName;
alarm.alertBody = @
"Time to request MOA2 Server!"
;
[app scheduleLocalNotification:alarm];
}
}
else
if
([app applicationState] == UIApplicationStateActive)
{
UIAlertView *alertView = [[[UIAlertView alloc] init] autorelease];
[alertView setTitle:@
"alert"
];
[alertView setMessage:@
"Time to request MOA2 Server!"
];
[alertView addButtonWithTitle:
NSLocalizedString
(@
"cancel"
,
nil
)];
[alertView setDelegate:
nil
];
[alertView show];
}
}
解说:
- (BOOL)setKeepAliveTimeout:(NSTimeInterval)timeout handler:(void (^)(void))keepAliveHandler
函数功能:app每隔timeout唤醒一次。
0.要成功调用该函数,就必须在Info.plist里设UIBackgroundModes键的array值之一voip字符串.
1.timeout必须>=600
2.唤醒app的时间间隔是不精准的。
3.唤醒后只有10秒执行时间。即handler里的代码要在10秒类执行完。10秒后app再次被阻塞。
(可以用-backgroundTimeRemaining属性来返回剩余时间)
4.该函数成功调用后,在程序生命周期内有效。
该函数的效果在回到前台的状况下,依然有效。(因此可以把它当timer使.)
5.clearKeepAliveTimeout函数用来清除handler。
0 0
- IOS在后台每隔一段时间执行一下 资料2
- IOS在后台每隔一段时间执行一下 资料1
- ios在后台每隔一段时间执行一下 资料3
- IOS在后台每隔一段时间执行一下
- IOS在后台每隔一段时间执行一下
- IOS在后台每隔一段时间执行一下
- IOS在后台每隔一段时间执行一下
- IOS在后台每隔一段时间执行一下
- IOS在后台每隔一段时间执行一下
- 每隔一段时间执行SQL
- phpstorm每隔一段时间校验一下
- 每隔一段时间执行shell命令
- 实现c#每隔一段时间执行代码
- windows服务每隔一段时间执行程序
- 如何每隔一段时间执行某个动作?
- setTimeout() 实现程序每隔一段时间自动执行
- JS每隔一段时间执行一个方法
- linux crontab & 每隔一段时间执行一次
- ZOJ 3946 Highway Project (spfa)
- http通信
- HTML基础知识总结
- KMP算法
- mySQL
- IOS在后台每隔一段时间执行一下 资料2
- 时间复杂度与空间复杂度
- bzoj 1176: [Balkan2007]Mokia 【CDQ分治】
- hdoj-5590-ZYB's Biology
- Java 代码块
- 【mybatis基础】mybatis开发dao两种方法
- Oracle 11g 管理Oracle 集群
- ios在后台每隔一段时间执行一下 资料3
- 24点游戏-穷举破解