I had no problems at all using the app with a Samsung phone, but as soon as I switched to a Nexus 6P I started having the issues you mentioned.

I'd suggest to try the app first (take a screenshot of whatever codes you need to eventually remove it from your account if it breaks). In my experience it only took a day at most to break, so if you're able to go a week you're probably good. If it does break, get the physical token.

Beyond the added cost, a physical token can't be reused if you decide to apply it and then remove it to try the app (you'll have to repurchase), so consider the physical token as a reliable last resort.