So that code nearly matches my suggestion, except that the last line needs to indicate the end of the data and we do not send labels, only the values because of the MTU limit (Maximum Transmission Unit, though depending on the devices, the MTU can be enlarged).
Points of interest:
For Classic Bluetooth Projects I like to use the bar char (|) as the value separator because of it's prominence and the fact that it isn't likely to be the member of a value, even if the value is a string.
However, the BLE stream blocks expect a comma (,). If a comma is used, there is no need to split the data into a List, it already is a List.
Big caveat!! The microchip Code is not using BLE.
The values your code collects are from sensors? Surely then the sensor values are floats?
EDIT: I see from the Microchip code that all values are integer, so this is what App Inventor BLE expects:
printf("%d",PanTempSetpoint);
printf(",");
printf("%d",ProbeTempSetpoint);
printf("\0"); null
This results in a string of values. e.g.
PanTempSetpoint=123;
ProbeTempSetpoint=456;
String output like this: 123,456
Received like this:
or better:
You might consider building a new App Inventor project using Classic BT Blocks if the BLE Blocks fail when the App is run as an APK, but it looks like you have proved it to be OK.
Android requires certain permissions (Google's security measures) depending on the Android version of your device. You can find advice about that on this forum. Suffice to say, no permissions, no cigar.