I am not a lawyer, this is my understanding of the situation but it is not legal advice. If you want that pay a lawyer. I'm also basing this on GPLv2, the principles are mostly the same in GPLv3 but there may be differences in the details.
I understand that my source code must be freely available.
Not exactly, basically you must either provide the source along with the binaries[1] or provide a written offer valid for at least 3 years to provide the source to anyone on "a medium customarily used for software interchange" for "a charge no more than your cost of physically performing source distribution". If you distribute the source along with the binaries there is no requirement for you to directly make it available to the general public (but there is also nothing stopping anyone you provide it to from making it available to the general public)
If my source code is freely available can I legally charge a fee for using the version that I publish?
The GPL does not in general forbid charging money for stuff. As far as I can tell there would be nothing stopping you implementing in a GPL application a lockout that required for example date and machine ID based license codes. There would also be nothing stopping someone getting the source code and ripping your lockout code out.
My situation: I'm using data from a program in my program and have an In-App purchase for access to all the data.
Data that can be loaded by an program (but is not actually built-in to the programs binaries) is not considered part of the program. So it's perfectly fine to use non-free data with a GPL application. I would not think that making the data available via an in-app purchase would change anything in this regard.
Whether you can control distribution of the data depends on the type of data, local laws and whether you actually own the data in the first place. In some countries some types of data are not eligable for copyright and similar protection.
The source code is publicly available and is mentioned in the program.
That may not strictly speaking be enough (though in practice if people can reasonablly get the source code they are unlikely to be too picky on the details).
[1] "If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. "