2015-07-19 4 views
31

До IOS 8.3 способ проверки «Разрешить полный доступ» был предоставлен расширению клавиатуры с помощью следующего кода в контейнер приложение:Как установить флажок «Разрешить полный доступ», так как iOS 8.3 * из приложения-контейнера *

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

Однако, как комментарии на этом популярном SO ответа thread точки вне, так прошивки 8.3, приложение может считывать данные из совместно контейнеров группы, даже если полный доступ не предоставляется, поэтому приведенный выше код всегда возвращает true. Однако написать разрешение предоставляется только в том случае, если включен «Разрешить полный доступ».

Я пробовал распечатать все картона на основе docs от Apple UIPasteboard, но он не определяет, какие из них доступны. Любые идеи по этому поводу очень ценятся.

+0

Общие картонный должны быть доступны для всех для чтения и/или записи. Общие контейнеры - это другое дело. Вы пытаетесь написать приложение для записи, которое может использоваться клавиатурой? Можете ли вы объяснить сценарий, в котором вы хотите его использовать? – Omar

+0

Пожалуйста, обратите внимание в этот ответ: [http://stackoverflow.com/a/26088674/3317354][1] [1]: http://stackoverflow.com/a/26088674/3317354 – teamnorge

+0

Привет @Omar - да, действительно, я пытаюсь проверить, может ли общий контейнер быть доступен для записи (предоставление «полного доступа» на клавиатуре iOS позволяет записывать и читать, поэтому можно считывать данные из приложения-контейнера на основе того, что было сохранено с клавиатуры). Раньше 'generalPastboard' хватило бы. – daspianist

ответ

1

На iOS 8.4 UIPasteboard.generalPasteboard() - nil, если полный доступ не разрешен. Попробуйте удалить приложение для клавиатуры и контейнера + clean and build приложение перед повторным тестированием. Должен работать нормально.

+0

Я пробовал код выше, но даже если «Полный доступ» не указан, он возвращает Да. –

2

Вот мой в настоящее время работает/развертывается реализация:

- (void)viewDidAppear:(BOOL)animated { 
    NSLog(@"keyboard has full access? %@", ([self validateKeyboardHasFullAccess] ? @"YES" : @"NO")); 
} 

- (BOOL)validateKeyboardHasFullAccess { 
    return !![UIPasteboard generalPasteboard]; 
} 
+0

Спасибо за вход! Это отлично работает при проверке полного доступа изнутри клавиатуры, но мне было интересно, есть ли способ сделать это из приложения-контейнера. – daspianist