如何检查我的 ios8 自定义键盘扩展是不是具有开放访问权限?

Posted

技术标签:

【中文标题】如何检查我的 ios8 自定义键盘扩展是不是具有开放访问权限?【英文标题】:How can I check does my ios8 custom keyboard extension have open access?如何检查我的 ios8 自定义键盘扩展是否具有开放访问权限? 【发布时间】:2014-09-26 10:19:57 【问题描述】:

在我的 ios 8 键盘扩展中,我想检查用户是否允许我的键盘打开访问权限。但我找不到任何 API。 Swiftkey 和其他自定义键盘以某种方式解决了这个问题

【问题讨论】:

【参考方案1】:

我认为这是一种更简单的方法(无需创建容器):

- (BOOL) isOpenAccessGranted

    if ([UIPasteboard generalPasteboard])
        return YES;

    return NO;

【讨论】:

【参考方案2】:

没有 API,但如果您启用了应用组访问权限,您可以尝试检查您是否能够读取/写入该文件夹。它应该给你一个权限错误访问未启用。

【讨论】:

【参考方案3】:

使用这个,

-(BOOL)isOpenAccessGranted

      NSFileManager *filemanager = [NSFileManager defaultManager];
      NSString *containerPath = [[filemanager containerURLForSecurityApplicationGroupIdentifier:@"/***YOUR APP GROUP ID***/"] path];

      NSError *err;

      [filemanager contentsOfDirectoryAtPath:containerPath error:&err];

      if(err != nil)
      
           NSLog(@"Full Access: Off");
           return NO;
      

      NSLog(@"Full Access On");
      return YES;

【讨论】:

更多细节:***.com/questions/25472388/…【参考方案4】:

iOS10 beta 中更改了粘贴板 API

斯威夫特:

func isOpenAccessGranted() -> Bool 
    let originalString = UIPasteboard.general.string
    UIPasteboard.general.string = "TEST"
    if UIPasteboard.general.hasStrings 
        UIPasteboard.general.string = originalString
        return true
    else
        return false
    

在这里找到这个拯救生命的答案

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

我测试了一些应用程序并且运行良好!

【讨论】:

有什么理由反对?如果您能解释一下,如果这里有什么问题会很好.. 太棒了,@Drico【参考方案5】:

您可以使用此功能检查您的自定义键盘扩展是否具有开放访问权限:

func isOpenAccessGranted() -> Bool
    if #available(iOS 10.0, *) 
       let originalString = UIPasteboard.general.string
       UIPasteboard.general.string = "Sour LeangChhean"

       if UIPasteboard.general.hasStrings 

           UIPasteboard.general.string = originalString ?? ""
           return true
       else
           UIPasteboard.general.string = ""
           return false
       
   else 
    // Fallback on earlier versions
       if UIPasteboard.general.isKind(of: UIPasteboard.self) 
           return true
       else
           return false
       
   

【讨论】:

以上是关于如何检查我的 ios8 自定义键盘扩展是不是具有开放访问权限?的主要内容,如果未能解决你的问题,请参考以下文章

检查 iOS 8 的自定义键盘中的输入文本是不是为空

如何在iOS8自定义键盘中使用自动更正和快捷列表?

获取 ios 8 自定义键盘扩展的“因内存错误而终止”

iOS 8 自定义键盘扩展 UIKeyboardType

在自定义键盘扩展中检测输入对象视图类型

自定义键盘应用程序扩展 iOS 8 上的 Siri