mvvmcross.plugin.ble and plugin.ble都处理异步呼叫,但它们在管理这些呼叫并与MVVMCross框架集成的方法方面有所不同。
mvvmcross.plugin.ble
1。依赖注入:mvvmcross.plugin.ble使用MVVMCross的依赖注入系统来管理“ Ibluetoothle”和`iADAPTER'的实例。这些被注册为懒惰的单例,可以根据需要解决并注入视图模型或其他组件[1]。
2。服务注册:插件注册这些服务,以便可以在整个应用程序中轻松访问它们。这简化了获取蓝牙适配器或管理应用程序中的蓝牙操作的过程[1]。
3。异常处理:虽然mvvmcross.plugin.ble不会明确处理异步异常,但建议由于可能出现异常,尤其是在Android上,建议用trycatch块来包围BLE呼叫,尤其是在Android上[1]。
4。与MVVMCROSS集成:该插件旨在与MVVMCross无缝合作,从而可以轻松地集成到基于MVVMCROSS的应用程序中。这包括对iOS上的状态修复和背景模式等功能的支持[1]。
###插件
1。直接访问:插件Ble提供了直接访问蓝牙功能的情况,而无需依赖注入。用户可以简单地访问`crossbluetoothle.current`实例来管理蓝牙操作[2]。
2。异步操作:plugin.ble支持异步操作,例如连接到设备,阅读/写作特征和处理通知。但是,它需要仔细管理这些异步调用,以避免诸如Android上的Gatt错误之类的问题[2]。
3。异常处理:插件。BLE强调周围异步调用带有试用块的呼叫的重要性,以处理操作过程中可能发生的异常。由于BLE相互作用的不可预测性[2],这至关重要。
4.一般最佳实践:插件鼓励最佳实践,例如在扫描时避免并发运行,一旦找到所需的设备,就可以停止扫描,而不是在连接之间捕获特性或服务实例[2]。
###密钥差异
- 依赖注入:mvvmcross.plugin.BLE使用依赖注入,这简化了MVVMCross应用程序中的服务管理,而Plugin.ble.BLE不需要此。
- 集成:mvvmcross.plugin.ble是专门为MVVMCROSS应用程序设计的,可提供与其功能集成,而插件。BLE.BLE更通用,可以在任何Xamarin或Maui Project中使用。
- 异步呼叫管理:两个插件都需要仔细管理异步呼叫,但是mvvmcross.plugin.ble依赖于MVVMCross的服务管理,有可能简化结构化框架中的错误处理。
总而言之,尽管两个插件在需要仔细的管理和例外处理方面都同样处理异步BLE调用,但MVVMCross.plugin.ble.BLE与MVVMCROSS框架更加紧密地集成,以利用其依赖性注入和服务管理功能。
引用:[1] https://www.nuget.org/packages/mvvmcross.plugin.ble/
[2] https://www.nuget.org/packages/plugin.ble/
[3] https://stackoverflow.com/questions/36522920
[4] https://www.youtube.com/watch?v=sfgulskeoee
[5] https://www.reddit.com/r/dotnet/comments/1bds6rj/why_there_is_is_no_good_good_crossplatform_bluetooth/
[6] https://github.com/xabre/xamarin-bluetooth-le/issues/524
[7] https://stackoverflow.com/questions/69735708/xamarin-plugin-ble-why-data-data-read-doesnt-change
[8] https://learn.microsoft.com/en-us/answers/questions/2101489/ususe-plugin-ble-to-connect-reconnect-to-ble-devic