CMPedometer SIGABRT 崩溃 iOS 10?
CMPedometer SIGABRT crash 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 上进行了测试,所以我不太确定问题出在哪里。有什么我遗漏的吗?
Apple Engineering 在提交错误报告后给了我以下反馈:
此应用已崩溃,因为它试图在没有使用说明的情况下访问隐私敏感数据。应用程序的 Info.plist 必须包含一个 NSMotionUsageDescription 键和一个向用户解释应用程序如何使用此数据的字符串值。
来到这里说得到了同样的错误,但在我的情况下它丢失了 NSContactsUsageDescription
。我希望他们有更好的错误信息。
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>
我有一个正在 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 上进行了测试,所以我不太确定问题出在哪里。有什么我遗漏的吗?
Apple Engineering 在提交错误报告后给了我以下反馈:
此应用已崩溃,因为它试图在没有使用说明的情况下访问隐私敏感数据。应用程序的 Info.plist 必须包含一个 NSMotionUsageDescription 键和一个向用户解释应用程序如何使用此数据的字符串值。
来到这里说得到了同样的错误,但在我的情况下它丢失了 NSContactsUsageDescription
。我希望他们有更好的错误信息。
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>