蓝牙LE应用程序的iPhone 4S的背景时间问题(Background time issue fo

2019-06-23 15:05发布

我使用的核心蓝牙框架,我的iPhone-4S应用。
这是典型地具有为背景的应用程序,可以尽可能运行更长。

现在只运行40分钟 - 4小时最大。

我希望至少1天左右。

对于这种“蓝牙中心”的价值在的.plist文件“要求的背景模式”键被添加。

这似乎是我的应用程序是要“暂停”模式,在年底。 因为当我再次打开该应用(背景至前台状态),再次发送通知,则意味着该蓝牙连接仍然连接和BLE设备仍然是发送通知。 如果我按home键和应用涉及到背景,它不会再次得到通知。

谁能告诉我为什么我的应用程序住在后台模式仅适用于不超过1小时。 它应该继续像正常的音乐应用程序在后台运行的像永远。

苹果说一下具体的事情上条件的后台程序(这是那些连续运行的后台程序在5个类别下降的一个),否则它会暂停模式?

参照“ iPhoneAppProgrammingGuide ”,在“ Communicating with a Bluetooth Accessory节”,我才知道,对于蓝牙LE申请长期运行的后台任务2点的实现是练琴:

1)UIBackgroundModes关键应该是“蓝牙核心” Info.plist文件。 2)支持蓝牙数据的背景处理的任何应用程序必须是基于会话的。

所以,我的应用程序时,首先执行注册成立,并与该应用程序能够在后台运行,并做最大1小时的持续时间的所有任务。

现在我需要实施第二次执行。 即基于会话的。 这将使获得的事件,即使应用程序处于“暂停”状态,根据文档。 我试图找到像“创建蓝牙LE(蓝牙核心框架)的具体合适的会话EASession ”目前的传统蓝牙(外部附件框架)。 但我没有找到它。

基本上,我不知道我需要使用到的BLE目的哪个会话类。 对于音频/视频,网络和互联网,外部附件,可有单独的会话类。 有没有对蓝牙核心框架。

任何人可以帮助我,这届课程适合BLE。

Answer 1:

我认为这个问题是试图实现您简单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];

希望这可以帮到你。



文章来源: Background time issue for Bluetooth LE app for Iphone 4s