I'm not completely sure if this is a bug or a limitation with the current BLE version implementation.
When using an app like CySmart to read the raw BLE characteristic data I can turn on notification and get data updates larger than 20 bytes from my BLE device so I know my phone supports notification data larger than 20 bytes.
When connecting to my BLE device using B4A and the BLE2 library and I go through the process of discovering all of the services and characteristics and read their current data I can read more than 20 bytes from the characteristic but when the DataAvailable function is called during a notification event and it tries to read the data it only reads the first 20 bytes, the rest of the bytes get truncated.