2

我想在我的应用程序在 iOS 9 的后台运行时在粘贴板中书写。它一直运行良好,直到 iOS 8。在 iOS 9 中阻止在后台写入。我认为粘贴板被锁定或删除,但我不确定. 在 iOS 9 中,我无法在后台写入,直到我再次创建粘贴板。

我知道我们无法在 iOS 9 的后台读取,但为什么我们也不能写入。

我低于警告。

 <Warning>: Could not write pasteboard database. Error: Error
 Domain=NSCocoaErrorDomain Code=513 "You don’t have permission to save
 the file “pasteboardDB” in the folder “com.apple.UIKit.pboard”."
 UserInfo={NSFilePath=/var/mobile/Library/Caches/com.apple.UIKit.pboard/pasteboardDB,
 NSUserStringVariant=Folder, NSUnderlyingError=0x124e066f0 {Error
 Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted"}}
4

1 回答 1

0

在iOS9 中应用程序不在UIApplicationStateActive状态时,UIPasteboard 无法访问。这最有可能解决一个安全问题,即应用程序可以在后台观察粘贴板并抓取复制到其中的任何数据。

我需要在进入后台时清除粘贴板,所以我决定在应用程序从 转换到[AppDelegate applicationWillResignActive:]时调用它。但是,当有电话来电或出现推送通知警报窗口时,也会调用此方法。UIApplicationStateActiveUIApplicationStateInactive

注意:当测试从 对 UIPasteboard 的更改时[AppDelegate applicationWillResignActive:],如果您在方法中放置断点,它将UIApplicationStateInactive在方法完成之前继续转换到。这会导致 UIPasteboard 在单步执行代码时再次被锁定。如果在修改 UIPasteboard 后断点应该没问题。

于 2015-11-23T20:04:04.313 回答