5

我有一个我正在 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 中包含 Privacy-Health Update Usage Description 和 Privacy-Health Share Usage Description 。它也在 iPhone 6 Plus 上进行测试,所以我不太确定可能是什么问题。有什么我想念的吗?

4

3 回答 3

14

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>
于 2016-09-27T10:56:13.480 回答
11

在提交错误报告后,Apple Engineering 给了我以下反馈:

此应用程序已崩溃,因为它试图在没有使用说明的情况下访问隐私敏感数据。应用的 Info.plist 必须包含一个 NSMotionUsageDescription 键和一个字符串值,向用户解释应用如何使用这些数据。

于 2016-08-08T00:19:10.480 回答
2

来这里是说遇到了同样的错误,但NSContactsUsageDescription在我的情况下它丢失了。我希望他们有更好的错误信息。

于 2016-09-22T17:35:23.870 回答