Siri Shortcut, общение с каналами метода флаттера - PullRequest
0 голосов
/ 26 апреля 2020

Я создал ярлык 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
        })
...