Я создал ярлык Siri
, который использует расширение приложения в ios
, чтобы оно могло выполняться в фоновом режиме. Можно ли получить доступ к каналу метода flutter
из расширения приложения? С помощью ярлыка Siri я хочу выполнить код в моем слое дротиков.
Насколько я понимаю, это не будет возможно из-за основного приложения флаттера и намерения ярлыка, являющегося полностью отдельными экземплярами, но, возможно, у кого-то есть предложение, как это сделать. Я добавил код с комментарием ниже для того, где я хотел бы получить доступ к каналу метода флаттера.
import Foundation
import Intents
class WakeUpIntentHandler : NSObject, WakeUpIntentHandling {
func handle(intent: WakeUpIntent, completion: @escaping (WakeUpIntentResponse) -> Void) {
// Here I would like to access FlutterMethodChannel to communicate with the dart layer of my app
completion(WakeUpIntentResponse.success(deviceName: intent.deviceName!))
}
func resolveDeviceName(for intent: WakeUpIntent, with completion: @escaping (INStringResolutionResult) -> Void) {
if intent.deviceName == "" {
completion(INStringResolutionResult.needsValue())
} else {
completion(INStringResolutionResult.success(with: intent.deviceName ?? ""))
}
}
}
Мне нужно иметь доступ к каналам метода, как показано ниже в AppDelegate. Обычно это так же просто, как создание нового экземпляра канала метода, однако мне нужен доступ к контроллеру представления root для параметра binaryMessenger.
controller.binaryMessenger
let channel = FlutterMethodChannel(name: "example/channel", binaryMessenger: controller.binaryMessenger)
channel.setMethodCallHandler({
(call: FlutterMethodCall, result: @escaping FlutterResult) -> Void in
//channel code
})