3

我已经搜索过这个主题,但主要是我面临 Apple 的限制。我需要每分钟控制一次我的服务器,如果有变化,请触发本地通知。我需要的是,如何让计时器(NSTimer)在后台(或激活设备锁时)保持活动状态。请有任何想法。谢谢

4

3 回答 3

5

您可以在服务器部分执行您的逻辑,如果有更改发送推送通知。

于 2012-04-04T13:55:46.593 回答
4

您需要重新考虑应用程序的设计。你不能保证当操作系统出去寻找内存来释放你的应用程序时永远不会被杀死。在那种情况下会发生什么?推送通知是您最好的选择。首先,您不需要每 60 秒轮询一次服务器;当您感兴趣的内容在服务器上发生更改时,您只需发出通知。其次,即使您的应用程序没有运行,也会收到通知。

另一个问题是您必须通过 info.plist 告诉 Apple 您的应用程序支持哪些背景模式。这确实适用于在后台运行音乐或 VoIP 的应用程序。轮询 Web 服务器不是这些受支持的模式之一。通过推送通知,您还可以获得一些委托方法,当应用程序进入前台时,您可以使用这些委托方法来处理通过通知传递的信息。

于 2012-04-04T14:01:27.910 回答
2

我的应用程序使用以下代码在后台持续运行.....

-(void)applicationDidEnterBackground:(UIApplication *)application

{ 
  UIApplication *app = [UIApplication sharedApplication];

  UIBackgroundTaskIdentifier bgTask = 0;

  backgroundTimer = [NSTimer scheduledTimerWithTimeInterval:10 target:self   selector:@selector(backgroundTask) userInfo:nil repeats:YES];

  bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
    [app endBackgroundTask:bgTask];
  }];

}

现在在backgroundTask方法中做任何你想做的事情。

于 2012-12-26T10:33:17.297 回答