App Delegate:服务调用从后台返回

App Delegate : Service call coming back from background

我想在应用程序返回前台时调用 Web 服务。我是从 didBecomeActive() 调用它的。

处理它并将数据传递给根视图控制器的最佳方法是什么?

你有两个选择。获取 rootViewController 并传递数据,处理它。

func applicationDidBecomeActive(_ application: UIApplication) {

    // 1
    let rootVC1 = self.window?.rootViewController

    // 2
    let rooVC2 = application.windows.first?.rootViewController

    ...
    /*
       pass data to rootVC1 or rootVC2 
    */
}

由于您要传递的数据总是转到同一个视图控制器,因此您应该在该视图控制器而不是应用程序委托中设置观察者。这样一来您就不需要传递任何数据。

class YourViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()

        NotificationCenter.default
          .addObserver(self, selector: #selector(activityHandler(_:)),
                       name: UIApplication.didBecomeActiveNotification, object: nil)
    }


    @objc func activityHandler(_ notification: Notification) {
      //Call your web service here
    }
}