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

问题描述 投票:0回答:7

我的 iOS 应用程序使用

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

ios crash assetslibrary ios-privacy-settings
7个回答
40
投票

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

如果您是注册的苹果开发者,您可以查看他们的论坛以获取有关此问题的讨论。 这是一个

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


11
投票

使用 UIImagePickerController 时也会发生这种情况。顺序是这样的:

  1. 您将显示 UIImagePickerController。第一次,小警报会询问用户使用照片库的权限。假设用户拒绝。

  2. 用户此时可以使用选择器控制器执行的操作就是取消,所以我们假设这就是发生的情况。

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

  4. 用户切换到“设置”并启用对此应用程序的照片库的访问。

  5. 应用程序在后台崩溃。用户是否取消选择器或让它显示并不重要。

我已就此提交了一个错误,我建议您根据您的情况也这样做。苹果在 iOS 6 中引入了新的隐私系统,显然这些问题还没有得到解决。


9
投票

在此 PDF 中搜索“kill”一词: http://adcdownload.apple.com/wwdc_2012/wwdc_2012_session_pdfs/session_710__privacy_support_in_ios_and_os_x.pdf

当某些权限发生更改时,iOS 会终止应用程序。

此信息很难追踪。它不在任何“指南”中(例如,首选项编程指南)。


3
投票

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


2
投票

有时 SIGKILL 错误作为中断错误,它向 iOS 发出信号,表明您必须重新启动应用程序,同时我们正在管理应用程序任务,在这种情况下,应用程序不处理发送中断消息的方式。

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


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];
}

因此,当您的应用程序无法访问照片库时,它会要求用户访问照片库。


-1
投票

我不确定这会有多大帮助,但我遇到了类似的问题,当我通过隐私设置(设置→隐私→蓝牙)关闭/打开蓝牙时应用程序崩溃,但当我更改时它不会崩溃直接蓝牙设置(设置→蓝牙),所以我认为这里可以说两件事。

  1. 这不是您所使用的应用程序特有的错误,而是一个更普遍的问题。
  2. 检查隐私设置可能是原因所在。

我也在寻找如何预防它的解决方案,所以现在只是分享一下原因可能在哪里的见解,但希望它可以得到解决!谢谢!

© www.soinside.com 2019 - 2024. All rights reserved.