更改隐私设置时由SIGKILL杀死的应用程序

时间:2012-09-29 11:55:44

标签: ios ios6 assetslibrary

我的iOS应用使用ALAssetsLibrary访问用户的照片。当我更改应用程序的隐私设置(设置→隐私→照片)时,应用程序会被系统(SIGKILL)杀死。这是一个错误吗?

5 个答案:

答案 0 :(得分:33)

我认为这是一个错误或至少记录不良和意外的行为。但它不会崩溃它只是被迫重启。您将收到SIGKILL消息但没有崩溃日志。

如果您是注册苹果开发者,可以查看他们的论坛以了解有关此问题的讨论

我不知道如何防止此行为,但随时可以使用apple提交错误报告。有传言称他们使用bug重复作为衡量bug严重程度的方法。 也许您可以存储您的应用程序状态,以便在重新启动时恢复它。

答案 1 :(得分:10)

使用UIImagePickerController时也会发生这种情况。顺序如下:

  1. 显示UIImagePickerController。第一次,小警报要求用户允许使用照片库。假设用户说没有。

  2. 此时所有用户可以使用选择器控制器取消,所以让我们假设发生了什么。

  3. 稍后,您将展示UIImagePickerController。它现在包含一个不可自定义的消息,表示无法访问照片库,但用户可以在“设置”中启用访问权限。

  4. 用户切换到“设置”,可以访问此应用的照片库。

  5. 该应用在后台崩溃。用户是否已取消选择器或将其显示无关紧要。

  6. 我已经提交了一个错误,我建议你也这样做,因为你的情况。 Apple在iOS 6中引入了一个新的隐私系统,显然还没有解决问题。

答案 2 :(得分:1)

有时SIGKILL错误作为中断错误,它向iOS发出信号,您必须重新启动应用程序,同时我们正在管理应用程序任务,并且在该实例上,应用程序不会处理发送中断消息的方式

在我的情况下.....我不允许在应用程序中访问照片和相机,每当我允许访问这些功能时,我最小化应用程序并启用这些设置。当我启用这些时,iOS会中断并且应用会收到此但无法处理并导致我们的应用终止或关闭。

答案 3 :(得分:1)

当您使用模拟器测试您的应用程序时。更改应用程序的权限会给您一个断点。您可以在控制台中键入“c”以使应用程序继续运行并返回到原始状态。但是在您的真实状态中设备,这不是故事。它只是重新启动应用程序。

答案 4 :(得分:0)

好我第一次写回答。我希望我做对了:)

您是否使用assetForURL访问资产库:resultBlock:failureBlock:?

如果您是,那么很可能您没有处理ALAssetLibrary的失败块。

您可以执行类似

的操作
ALAssetsLibraryAccessFailureBlock failureBlock = ^(NSError *error)
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Access to Photo Library is Denied "
                                                            message:@"Please allow <YOUR APP NAME> to access your Photo library from Privacy Settings"
                                                           delegate:nil
                                                  cancelButtonTitle:@"OK"
                                                  otherButtonTitles:nil];
            [alert show];
            [alert release];
}

因此,当您的应用无法访问照片库时,它会要求用户执行此操作。