Как проверить "Разрешить полный доступ" предоставляется с iOS 8.3 * из приложения-контейнера *
До iOS 8.3 способ проверки "Разрешить полный доступ" был предоставлен расширению клавиатуры через следующий код в приложении контейнера:
- (BOOL)isOpenAccessGranted{
return [UIPasteboard generalPasteboard];
}
Однако, поскольку комментарии к этому популярному ответу SO указывают, что с iOS 8.3 приложение может читать из общих контейнеров групп, даже если полный доступ не предоставляется, поэтому приведенный выше код всегда возвращает true. Однако разрешение написать предоставляется только в том случае, если включен "Разрешить полный доступ".
Я попробовал листинг всех картотек на основе Apple docs в UIPasteboard
, но он не определяет, какие из них доступны, Любые идеи по этому поводу очень ценятся.
Ответы
Ответ 1
Здесь моя текущая работа/развернутая реализация:
- (void)viewDidAppear:(BOOL)animated {
NSLog(@"keyboard has full access? %@", ([self validateKeyboardHasFullAccess] ? @"YES" : @"NO"));
}
- (BOOL)validateKeyboardHasFullAccess {
return !![UIPasteboard generalPasteboard];
}
Ответ 2
В iOS 8.4 UIPasteboard.generalPasteboard()
есть nil
, если полный доступ запрещен.
Попробуйте удалить приложение для клавиатуры и контейнера + clean and build
, перед повторным тестированием. Должен работать нормально.