我后来是这么解决不知道行不行,可以长期的在后台运行
首先我在xx-info.plist 里的 "Required background modes" 里加入"App provides Voice over IP services"
然后在delegate里加入以下代码,原理是进入后台时程序会在600秒那样结束任务,我做的就是在结束任务前新开一个任务,再结束旧任务,这样就一直的在后台运行,希望可能帮助到更多的人,我也查了很久才找到这个方法的。
UIBackgroundTaskIdentifier |
02 |
UIBackgroundTaskIdentifier |
03 |
04 |
- |
05 |
|
06 |
BOOL |
07 |
|
08 |
if ([[UIDevice |
09 |
|
10 |
respondsToSelector:@selector(isMultitaskingSupported)]){ |
11 |
|
12 |
} |
13 |
|
14 |
return result; |
15 |
|
16 |
} |
17 |
18 |
- void ) |
19 |
count++; |
20 |
if (count |
21 |
UIApplication |
22 |
|
23 |
//开启一个新的后台 |
24 |
|
25 |
backgroundTaskIdentifier |
26 |
|
27 |
}]; |
28 |
//结束旧的后台任务 |
29 |
[application |
30 |
oldBackgroundTaskIdentifier |
31 |
} |
32 |
NSLog( @"%ld" ,count); |
33 |
} |
34 |
- void )applicationDidEnterBackground:(UIApplication |
35 |
{ |
36 |
if ([self |
37 |
|
38 |
return ; |
39 |
//开启一个后台任务 |
40 |
|
41 |
backgroundTaskIdentifier |
42 |
}]; |
43 |
oldBackgroundTaskIdentifier |
44 |
if ([self.myTimer |
45 |
[self.myTimer |
46 |
} |
47 |
self.myTimer |
48 |
} |
49 |
50 |
- void )applicationWillEnterForeground:(UIApplication |
51 |
{ |
52 |
if (backgroundTaskIdentifier |
53 |
[application |
54 |
if ([self.myTimer |
55 |
[self.myTimer |
56 |
} |
57 |
} |
58 |
} |
59 |
60 |
- void )applicationWillEnterForeground:(UIApplication |
61 |
{ |
62 |
if (backgroundTaskIdentifier |
63 |
[application |
64 |
if ([self.myTimer |
65 |
[self.myTimer |
66 |
} |
67 |
} |
68 |
} |
时间: 2024-10-05 03:09:44