CoreBluetooth API MISUSE-iOS 13中的CBCentralManager问题,例如Siri快捷方式

问题描述 投票:0回答:1

我将Siri快捷方式添加到我的应用程序中并利用语音命令

我进入调试器的错误是:

[[CoreBluetooth] API MISUSE:仅当在开机状态

我在这里讨论了很多与此问题相关的重复项,并且一致认为CBCentralManager必须是我拥有的类级别变量。

我仍然无法在Siri语音命令或新的iOS 13快捷方式应用程序的上下文中使UpdatedState委托方法执行多次。这意味着我的应用程序无法执行连续的功能。

请记住,它可以一次运行,然后,如果我再次打开该应用程序或重新运行调试会话,它将再次运行一次,但是由于从未调用UpdatedState而停止了工作,>

这里可能会发生什么?如何使我的CBCentralManager保持生命?

连接管理器:

public class BleConnectionManagerIos : CBCentralManagerDelegate
{
  CBCentralManager centralManager;

  public BleConnectionManagerIos()
  {
    var dict = NSDictionary.FromObjectsAndKeys(new object[] { false }, 
               new object[] { CBCentralManager.OptionShowPowerAlertKey });
    this.centralManager = new CBCentralManager(this, null, dict);
  }

  //THIS METHOD IS ONLY EXECUTED ONE TIME ONLY
  public override void UpdatedState(CBCentralManager central)
  {
    if (central.State == CBCentralManagerState.PoweredOn)
    {
      //powered on
    }
    else
    {
      //not powered on
    }
  }
}

Siri快捷方式意图处理程序:

[Register("IntentHandler")]
public class IntentHandler : INExtension
{
  public override NSObject GetHandler(INIntent intent)
  {
    if (intent is MyIntent)
    {
      return new MyIntentHandler();
    }
  throw new Exception("Unhandled intent type: ${intent}");
  }

  protected IntentHandler(IntPtr handle) : base(handle) { }
}

意图处理程序:

public class MyIntentHandler : MyIntentHandling
{
  AppExtensionViewModel viewModel;
  AppExtensionViewModel ViewModel
  {
    get
    {
    if (this.viewModel == null)
    {
      this.viewModel = new AppExtensionViewModel();
    }
    return this.viewModel;
  }
}

public override void HandleTheIntent(MyIntent intent, Action<MyIntentResponse> completion)
{
   this.ViewModel.DoSomething();
}

ViewModel:

public class AppExtensionViewModel
{
   IBleConnectionManager BleConnectionManager; 

   public AppExtensionViewModel()
   {
     this.BleConnectionManager = new BleConnectionManagerIos();
   }
}

[我在应用程序中添加了Siri快捷方式并利用语音命令,我在调试器中遇到的错误是:[CoreBluetooth] API误用:仅在开机时可以接受此命令...

ios xamarin core-bluetooth ios13 sirishortcuts
1个回答
0
投票

我发现使与视图模型的连接静态化解决了这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.