正如苹果所说:“由于国家保留和恢复内置于核心蓝牙,您的应用程序可以选择使用此功能,要求系统保留应用程序中央和外围管理器的状态,并继续执行某些蓝牙相关任务即使您的应用程序不再运行,当其中一个任务完成时,系统将您的应用程序重新启动到后台,并让您的应用程序恢复其状态并适当地处理该事件.
我添加了以下代码来选择此功能:
myCentralManager = [[CBCentralManager alloc] initWithDelegate:self queue:nil options:@{ CBCentralManagerOptionRestoreIDentifIErKey: @"myCentralManagerIDentifIEr" }];
但是当应用程序醒来时的回调从未触发过.
-(BOol)application:(UIApplication *)applicationdIDFinishLaunchingWithOptions:(NSDictionary *)launchOptions {}-(voID)centralManager:(CBCentralManager *)central willRestoreState:(NSDictionary *)state {}
这两个从来不叫.
我测试这个唤醒功能的方式:
>我在info.pList的背景模式中添加“bluetooth central”,所以BLE在后台运行.
>在我的iphone 1中启动centralManager.开始扫描.
>回家,出门,玩一些记忆沉重的游戏,在调试日志中我会看到:
“由于内存压力而终止,进程完成退出代码0”.这是为了模拟ios系统由于内存压力而终止后台应用程序.
>用另一个iphone 2开始一个信标,开始广播.
>结果:这些重新启动的回调永远不会被调用.
任何想法为什么这不工作?如果这是一个API问题,当您的手机接近BLE信标时,是否还有其他方法可以将您的应用重新启动到BLE的背景中?我尝试使用ibeacon来唤醒应用程序,但核心蓝牙中央管理器将不允许您在后台连接到ibeacon.
谢谢!
解决方法 CoreBluetooth状态恢复仅适用于连接和外围事件.目前不支持扫描. 总结以上是内存溢出为你收集整理的ios – 核心蓝牙状态保存和恢复不起作用,无法重新启动应用程序到后台全部内容,希望文章能够帮你解决ios – 核心蓝牙状态保存和恢复不起作用,无法重新启动应用程序到后台所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)