簡體   English   中英

如何在 Flutter 插件中覆蓋 iOS App 生命周期

[英]How to override iOS App lifecycle in Flutter plugin

在我的 flutter 插件的 Swift 端,我需要覆蓋applicationDidBecomeActiveapplicationWillResignActive但我不知道如何去做。

假設它只是一個普通的 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM