Выпуск SafariViewController с обратным вызовом NotificationCenter - PullRequest
0 голосов
/ 24 августа 2018

мое приложение использует SafariViewController для оплаты через веб-страницу.SafariViewController открывает ссылку с платным веб-виджетом.После завершения транзакции пользователь автоматически перенаправляется в приложение через приложение метода экземпляра (_: open: options :) из uiapplicationdelegate.Мы обнаружили, что случайным образом вызывается приложение метода (_: open: options :), когда SafariViewcontroller выполняется, и никто его не вызывает, а URL-адрес - это прошедшая и завершенная транзакция.Подробно вот несколько фрагментов кода.

  func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {



        if (url.scheme == "myAppTest") {
            NotificationCenter.default.post(name: Notification.Name("CallbackNotification"), object: url)
            return true

        }

            return true
}

В ViewController SafariViewController вызывается так:

NotificationCenter.default.addObserver(self, selector: #selector(safariPay(_:)), name: Notification.Name("CallbackNotification"), object: nil)


self.safariVC = SFSafariViewController(url: URL(string: authURL)!)
safariVC.delegate = self

self.present(safariVC, animated: true, completion: nil)

Очевидно, что методы для удаления наблюдения из NotificationCenter были вставлены.

  func safariViewControllerDidFinish(_ controller: SFSafariViewController) {
        NotificationCenter.default.removeObserver(self, name: Notification.Name("CallbackNotification"), object: nil)
    }

Я хотел бы понять, если это проблема на стороне кода, то есть если какой-то элемент управления отсутствует или SafariViewController хранит что-то в памяти, что может вызвать эту ошибку.

...