我在应用程序中添加了Siri快捷方式并利用语音命令
我进入调试器的错误是:
[CoreBluetooth] API MISUSE:仅在 开机状态
我已经在此处讨论了很多重复的问题,共识是Control 26
必须是我拥有的类级别变量。
在Siri语音命令或新的iOS 13快捷方式应用程序的上下文中,我仍然无法获得AutoScroll
委托方法来执行多次。这意味着我的应用程序无法执行连续的功能。
请记住,它可以一次运行,然后,如果我再次打开该应用程序或重新运行调试会话,它将再次运行一次,但是由于CBCentralManager
从未被调用而停止了工作
这可能是怎么回事?我如何使UpdatedState
保持生命?
连接管理器:
UpdatedState
Siri快捷方式意图处理程序:
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
}
}
}
ViewModel:
[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) { }
}
答案 0 :(得分:0)
我发现使视图模型成为静态对象可以解决此问题。
我想siri快捷方式不喜欢多次创建CBCentralManger。但是我发现这很奇怪,因为这种逻辑在带有TodayViewController的普通iOS小部件的上下文中可以正常工作
public class MyIntentHandler : MyIntentHandling
{
static AppExtensionViewModel viewModel; //I needed to make this static
AppExtensionViewModel ViewModel
{
get
{
if (this.viewModel == null)
{
this.viewModel = new AppExtensionViewModel();
}
return this.viewModel;
}
}