Версия для Mac OS: Mojave - 10.14.3
Версия XCode: 10.1
Проверено на обоих: ios 12.1 (iphone 8) и ios 10.3.3 (iphone 5c)
Мне удалось заставить аутентификацию работать, все работает, я могу получить данные от пользователя, используя их токен доступа.
Моя единственная проблема - попытка обновить значения пользовательского интерфейса на текущем контроллере представления после успешной аутентификации.моя метка пользовательского интерфейса display_name
становится нулевой после того, как приложение возвращается из фазы аутентификации в приложении Spotify или SFSafariViewController.Есть ли способ обновить display_name
в didInitiate?
Странная часть в том, что он отлично работает на симуляции: DispatchQueue.main.async
работает, но не на реальных устройствах
// In my ViewController.swift
class ViewController: UIViewController, SPTSessionManagerDelegate {
@IBOutlet weak var display_name: UILabel!
//protocol stubs for 'SPTSessionManagerDelegate'
func sessionManager(manager: SPTSessionManager, didInitiate session: SPTSession)
{
print("success", session)
DispatchQueue.main.async {
self.display_name.text = "data from api" // Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value
}
}
...
// In my AppDelegate.swift
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
lazy var rootViewController = ViewController()
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
rootViewController.sessionManager.application(app, open: url, options: options)
print("application func")
return true
}
...