В моем расширении клавиатуры ios 8 я хочу проверить, дал ли пользователь доступ к открытой клавиатуре или нет. Но я не мог найти API. Swiftkey и другие пользовательские клавиатуры как-то решают эту проблемуКак я могу проверить, имеет ли пользовательское расширение клавиатуры ios8 открытый доступ?
ответ
Нет 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;
}
Я думаю, что это более простой способ (нет необходимости создать контейнер):
- (BOOL) isOpenAccessGranted
{
if ([UIPasteboard generalPasteboard])
return YES;
return NO;
}
Pasteboard API изменен в iOS10 бета
Swift:
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?
Я тестировал несколько приложений и работает отлично!
любая причина для downvote? если что-то не так, здесь было бы хорошо, если бы вы могли объяснить .. –
Кажется, для меня работает :) – Drico
awesome, @Drico –
Вы можете использовать эту функцию, чтобы проверить ваше расширение пользовательской клавиатуры имеет открытый доступ или нет:
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
}
}
}
еще несколько деталей: http://stackoverflow.com/questions/25472388/how-to-check-the -allow-full-access-is-enabled-in-ios-8 – fisch2