I would prefer an adaptive approach where the user also enters perceived difficulty and the app learns the correlation between heart rate and perceived difficulty to figure out the zones. I consistently have high heart rate during exercise: a normal walk might get my heart rate to 130, and a moderate run (10:30/mile) might get my heart rate to 180. A very fast run gets my heart rate to 215 (this is beyond the max measurement of the Apple Watch which is 210bpm; I had to use a Garmin HRM to get this measurement). I don't really trust the zones information iOS calculates by default, and it seems like I also can't trust the zones in this app. Switching to the Karvonen method makes the numbers look believable, but I'm not sure where the intensity comes from.
Have you talked to a doctor about this? It's certainly not normal. Do you have hyperthyroidism, anemia, or anything like that which can cause elevated heart rates during exercise?
Happy that you found the Karvonen method first of all. The intensity is just the percentage of the zones. So zone 2 the lower end would be 0.6 and the upper intensity of the zone would be 0.7.
I'm using
(0.5, 0.6), => Zone 1
(0.6, 0.7), => Zone 2
(0.7, 0.8), => Zone 3
(0.8, 0.9), => Zone 4
(0.9, 1.5) => Zone 5
If you are able to reach 215 the problem might be that most of the calculations do 220 - age or something similar for max heart rate.
If your Garmin HRM can write data to the Apple Health app then it would use that HR data. Without measuring your lactate threshold, you don't really know what your zones are. Apple has a concept of "effort" which is a single rating for the entire workout and it'd be interesting to incorporate that.