CMPedometer SIGABRT вылетает iOS 10?

У меня есть приложение, которое я тестирую на iOS 10 Beta 3 в настоящее время, и по какой-то странной причине, когда я выполняю этот один метод, кажется, что происходит сбой на startPedometerUpdatesFromDate строка ниже:

if (!_pedometer) {
    _pedometer = [[CMPedometer alloc] init];
}
[_pedometer startPedometerUpdatesFromDate:[NSDate date] withHandler:^(CMPedometerData * _Nullable pedometerData, NSError * _Nullable error) {

Я подтвердил, что _pedometer не является nil и это еще более странно, поскольку он работал в iOS 9 до того, как я обновился.

В консоли нет ничего, что подсказывало бы что-то не так с кодом, и когда он зависал, это просто приводило к этому (даже с точками останова):

libsystem_kernel.dylib`__abort_with_payload:
    0x183a58d94 <+0>:  movz   x16, #0x209
    0x183a58d98 <+4>:  svc    #0x80
->  0x183a58d9c <+8>:  b.lo   0x183a58db4               ; <+32>
    0x183a58da0 <+12>: stp    x29, x30, [sp, #-16]!
    0x183a58da4 <+16>: mov    x29, sp
    0x183a58da8 <+20>: bl     0x183a3d7dc               ; cerror_nocancel
    0x183a58dac <+24>: mov    sp, x29
    0x183a58db0 <+28>: ldp    x29, x30, [sp], #16
    0x183a58db4 <+32>: ret  

Я также включил в мой Info.plist описание конфиденциальности - описание использования обновлений здоровья и конфиденциальность - описание использования ресурса здравоохранения. Он также тестируется на iPhone 6 Plus, поэтому я не совсем уверен, в чем проблема. Есть что-то, что я пропускаю?

3 ответа

Решение

Apple Engineering предоставила мне следующий отзыв после подачи сообщения об ошибке:

Это приложение упало, потому что оно пыталось получить доступ к конфиденциальным данным без описания использования. Info.plist приложения должен содержать ключ NSMotionUsageDescription со строковым значением, объясняющим пользователю, как приложение использует эти данные.

iOS 10 обновила политику конфиденциальности и внедрила новые правила конфиденциальности. Вы должны обновить свое приложение Info.plist с помощью следующих полей в соответствии с запросом авторизации.

Текст описания будет отображаться при запросе авторизации.

<!--  Photo Library -->
<key>NSPhotoLibraryUsageDescription</key>
<string><Your description goes here></string>

<!--  Camera -->
<key>NSCameraUsageDescription</key>
<string><Your description goes here></string>

<!--  Microphone -->
<key>NSMicrophoneUsageDescription</key>
<string><Your description goes here></string>

<!--  Location -->
<key>NSLocationUsageDescription</key>
<string><Your description goes here></string>

<!--  Location When In Use -->
<key>NSLocationWhenInUseUsageDescription</key>
<string><Your description goes here></string>

<!--  Location Always -->
<key>NSLocationAlwaysUsageDescription</key>
<string><Your description goes here></string>

<!--  Calendars -->
<key>NSCalendarsUsageDescription</key>
<string><Your description goes here></string>

<!-- ⏰ Reminders -->
<key>NSRemindersUsageDescription</key>
<string><Your description goes here></string>

<!--  Motion -->
<key>NSMotionUsageDescription</key>
<string><Your description goes here></string>

<!--  Health Update -->
<key>NSHealthUpdateUsageDescription</key>
<string><Your description goes here></string>

<!--  Health Share -->
<key>NSHealthShareUsageDescription</key>
<string><Your description goes here></string>

<!-- ᛒ Bluetooth Peripheral -->
<key>NSBluetoothPeripheralUsageDescription</key>
<string><Your description goes here></string>

<!--  Media Library -->
<key>NSAppleMusicUsageDescription</key>
<string><Your description goes here></string>

Пришел сюда сказать, что получил ту же ошибку, но ее не было NSContactsUsageDescription в моем случае. Я хотел бы, чтобы они получили лучшее сообщение об ошибке.

Другие вопросы по тегам