BT.Serial.available() always returns 0

I've moved to experimenting with code that only receives one character to try and work around the inconsistencies I was experimenting with earlier. Using the same circuit setup, I'm using this code instead:

#include <SoftwareSerial.h>
SoftwareSerial BTserial(10, 11); // RX | TX 

char receivedChar;
boolean newData = false;

void setup() {
 Serial.begin(9600);
 BTserial.begin(9600); 
 Serial.println("<Arduino is ready>");
 BTserial.print("<Arduino is ready>");
 pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
 recvOneChar();
 showNewData();
}

void recvOneChar() {
 if (BTserial.available() > 0) {
 receivedChar = BTserial.read();
 newData = true;
 }
}

void showNewData() {
 if (newData == true) {
 Serial.print("This just in ... ");
 Serial.println(receivedChar);
 newData = false;
 if (receivedChar == 1) {
    digitalWrite(LED_BUILTIN, HIGH);
    Serial.print("light on");
  }
  if (receivedChar == 0) {
    digitalWrite(LED_BUILTIN, LOW);
    Serial.print("light off");
  }
 }
}

I modified this code from someone else's forum post (Serial Input Basics). The serial monitor is printing the inputs from the connected phone but two things aren't quite working: two extra instances of "this just in..." are printing after the character, and the comparison between the variable "receivedChar" and the value doesn't seem to be working. Any ideas on how to compare the input with the expected value?