【问题标题】:Check full access for custom keyboard extension检查自定义键盘扩展的完全访问权限
【发布时间】:2014-11-22 04:58:42
【问题描述】:

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

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;

【问题讨论】:

  • 我认为这是模拟器的行为与设备不同的情况。如果没有完全访问权限,您将无法读取共享应用程序组文件夹中的文件。但你可以在模拟器上。
  • 什么是主应用?我刚刚尝试禁用主应用共享应用组,但仍然可以检查完全访问权限

标签: objective-c ios8 ios-app-extension custom-keyboard ios-app-group


【解决方案1】:

您可以尝试从共享的NSUserDefaults 中读取一个值 - 如果该值为 null,则 allowFullAccess 处于关闭状态

或者您可以尝试使用containerURLForSecurityApplicationGroupIdentifier从共享文件系统读取文件

【讨论】:

  • 检查共享用户文件夹是否也有效,即 containerURLForSecurityApplicationGroupIdentifier
  • 注意,在模拟器上,您可以从共享的应用程序组文件夹中读取文件,即使完全访问权限已关闭。但是在设备上完全访问关闭意味着没有文件访问权限。
  • 另请注意,开启完全访问权限后,您可能需要使用键盘重新启动应用程序才能让其注意到更改。
  • 这适用于扩展程序,但托管应用程序始终可以从共享容器中读取。有没有办法从托管应用程序中获取这些信息
【解决方案2】:
+(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
}

【讨论】:

  • 你想说什么??解释一下。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-11
  • 2015-02-11
  • 1970-01-01
  • 1970-01-01
  • 2017-08-30
  • 1970-01-01
相关资源
最近更新 更多