The app doesn't need your phone number either. I use a 2FA app that collects no data at all, you just enter a code to begin with and it will then spit out the correct codes later on when it is needed.
SMS does require your phone number though, which is another potential security weakness.