import UIKit import Flutter import CoreMotion @UIApplicationMain @objc class AppDelegate: FlutterAppDelegate { private let motionManager = CMMotionManager() override func application( _ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? ) -> Bool { let controller : FlutterViewController = window?.rootViewController as! FlutterViewController let motionChannel = FlutterMethodChannel(name: "com.yourcompany.app/motion", binaryMessenger: controller.binaryMessenger) motionChannel.setMethodCallHandler({ [weak self] (call: FlutterMethodCall, result: @escaping FlutterResult) -> Void in guard let self = self else { return } switch call.method { case "startMotionUpdates": self.startMotionUpdates(result: result) case "stopMotionUpdates": self.stopMotionUpdates(result: result) default: result(FlutterMethodNotImplemented) } }) GeneratedPluginRegistrant.register(with: self) return super.application(application, didFinishLaunchingWithOptions: launchOptions) } private func startMotionUpdates(result: @escaping FlutterResult) { if motionManager.isDeviceMotionAvailable { motionManager.deviceMotionUpdateInterval = 0.1 motionManager.startDeviceMotionUpdates(to: .main) { (motion, error) in DispatchQueue.main.async { // ここでUIの更新や状態の取得を行う let appState = UIApplication.shared.applicationState // 必要な処理を行う } } result(nil) } else { result(FlutterError(code: "UNAVAILABLE", message: "Device motion is not available.", details: nil)) } } private func stopMotionUpdates(result: @escaping FlutterResult) { motionManager.stopDeviceMotionUpdates() result(nil) } }