适用于iPhone 4的蓝牙LE应用程序的背景时间问题

我正在为Iphone-4s中的应用程序使用核心蓝牙框架。
这通常必须是可以运行尽可能长的后台应用程序。

现在只能运行40分钟 – 1小时以内。

我希望至less1天左右。

对于这个“蓝牙中央”值被添加​​到.plist文件中的“所需的背景模式”键中。

看起来像我的应用程序将在最后“暂停”模式。 因为当我再次打开应用程序(后台到前台状态),它再次发送通知,这意味着蓝牙连接仍然连接,并且BLE设备仍在发送通知。 如果我按Home键和应用程序来到背景,它不会再次得到通知。

任何人都可以告诉我为什么我的应用程序只能在后台模式下最多1小时。 它应该继续像普通的音乐应用程序一样在后台运行。

苹果是否会说具体的背景应用程序(这是连续运行的后台应用程序在5个类别中的一个应用程序)在哪种情况下将失败,将进入暂停模式?

参考“ iPhoneAppProgrammingGuide ”,在“ Communicating with a Bluetooth Accessory ”一节中,我了解到,对于蓝牙LE应用2的长时间运行的后台任务来说,实现是必需的:

1)UIBackgroundModes键在Info.plist文件中应该是“bluetooth-central”。 2)任何支持蓝牙数据后台处理的应用都必须基于会话。

因此,对于我的应用程序,FIRST实现已经合并,并且该应用程序可以在后台运行,并且可以执行最长1小时的所有任务。

现在我需要实现第二个实现。 即基于会话的。 即使应用程序处于“挂起”状态,根据文档,这将允许获取事件。 我试图find创build一个特定于蓝牙LE(核心蓝牙框架)特定的会话,如经典蓝牙(外部附件框架)的“ EASession ”。 但是我没有find它。

基本上我不知道哪个会议类我需要用于BLE的目的。 对于audio/video,networking和互联网,外部配件,有单独的会话类可用。 核心蓝牙框架没有。

任何人都可以帮助我,哪个会话类适合BLE。

我觉得问题很简单,试着实现你的info.plist像我的屏幕:

在这里输入图像说明
如果你想要的话,可以在didFinishLaunchingWithOptions下的didFinishLaunchingWithOptions添加该function来启用蓝牙,AirPlay WiFi等,这只是一个示例代码,但我认为可以帮到你。

 NSError *sessionError = nil; [[AVAudioSession sharedInstance] setDelegate:self]; [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:&sessionError]; [[AVAudioSession sharedInstance] setActive:YES error:nil]; UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback; AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory); UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker; AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride); [[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; 

希望这可以帮到你。