Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在应用程序处于挂起状态时在ios中运行后台服务_Ios_Iphone_Ios7_Cocos2d Iphone - Fatal编程技术网

如何在应用程序处于挂起状态时在ios中运行后台服务

如何在应用程序处于挂起状态时在ios中运行后台服务,ios,iphone,ios7,cocos2d-iphone,Ios,Iphone,Ios7,Cocos2d Iphone,我不知道如何实现后台服务。但是在搜索互联网时 我看到了一些关于iOS7中引入的后台获取Api的教程。我无法理解执行的过程。请提供一些帮助` - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch.

我不知道如何实现后台服务。但是在搜索互联网时 我看到了一些关于iOS7中引入的后台获取Api的教程。我无法理解执行的过程。请提供一些帮助`

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.


    [application setMinimumBackgroundFetchInterval:UIApplicationBackgroundFetchIntervalMinimum];





    return YES;
}
- (void)                application:(UIApplication *)application
  performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
{

    NSLog(@"hai");



    [NSTimer scheduledTimerWithTimeInterval:0.30
                                     target:self
                                   selector:@selector(sampleTest)
                                   userInfo:nil
                                    repeats:NO];
     completionHandler(UIBackgroundFetchResultNewData);
}

    -(void)sampleTest
{

    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:nil message:@"hai" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
    [alertView show];


}

仅在应用程序启动时呼叫,但此后30秒后我看不到任何警报,请使用以下代码:-

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    UIApplication  *app = [UIApplication sharedApplication];
    UIBackgroundTaskIdentifier bgTask = 0;
    bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
        [app endBackgroundTask:bgTask];
    }];
}


您不会看到警报,这不是后台获取的目的。除非仅使用静默推送通知iOS 7,否则无法手动触发后台提取。iOS将在需要时调用此方法,您可以通过进入Xcode>Debug>simulate background fetch在模拟器中模拟它。我怀疑该警报是否会显示,因为您的应用程序不在前台。Xcode>Debug>Simulate background fetch如果我这样做,则该警报仅在模拟器启动时出现,但我看不到它处于活动状态。当应用程序处于活动状态时,它不会出现。这是一个后台提取…我想在应用程序运行时,甚至在后台状态下,在后台运行一些服务。该做什么。在运行时,很容易做到。你想叫什么就叫什么。在后台有点棘手,你的应用程序只能在带有苹果预设类型(如GPS、音频等)的后台运行。。或者,在iOS7中,您可以使用静默推送通知手动触发perormFetchWithCompletion多任务增强功能。但同样,这是由APNS+iOS限制的,以避免垃圾邮件。人们不希望应用程序在关闭后在不知道的情况下进行繁重的计算。。。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.
    [application setMinimumBackgroundFetchInterval:UIApplicationBackgroundFetchIntervalMinimum];
}