34

在 iOS 8.3 之前,检查是否授予键盘扩展“允许完全访问权限”的方法是通过容器应用程序中的以下代码:

- (BOOL)isOpenAccessGranted{
   return [UIPasteboard generalPasteboard];
}

但是,正如对这个流行的 SO 回答线程的评论指出的那样,从 iOS 8.3 开始,即使未授予完全访问权限,应用程序也可以从共享组容器中读取,因此上述代码始终返回 true。但是,仅当“允许完全访问”打开时才授予写入权限。

我已经尝试根据 Apple 的文档列出所有粘贴板,UIPasteboard但它没有说明哪些是可访问的。对此的任何见解都非常感谢。

4

2 回答 2

2

这是我当前工作/部署的实现:

- (void)viewDidAppear:(BOOL)animated {
    NSLog(@"keyboard has full access? %@", ([self validateKeyboardHasFullAccess] ? @"YES" : @"NO"));
}

- (BOOL)validateKeyboardHasFullAccess {
    return !![UIPasteboard generalPasteboard];
}
于 2015-11-04T16:55:04.653 回答
1

在 iOS 8.4 上,UIPasteboard.generalPasteboard()如果nil不允许完全访问,则为。clean and build在再次测试之前尝试删除键盘和容器应用程序+应用程序。应该可以正常工作。

于 2015-07-28T22:20:06.437 回答