С микросхемой M7 на новейших устройствах iOS можно получить программную информацию, поскольку пользователь переходит от стационарной к бегу, ходьбе и т.д., используя CMMotionActivityManager. Stava и Runkeeper использовали это для автоматического приостановки GPS-опроса (отключите антенну GPS), когда он обнаруживает, что пользователь не перемещается через M7, а затем снова включить обновления GPS после их повторного перемещения. Он может сделать это, пока приложение находится в фоновом состоянии, которое является ключевым здесь.
Проблема, с которой я сталкиваюсь при дублировании этой функции, заключается в том, что если я отключу обновления GPS, пока мое приложение находится в фоновом режиме, я перестаю получать обновления активности и больше не могу обнаружить, когда пользователь снова перемещается через M7, чтобы включить GPS назад.
Если я оставлю GPS все время, я продолжу получать обновления движения от Core Motion все время, когда приложение находится в фоновом режиме.
Я предполагаю, что они не играют на белом шуме или другом дешевом трюке, чтобы оставаться активным. Как они это сделали?