簡體   English   中英

如何檢查我的ios8自定義鍵盤擴展是否具有開放訪問權限?

[英]How can I check does my ios8 custom keyboard extension have open access?

在我的ios 8鍵盤擴展中,我想檢查用戶是否給我的鍵盤打開訪問權限。 但我找不到任何API。 Swiftkey和其他自定義鍵盤以某種方式解決了這個問題

我認為這是一種更簡單的方法(無需創建容器):

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

    return NO;
}

沒有API,但如果您啟用了應用程序組訪問權限,則可以嘗試檢查是否能夠讀取/寫入該文件夾。 它應該給你一個權限錯誤訪問未啟用。

用這個,

-(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;
}

在iOS10測試版中更改了粘貼板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
    }
}

在這里找到了這個省錢的答案

如何在iOS 8中啟用“允許完全訪問”?

我測試了一些應用程序並且完美無缺!

您可以使用此功能檢查您的自定義鍵盤擴展是否具有開放訪問權限:

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
       }
   }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM