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

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

我认为这是一个错误,至less是logging不完善和意外的行为。 但它不会崩溃,只是被迫重启。 你会得到一个SIGKILL消息,但没有崩溃日志。

如果你是一个注册的苹果开发者,你可以检查他们的论坛讨论这个问题

我不知道如何防止这种行为,但随意提交与苹果的错误报告。 据传他们使用错误重复来衡量错误的严重程度。 也许你可以存储你的应用程序状态,以便在重新启动时进行恢复。

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

  1. 您显示UIImagePickerController。 第一次,小警报询问用户是否允许使用照片库。 假设用户说不。

  2. 所有的用户可以用这个select器控制器来取消,所以我们假设发生了什么事情。

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

  4. 用户切换到设置,并启用访问该应用程序的照片库。

  5. 该应用程序在后台崩溃。 用户是否已经取消了select器或者是否显示了它并不重要。

我已经提出了一个错误,我build议你也这样做,为你的情况。 苹果在iOS 6中引入了一个新的隐私系统,显然还没有解决。

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

iOS在特定权限更改时会杀死应用程序。

这个信息很难追查。 这不是任何“指南”(例如偏好编程指南)。

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

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

在我的情况…..我不允许在应用程序中的照片和相机访问,并且只要我允许访问这些function,我最小化应用程序,并启用这些设置。 当我启用这些,iOS得到一个中断,应用程序收到这个,但无法处理,并导致我们的应用程序终止或closures。

好的,我第一次写答案。 我希望我得到它的权利:)

您是否使用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]; } 

所以当你的应用程序无法访问照片库时,它会要求用户去做。

Interesting Posts