1

我需要检查自定义键盘扩展的完整权限。我找到了这个链接。检查自定义键盘扩展的完整权限

How to check the "Allow Full Access" is enabled in iOS 8?

它说,我们可以检查应用程序组。我有一个名为“group.TTT.TGroup”的应用程序组。它共享主应用程序和自定义键盘之间的访问。

然后,我检查这个。问题是我总是有权访问它(总是有数组或错误= 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; 
+0

我认为它的一个模拟器的行为不像设备一样。如果没有完全访问权限,则无法读取共享应用程序组文件夹中的文件。但你可以在模拟器上。 – 2014-10-17 15:50:24

+0

什么是主要应用程序?我只是试图禁用主应用程序共享应用程序组,并仍然可以检查完全访问 – TomSawyer 2014-11-10 10:20:10

回答

3

你可以尝试阅读从价值共享NSUserDefaults - 如果该值为null,则allowFullAccess熄灭

,也可以使用尝试读取从共享文件系统的文件containerURLForSecurityApplicationGroupIdentifier

+1

检查共享用户文件夹是否也工作,即containerURLForSecurityApplicationGroupIdentifier – jjxtra 2014-10-04 16:53:24

+0

@PsychoDad添加到我的答案 - 谢谢 – nurxyz 2014-10-06 14:21:22

+0

请注意,在模拟器上,您可以从共享应用程序读取文件组文件夹,即使完全访问关闭。但在设备上完全访问意味着无法访问文件。 – 2014-10-17 15:51:18

1
+(bool)fullAccessAccessible{ 
    NSUserDefaults *myDefaults = [[NSUserDefaults alloc] 
           initWithSuiteName:APP_GROUP_NAME]; 
    NSString* test_key = @"extension test full access"; 
    [myDefaults setBool:TRUE forKey:test_key]; 
    BOOL res = [myDefaults boolForKey:test_key]; 
    return res == TRUE;//set and get compare 
} 
+0

内获取这些信息?解释一下。 – Kumar 2015-08-05 11:04:35