如何使用EAAccessoryManager Xamarin表单将ESP32连接到iPhone?

如何使用EAAccessoryManager Xamarin表单将ESP32连接到iPhone?,xamarin,xamarin.forms,xamarin.android,xamarin.ios,esp32,Xamarin,Xamarin.forms,Xamarin.android,Xamarin.ios,Esp32,我尝试使用EAAccessoryManager将我的ESP32连接到我的苹果手机,但我无法: 连接的设备始终为空,未找到任何设备。有人能帮我吗。这是我的代码我需要连接它:他没有找到任何设备,总是连接接入数是0 public void Start() { var connectedAccessories = EAAccessoryManager.SharedAccessoryManager.ConnectedAccessories; EAAccess

我尝试使用EAAccessoryManager将我的ESP32连接到我的苹果手机,但我无法: 连接的设备始终为空,未找到任何设备。有人能帮我吗。这是我的代码我需要连接它:他没有找到任何设备,总是连接接入数是0

    public void Start()
    {
        var connectedAccessories = EAAccessoryManager.SharedAccessoryManager.ConnectedAccessories;
        EAAccessory beeWiCar = null;

        foreach (var accessory in connectedAccessories)
        {
            foreach (var protocolString in accessory.ProtocolStrings)
            {
                protocolString.Contains("com.beewi.controlleur");
                beeWiCar = accessory;
                break;
            }
        }

        if (beeWiCar != null)
        {
            try
            {
                session = new EASession(beeWiCar, "com.beewi.controlleur");
                session.Accessory.Disconnected += delegate
                {
                    new UIAlertView("BeeWi Car", "BeeWi car disconnected", null, "OK").Show();
                };

                session.InputStream.Schedule(NSRunLoop.Current, NSRunLoop.NSDefaultRunLoopMode);
                session.InputStream.Open();
                session.OutputStream.Schedule(NSRunLoop.Current, NSRunLoop.NSDefaultRunLoopMode);
                session.OutputStream.Open();
            }
            catch (Exception ex)
            {
                new UIAlertView("BeeWi Car", "Ups something went wrong.", null, "OK").Show();
            }
        }
        else
        {
            new UIAlertView("BeeWi Car", "No BeeWi car connected", null, "OK").Show();
        }
    }

您似乎缺少实际查找蓝牙设备并从列表中选择所需的这部分代码:

EAAccessoryManager.SharedAccessoryManager.RegisterForLocalNotifications();
TaskCompletionSource<EAAccessory> tcs = new TaskCompletionSource<EAAccessory>();
connectionObserver = EAAccessoryManager.Notifications.ObserveDidConnect((s, e) =>
{
    tcs.SetResult(e.Selected);
});

try
{
    await EAAccessoryManager.SharedAccessoryManager.ShowBluetoothAccessoryPickerAsync(null);
}
catch(Exception ex)
{
    System.Diagnostics.Debug.WriteLine(ex);
    EAAccessoryManager.SharedAccessoryManager.UnregisterForLocalNotifications();
    return null;
}
EAAccessoryManager.SharedAccessoryManager.RegisterForLocalNotification();
TaskCompletionSource tcs=新的TaskCompletionSource();
connectionObserver=EAAccessoryManager.Notifications.observeddconnect((s,e)=>
{
tcs.SetResult(e.Selected);
});
尝试
{
等待EAAccessoryManager.SharedAccessoryManager.ShowBluetoothAccessoryPickerAsync(空);
}
捕获(例外情况除外)
{
系统.诊断.调试.写线(ex);
EAAccessoryManager.SharedAccessoryManager.UnregisterForLocalNotifications();
返回null;
}

它在iOS上的实现。

您似乎缺少实际查找蓝牙设备并从列表中选择所需的这部分代码:

EAAccessoryManager.SharedAccessoryManager.RegisterForLocalNotifications();
TaskCompletionSource<EAAccessory> tcs = new TaskCompletionSource<EAAccessory>();
connectionObserver = EAAccessoryManager.Notifications.ObserveDidConnect((s, e) =>
{
    tcs.SetResult(e.Selected);
});

try
{
    await EAAccessoryManager.SharedAccessoryManager.ShowBluetoothAccessoryPickerAsync(null);
}
catch(Exception ex)
{
    System.Diagnostics.Debug.WriteLine(ex);
    EAAccessoryManager.SharedAccessoryManager.UnregisterForLocalNotifications();
    return null;
}
EAAccessoryManager.SharedAccessoryManager.RegisterForLocalNotification();
TaskCompletionSource tcs=新的TaskCompletionSource();
connectionObserver=EAAccessoryManager.Notifications.observeddconnect((s,e)=>
{
tcs.SetResult(e.Selected);
});
尝试
{
等待EAAccessoryManager.SharedAccessoryManager.ShowBluetoothAccessoryPickerAsync(空);
}
捕获(例外情况除外)
{
系统.诊断.调试.写线(ex);
EAAccessoryManager.SharedAccessoryManager.UnregisterForLocalNotifications();
返回null;
}

它在iOS上的实现。

您确定ESP32和iPhone上的蓝牙已打开吗?你能通过设置直接连接到蓝牙吗(在应用程序之外)?Hello@Saamer谢谢你的回答,很抱歉,因为我的英语不好,所以我确信我的iphone和ESP32中已经开启了蓝牙,但iphone在蓝牙设置中找不到ESP#@beetween可用设备。我不知道为什么,但对于android手机,我发现ESP32没有任何问题!!!谢谢,我的解决方案能为你效劳吗?你也可以试试闪亮的裸体package@Saamer我尝试过shiny,但在我的应用程序中,我需要为ESP32发送一条长消息,而蓝牙ble在ios和android中发送的数据不能超过185字节,这就是为什么我需要使用bluetooth classique,所以现在的问题是当我尝试代码时,我总是不喜欢任何设备连接,所以,如果你能给我一个简单的代码示例,请。我搜索了很多代码,但没有任何结果。。。我一直都是0设备!!谢谢兄弟@Saamer这是一个例子,总是0发现设备你确定ESP32和iPhone上的蓝牙已经打开了吗?你能通过设置直接连接到蓝牙吗(在应用程序之外)?Hello@Saamer谢谢你的回答,很抱歉,因为我的英语不好,所以我确信我的iphone和ESP32中已经开启了蓝牙,但iphone在蓝牙设置中找不到ESP#@beetween可用设备。我不知道为什么,但对于android手机,我发现ESP32没有任何问题!!!谢谢,我的解决方案能为你效劳吗?你也可以试试闪亮的裸体package@Saamer我尝试过shiny,但在我的应用程序中,我需要为ESP32发送一条长消息,而蓝牙ble在ios和android中发送的数据不能超过185字节,这就是为什么我需要使用bluetooth classique,所以现在的问题是当我尝试代码时,我总是不喜欢任何设备连接,所以,如果你能给我一个简单的代码示例,请。我搜索了很多代码,但没有任何结果。。。我一直都是0设备!!谢谢兄弟@Saamer这是一个例子,总是0发现设备