Я пытаюсь опубликовать некоторый контент в твиттере из своего приложения, и, к сожалению, с iOS 11 старый способ больше не работает, поэтому я внедряю twitterKit и нахожу некоторые всплески.
Когда у меня не установлено приложение, оно запускает блок завершения ниже, что странно, потому что мне пришлось вручную отклонить предупреждение, так как в предупреждении нет кнопок для этого.
Но моя настоящая проблема заключается в том, что у меня установлено приложение Twitter, и я вошел в систему. Но я не могу обнаружить его с помощью набора Twitter. И когда я нажимаю кнопку «Поделиться в твиттере», приложение переключается на новый вид, если оно просит меня подключить мое приложение к моему твиттеру (если я не вошел в систему, у меня есть поле для входа и пароля, но результатом всегда является то же самое...) Когда я нажимаю "Подключиться", представление возвращается к моему приложению, и ничего не происходит, блок завершения никогда не вызывается... Я работаю в iOS 11 и x-code 9, но я пробовал тот же подход с iOS 10, и я получаю тот же результат. Вход в Twitter никогда не обнаруживается. Это код, который я запускаю, любая помощь будет оценена:
if (Twitter.sharedInstance().sessionStore.hasLoggedInUsers()) {
// App must have at least one logged-in user to compose a Tweet
let composer = TWTRComposerViewController.emptyComposer()
present(composer, animated: false, completion: {
print("This code never runs")
})
} else {
// Log in
Twitter.sharedInstance().logIn { session, error in
if session != nil {
// Log in succeeded / Never happens
let composer = TWTRComposerViewController.emptyComposer()
composer.delegate = self
self.present(composer, animated: true, completion: {
print ("This code never runs")
})
} else {
let alert = UIAlertController(title: "No Twitter Accounts Available", message: "You must log in before presenting a composer.", preferredStyle: .alert)
//Only happens if I don't have the twitter app installed on my device
self.present(alert, animated: false, completion: {
print ("not loggued in")
/*
manual dismission of the prompt as it don't have
any button
*/
sleep(3)
alert.dismiss(animated: true, completion: nil)
})
}
}
}
В консоли я получаю сообщение об ошибке: [Snapshotting] Для создания снимка представления (0x105977000, UIKeyboardImpl), которое не было обработано хотя бы один раз, требуется afterScreenUpdates:YES.
РЕДАКТИРОВАТЬ: я решил добавить этот метод в appDelegate:
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey: Any] = [:]) -> Bool { return Twitter.sharedInstance().application(app, open: url, options: options)}