This app was mentioned in 6 comments, with an average of 1.67 upvotes
There are many hundreds of Morse code or CW trainers but unless you use it regularly like any language it won't stick. The best one I know of was made by ham radio operators it's how I learned I don't know if there's a version for apple but here is the Android version.
https://play.google.com/store/apps/details?id=com.wolphi.morsetrainer
The reason why I like this one over most of the others is it requires you to learn it by audio instead of visual. You can still see it visually but you can very almost every way the code is presented you can change the words per minute, the tone, and how many come at you once in the random generation and which characters will come at you randomly. But one piece of information I do have to share the only people who use CW in a day-to-day situation are ham radio operators everybody else has moved on to digital coding.
I find it convenient listening to code in the car on the way to work. If you have an Android phone and don't mind a paid app, I highly recommend Morse Trainer for Ham Radio
Check out "Morse Trainer for Ham Radio" https://play.google.com/store/apps/details?id=com.wolphi.morsetrainer
Call signs, own txt files, ebook txt files, simulated qsos. Word mode, it doesn't have a lot but a good start.
Check out "Koch Morse Trainer Pro" https://play.google.com/store/apps/details?id=uk.co.bitninja.kmtpro
Has 100 and 1000 word list and can hook into news feeds to send it in cw. The UI is not straightforward. Spacing can only be adjusted for in between words. Words are sent at full speed.
Both are pay. The first one doesn't have all characters, and no prosigns.
I'm using the first one until I can get my in between character speed up higher. I'm at 22/6 now. Started at 3.
I'm using Check out "Morse Trainer for Ham Radio" https://play.google.com/store/apps/details?id=com.wolphi.morsetrainer while driving in the car. I'm in my car a lot everyday. It is sending in groups of 5. Maybe learn to copy call signs? There's enough variety in the app's database that I couldn't guess, unlike words. Program can do letters, common words, Small txt ebooks, call signs. I don't know if I mentioned but I started using koch method with Farnsworth spacing. 22 wpm spaced to 3 wpm. I could bump up the spacing a little faster to make me recall the random letters faster.
I used a few apps on android. My main one is Check out "Morse Trainer for Ham Radio" https://play.google.com/store/apps/details?id=com.wolphi.morsetrainer It has nice tone and settings are easily figured out. It is pay $2. It does not have prosigns yet, but it does have other features that some don't. I train, in the car, by listening only. No device interaction.
A second one, that is free is Check out "IZ2UUF Morse Koch CW" https://play.google.com/store/apps/details?id=net.iz2uuf.cwkoch I think the settings are kinda hard to figure out. It does speak the characters after a group has been sent if you turn that on. The tone is more harsh to listen to. It does have prosigns.
What may work for me, might not for other people. Take baby steps while learning characters. When I would introduce two new characters to the ones I've learned so far, I'd, with the first app, find out which two are the next lesson. In settings, choose no koch and manually select the new two. I'd practice listening only to the new two for a few sessions. I kicked up the repeat setting to like 100 sets of 5. Long sessions but more teaching your brain that this sound means this character.
You will hit speed bumps. Just isolate the ones you're having difficulty with and drill them more, then go back to putting them into the pool you learned already. I still have problems sometimes with 6 and b. I've learned times of day when my brain is working better and the cobwebs have been cleared up.
It usually takes a few sessions before I start getting a rhythm and are able to find a point to jump in and decode while the characters are being sent. Think of the first few sessions of the day are like warming up and stretching before working out. This seems to work for my brain too.
I also drink a few cups of coffee throughout my day to wake me up and stimulate my mind to stop being groggy and misfiring. Since I'm a night person, after 9pm is when I start to get in my groove for learning and copying and being able to keep up with the pace of the code flying at me.
I'm using a couple apps and the web site http://lcwo.net This site is totally free.
the apps are:
Also a guy posted here a little while ago he's posting morse code lesson on youtube.
Warning: if you try and learn morse code visually first it WILL make it harder to learn hearing it. Also you don't want to start with the letters too slowly or you will not be able to get past a certain (very low) speed.