Sensor not recognized, sensorDidConnect not called

Hi,

I can’t make my own application to work, the Structure Sensor Mark II is not found.

I think I suffer from this known issue :

On iOS 13 sensors may not be detected on app initialization. The sensor must be unplugged
and replugged to restore connection.

But unplug/replug the sensor doesn’t work here : the sensorDidConnect method is never called.

When I’m using the LowLevel-Viewer SDK 0.11.0 sample, it works.
What am I missing in my configuration ?
I compare the 2 XCode build settings, added some struff like -framework CoreAccessories in mine but without luck.
My plist also contained the 3 rows io.structure.* as describe in the documentation.
I also check that every Framework listed in the document are correctly added.

Here is my sensor info (recorded with LowLevel-Viewer sample app) :

AccessoryInfo for arrival = {
    ACCExternalAccessoryPPIDKey = "<null>";
    ACCExternalAccessoryPrimaryUUID =     "F614F7C5-C4D2-4163-9AF6-580ED1B2E47F";
    ACCExternalAccessoryProtocolDetailsKey =     {
        "io.structure.control" =         {
            ACCExternalAccessoryMatchAction = 2;
            ACCExternalAccessoryProtocolEndpointUUID =     "F614F7C5-C4D2-4163-9AF6-580ED1B2E47F";
            ACCExternalAccessoryProtocolIndex = 1;
            ACCExternalAccessoryProtocolType = 0;
            ACCExternalAccessorySessionUsesSocketInterfaceKey     = 1;
        };
    };
    IAPAppAccessoryCapabilitiesKey = 1;
    IAPAppAccessoryCertDataKey = "908 bytes";
    IAPAppAccessoryCertSerialNumberKey = "15 bytes";
    IAPAppAccessoryDockTypeKey = "";
    IAPAppAccessoryFirmwareRevisionKey = "0.9.9";
    IAPAppAccessoryFirmwareRevisionPendingKey = "<null>";
    IAPAppAccessoryHardwareRevisionKey = "ST02A v1.2";
    IAPAppAccessoryManufacturerKey = Occipital;
    IAPAppAccessoryModelNumberKey = ST02A;
    IAPAppAccessoryNameKey = "Structure Sensor";
    IAPAppAccessoryProtocolsKey =     {
        "io.structure.control" = 1;
    };
    IAPAppAccessorySerialNumberKey = 93068;
    IAPAppAccessoryTransportType = 8;
    IAPAppAccessoryVehicleInfoInitialDataKey =     {
    };
    IAPAppConnectionIDKey = 37962631;
}

And I am using an iPad pro 3rd gen model MTFL2NF/A under iOS 13.2.3.

Thanks

Ok I make it to work with a weird change.

According to iOS ExternalAccessory Framework documentation the key to add to .plist file is UISupportedExternalAccessoryProtocols which expands itself to Supported external accessory protocols in XCode 11.3 (11C29) plist editor. And then it works. I got a callback when I plug my device.

This happen because I add the key with a C# script (from Unity) with the human readable name instead of the iOS magic string.

3 Likes