使用回调NotificationCenter发出SafariViewController

时间:2018-08-24 15:06:09

标签: xcode sfsafariviewcontroller

我的应用使用SafariViewController通过网页付款。 SafariViewController打开带有付费Web小部件的链接。 交易完成后,将通过uiapplicationdelegate的实例方法application(_:open:options :)自动将用户重定向到该应用。 我们发现执行SafariViewcontroller时会随机调用方法application(_:open:options :),而没有任何人调用它,并且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是否在内存中保留了可能触发此错误的内容。

0 个答案:

没有答案