我有一个应用程序,使用CoreMotion CMPedometer在活动状态和后台模式下计步。在ios 12.4.1上运行良好。但是在ios 13中,后台模式下步数计算不起作用,但在活动状态下可以正常工作。我没有收到任何错误,并且在活动状态下,我会得到“在后台走的步数”。我拥有NSLocationsWhenInUseUsageDescription权限。事实上,我没有收到通知(打印在控制台上)表明我正在移动。请帮忙解决此问题。
我稍微调查了一下,发现iOS 13更新了后台处理逻辑。当应用程序进入后台时,我发现我的步数跟踪(CMPedometer)任务几乎立即被终止。您最有可能在后台使用application(_:performFetchWithCompletionHandler:)来跟踪用户的步数和运动。在iOS 13 SDK中,这已经过时了,您需要使用BGAppRefreshTask来实现相同的功能。更多详细信息请参见苹果文档此处。