用于Iphone 4s的蓝牙LE应用程序的后台时间问题

Aji*_*jit 23 background-application ios core-bluetooth bluetooth-lowenergy

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

现在它只运行40分钟 - 最多1小时.

我希望至少1天左右.

对于这个"bluetooth-central"值,在.plist文件的"Required background modes"键中添加.

好像我的应用程序将在最后"暂停"模式.因为当我再次打开应用程序(背景到前景状态)时它再次发送通知,这意味着蓝牙连接仍然连接,并且BLE设备仍在发送通知.如果我按主页按钮并且应用程序进入后台,则不会再次收到通知.

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

苹果公司是否有任何具体说明背景应用程序(这是连续运行的背景应用程序中有哪一个属于5个类别)失败的情况,它将进入暂停模式?

参考" iPhoneAppProgrammingGuide",在" Communicating with a Bluetooth Accessory"部分,我开始知道,对于蓝牙LE应用程序的长期运行后台任务2实现是必要的:

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

因此,对于我的应用程序,FIRST实现已合并,并且该应用程序能够在后台运行并执行所有任务,持续时间最长为1小时.

现在我需要实现第二个实现.即基于会话.根据文档,即使应用程序处于"暂停"状态,也可以获取事件.我试图创建一个特定于蓝牙LE(核心蓝牙框架)的合适会话,如" EASession经典蓝牙(外部附件框架)"中的" ".但我没有找到它.

基本上我不确定哪个会话类需要用于BLE目的.对于音频/视频,网络和互联网,外部配件,可提供单独的会话类.核心蓝牙框架没有.

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

Bla*_*eep 5

我认为问题很简单,试着info.plist像我的屏幕一样实现你:

在此输入图像描述
如果你愿意,你可以添加功能上AppDelegate.mdidFinishLaunchingWithOptions启用蓝牙,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];
Run Code Online (Sandbox Code Playgroud)

希望这可以帮到你.