我想做一些任务,一旦用户来网上,即使他是背景。我正在使用Reachability类来检查互联网。但这堂课不是在我有背景的时候通知我的。我知道早些时候有人问过这个问题,但没有得到任何解决办法。如果我使用beginBackgroundTaskWithExpirationHandler。它只给我3到4分钟,在那之后,如果网络改变,我没有收到任何通知。请给我一些建议,我认为这是可能的,因为本地邮件应用程序以这种方式工作,而我的应用程序只支持iOS7。
发布于 2014-03-05 12:26:58
--您无法从类中获得通知--当应用程序处于后台时,您可以使用新的iOS 7背景获取可能性。这里是一个教程http://www.objc.io/issue-5/multitasking.html
发布于 2014-03-05 12:25:52
做你想做的事是不可能的。你不能把你的假设建立在苹果提供的应用上,因为苹果可以访问你没有的进程/ app。邮件作为守护进程在设备上运行,你的应用程序永远不会这么做。
阅读关于iOS 7后台功能的文章。它以你的应用程序为基础,在用户想要运行应用程序之前获得处理时间,而不是在你选择的任意时间。
发布于 2017-05-29 06:58:19
从功能中使用后台获取模式。首先,您需要选中背景模式的复选框:
Project settings -> Capabilities -> BackgroundMode -> Background Fetch然后,您需要尽可能频繁地要求时间间隔,越快越好,所以我建议您使用application:didFinishLaunchingWithOptions:,并将这一行放在下面:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[application setMinimumBackgroundFetchInterval:UIApplicationBackgroundFetchIntervalMinimum];
return YES;
}
UIApplicationBackgroundFetchIntervalMinimum-系统支持的最小获取间隔。
然后,当背景提取触发时,您可以使用方法签入AppDelegate:
-(void)application:(UIApplication *)application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{
Reachability *reachability = [Reachability reachabilityForInternetConnection];
[reachability startNotifier];
NetworkStatus status = [reachability currentReachabilityStatus];
switch (status) {
case NotReachable: {
NSLog(@"no internet connection");
break;
}
case ReachableViaWiFi: {
NSLog(@"WiFi");
break;
}
case ReachableViaWWAN: {
NSLog(@"cellular");
break;
}
}
completionHandler(YES);
}支持iOS 7.0+
https://stackoverflow.com/questions/22197630
复制相似问题