首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IPhone4s蓝牙LE应用程序的后台时间问题

IPhone4s蓝牙LE应用程序的后台时间问题
EN

Stack Overflow用户
提问于 2012-04-13 19:50:52
回答 1查看 6.4K关注 0票数 23

我在Iphone-4s中的应用程序中使用了core-bluetooth框架。

这通常是一个后台应用程序,可以运行尽可能长的时间。

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

我希望至少1天左右。

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

看起来我的应用程序最终会进入“挂起”模式。因为当我再次打开应用程序(后台到前台状态)时,它会再次发送通知,这意味着蓝牙连接仍在连接,BLE设备仍在发送通知。如果我按下主页按钮,应用程序进入后台,它不会再次收到通知。

谁能告诉我为什么我的应用程序只能在后台模式下运行最多1小时。它应该继续像正常的音乐应用程序一样在后台运行,直到永远。

苹果有没有具体说明后台应用程序在哪种情况下会进入挂起模式(这是5个类别中持续运行的后台应用程序之一)?

提到"iPhoneAppProgrammingGuide",在"Communicating with a Bluetooth Accessory“部分,我了解到,对于长时间运行的蓝牙LE应用程序2的后台任务,实现是必要的:

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

因此,对于我的应用程序,第一个实现被合并,使用该应用程序能够在后台运行,并在最长1小时的持续时间内完成所有任务。

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

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

谁能帮助我,哪一个会话类适合BLE。

EN

回答 1

Stack Overflow用户

发布于 2013-07-03 21:57:41

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

如果您愿意,您可以在didFinishLaunchingWithOptions下的AppDelegate.m上添加此功能,以启用蓝牙、AirPlay WiFi等功能,这只是一个示例代码,但我认为可以对您有所帮助。

代码语言:javascript
复制
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];

希望这能对你有所帮助。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10140260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档