I looked into doing this a couple of years ago. As you note, there are two mechanisms by which the tracker can communicate with your phone: GPRS and SMS. Taking each in turn:
GPRS
In normal operation, the tracker uses the IP address of the company's server (so presumably will be preconfigured with that IP address). You have to provide the tracker with the public IP address of your phone, and it then establishes a connection with the phone. There should be some way to change the IP address that the tracker uses.
As a preliminary step, I was able to get the tracker to connect with my PC. I found there was very little information available about the format of the messages sent/received over GPRS. I was able to get some basic location info from the device, but never succeeded in sending commands over GPRS.
When I looked into writing an app for my iphone, I found the bigger hurdle (for me at least) was that the low-level networking was way beyond my abilities. I've no idea whether Android would be easier in this respect.
But another problem is that your phone's IP address is assigned dynamically whilst connected by 3/4G (even a wifi connection to your home broadband is unlikely to have a truly static IP). So you need some fallback mechanism (SMS) for updating the tracker when the IP address changes.
SMS
The tracker I had acquired could receive "commands" by SMS and would likewise reply with an acknowledgement or location by SMS. The format of the command messages was pretty messy, and I was able to code a basic app to take user input and prepare the required SMS. At the time on iphone you had to present the SMS to the user, for them to press the send button - for privacy reasons, Apple did not permit SMS to be sent "silently" without the user interaction. But the bigger problem here was that there was no way to "capture" the incoming replies from the tracker in order to decode them within the app. I think that's still the case, though the Messages framework in ios10 might make it possible.
I suspect this might be easier on Android, though I have no experience of it myself.