Ответ 1
Я сортировал эту же вещь на iOS 5.1 vs iOS 6.0 весь день.
Пока есть учетная запись Twitter, настроенная в настройках, мое приложение больше не запрашивает разрешение на доступ к Twitter в iOS 6.0, чтобы отобразить TWTweetComposeViewController
. Я проверил это, отключив доступ Twitter для моего приложения в Settings > Privacy > Twitter
. При доступе я должным образом отрицал возможность создания дружбы с использованием TWRequest, но все же может появиться TWTweetComposeViewController
. Я получаю приглашение в iOS 5.1 каждый раз, пока не предоставил ему доступ.
Это имеет смысл для меня. Все TWTweetComposeViewController
выполняет инициализацию твита, поэтому, если у пользователя уже есть настроенная учетная запись Twitter, это должно быть достаточно, чтобы отправлять твиты из любого места. На самом деле это лишний дополнительный шаг, чтобы предоставить доступ для каждого приложения.
Если учетные записи Twitter не настроены, TWTweetComposeViewController
предложит это сообщение tho:
No Twitter Accounts
There are no Twitter accounts
configured. You can add or create
a Twitter account in Settings.
с удобными кнопками "Настройки" и "Отмена".
Объяснение этому: iOS 6 также запрашивает сообщение "[AppName] Would Like Access to Twitter Accounts"
при первом обращении к приложению.
После этого вы должны reset Settings > General > Reset > Reset Location & Privacy
вернуть запрос. Даже если вы удалите и переустановите/переустановите приложение, настройка "уже задана один раз" сохраняется. Вы можете вручную разрешить доступ в Settings > Privacy
, но этот reset является единственным способом получить приглашение для повторного отображения (если это важно для вашего тестирования).
Две лишние вещи, которые я узнал. В блоке завершения [ACAccountStore requestAccessToAccountsWithType:options:completion:]
, если granted == NO
:
- Если
[error code] == 6
, у вашего пользователя нет определенных учетных записей. - Если
error == nil
, ваш пользователь запретил доступ для вашего приложения, либо сейчас, либо ранее. Если это произошло ранее, запрос молча игнорируется без предупреждения, отображаемого на экране, без нажатия кнопки "Не разрешать".