Есть две точки , на которые нужно обратить внимание при разработке Xamarin iOS bluetooth .
- Первая , вы необходимо запустить его на физическом устройстве, не может тестировать функцию Bluetooth на симуляторе устройства. Если это так, вы всегда будете получать журнал консоли с общим кодом:
2020-02-28 13: 32: 38.310442 + 0800 AppIOSBluetooth [36757: 5394891] Bluetooth не включен
- Второй , вам нужно добавить разрешение для приложения Bluetooth в файле
info.plist
. При первом запуске приложения, оно покажет всплывающее окно с разрешениями.
Однако в info.plist
вы можете легко добавить разрешение Bluetooth следующим образом и забудете другое наиболее важное разрешение:
<key>NSBluetoothPeripheralUsageDescription</key>
<string>Add BlueTooth Peripheral Permission</string>
Этого недостаточно для Bluetooth. Вам также нужно добавить другое разрешение:
<key>NSBluetoothAlwaysUsageDescription</key>
<string>use Bluetooth</string>
Кроме того, есть официальный API, который c об использовании Bluetooth в Xamarin iOS вы можете посмотреть.
public override void ViewDidLoad ()
{
base.ViewDidLoad ();
// Perform any additional setup after loading the view, typically from a nib.
myDel = new MySimpleCBCentralManagerDelegate();
var myMgr = new CBCentralManager(myDel, DispatchQueue.CurrentQueue);
}
public class MySimpleCBCentralManagerDelegate : CBCentralManagerDelegate
{
override public void UpdatedState(CBCentralManager mgr)
{
if (mgr.State == CBCentralManagerState.PoweredOn)
{
Console.WriteLine("Bluetooth is available");
//Passing in null scans for all peripherals. Peripherals can be targeted by using CBUIIDs
CBUUID[] cbuuids = null;
mgr.ScanForPeripherals(cbuuids); //Initiates async calls of DiscoveredPeripheral
//Timeout after 30 seconds
var timer = new Timer(30 * 1000);
timer.Elapsed += (sender, e) => mgr.StopScan();
}
else
{
//Invalid state -- Bluetooth powered down, unavailable, etc.
System.Console.WriteLine("Bluetooth is not available");
}
}
public override void DiscoveredPeripheral(CBCentralManager central, CBPeripheral peripheral, NSDictionary advertisementData, NSNumber RSSI)
{
Console.WriteLine("Discovered {0}, data {1}, RSSI {2}", peripheral.Name, advertisementData, RSSI);
}
}