![](/img/trans.png)
[英]How to handle app lifecycle with Flutter (on Android and iOS)?
[英]How to override iOS App lifecycle in Flutter plugin
在我的 flutter 插件的 Swift 端,我需要覆蓋applicationDidBecomeActive
和applicationWillResignActive
但我不知道如何去做。
假設它只是一個普通的 flutter 應用程序,我會在AppDelegate 中做到這一點:
override func applicationDidBecomeActive(_ application: UIApplication) {
}
override func applicationWillResignActive(_ application: UIApplication) {
}
但這似乎不適用於插件類。
請注意,我知道我可以在 Flutter 端使用AppLifecycleState來做到這一點,但就像我說的,在 Swift 端這樣做很重要
您需要實現FlutterApplicationLifeCycleDelegate
接口並使用FlutterPlugin
類上的register
方法注冊它。
OBS: FlutterPlugin
類已經繼承了FlutterApplicationLifeCycleDelegate
接口,不用擔心
第 1 步:將您的插件注冊為ApplicationDelegate
類:
public static func register(with registrar: FlutterPluginRegistrar) {
let channel = FlutterMethodChannel(name: "my_wonderful_plugin_id", binaryMessenger: registrar.messenger())
let instance = MyWonderfulPlugin() // YOUR PLUGGIN NAME INSTEAD
registrar.addMethodCallDelegate(self, channel: channel)
registrar.addApplicationDelegate(self) // THIS IS THE BIG SECRET
}
第 2 步:實現接口,包括插件類中的以下方法:
public func applicationDidBecomeActive(_ application: UIApplication) {
debugPrint("applicationDidBecomeActive")
}
public func applicationWillTerminate(_ application: UIApplication) {
debugPrint("applicationWillTerminate")
}
public func applicationWillResignActive(_ application: UIApplication) {
debugPrint("applicationWillResignActive")
}
public func applicationDidEnterBackground(_ application: UIApplication) {
debugPrint("applicationDidEnterBackground")
}
public func applicationWillEnterForeground(_ application: UIApplication) {
print("applicationWillEnterForeground")
}
就是這樣! 哇哦!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.