在iOS 8.3之前,检查是否已授予键盘扩展"允许完全访问权限"的方法是通过容器应用程序中的以下代码:
- (BOOL)isOpenAccessGranted{
return [UIPasteboard generalPasteboard];
}
Run Code Online (Sandbox Code Playgroud)
但是,正如对这个流行的SO答案线程的评论所指出的那样,自iOS 8.3以来,即使未授予完全访问权限,应用程序也可以从共享组容器中读取,因此上述代码始终返回true.但是,仅在启用"允许完全访问"时才授予写入权限.
我已经尝试列出了所有基于苹果公司pasteboards的文档上UIPasteboard,但它并没有界定哪些是可访问的.对此有任何见解非常感谢.
在我的ios 8键盘扩展中,我想检查用户是否给我的键盘打开访问权限.但我找不到任何API.Swiftkey和其他自定义键盘以某种方式解决了这个问题
最近iOS有iOS 10的更新并且开发人员有一些变化,其中一个变化是现在我们无法检查允许完全访问我们之前做过的方式在下面给出
-(BOOL)isOpenAccessGranted{
return [UIPasteboard generalPasteboard];
}
Run Code Online (Sandbox Code Playgroud)
我搜索了最新的UIPasteboard开发者指南,但无法解决.有没有人有一个适当的解决方案.
我正在为iOS编写自定义键盘.我的键盘需要允许完全访问.我把"RequestsOpenAccess"价值"YES"放在了info.Plist.但我仍然无法选择允许在该设置中完全访问.我该怎么办?
我需要检查自定义键盘扩展的完全访问权限。我找到了此链接。
它说我们可以检查App组。我有一个名为“ group.TTT.TGroup”的应用程序组。它在主应用程序和自定义键盘之间共享访问权限。
然后,我这样检查。问题是我总是可以访问它(总是有array或error = null)。是因为我共享相同的数据吗?但是,如果我的应用程序使用另一个应用程序组,而扩展程序使用另一个应用程序组,则我绝对不能访问它。我可以知道怎么做吗?
NSFileManager* fileManager = [NSFileManager defaultManager];
NSString *path = [fileManager containerURLForSecurityApplicationGroupIdentifier:@"group.TTT.TGroup"].path;
NSError *error;
NSArray *arr = [fileManager contentsOfDirectoryAtPath:path error:&error];
NSLog(@" arr is %@",arr);
if (arr == nil || !arr) //can check error also
accessOn = NO;
else accessOn = YES;
Run Code Online (Sandbox Code Playgroud) objective-c ios8 ios-app-extension ios-app-group custom-keyboard