Erel,
We use the customers mobile phone number as the primary key to their data.
The first time the app sends a message it sends it via SMS and includes the host phones unique vendor specific identifier (UVSI)
On the backend, there is a mobile modem that receives the SMSs which in turn is managed by software with automatic parsers that harvest the UVSIs and phone numbers to a website.
The next time the app is run it first quizzes this website using the host phones UVSI and thus obtains the hosts phone number.
Any subsequent messages from the app are sent via emails which include the host phone number - thus avoiding SMS costs to the customer.
As I understand it SMS gateways never know the sending customers phone number so I suspect that is not a viable approach.
Thanks...
BTW - as the apps SMS use is limited we can probably live with the ugliness of the MessageComposer popping up but it sure makes the Android version look a lot more professional.