I'm a Objective-C / iPhone newbie. I want to develop an app that would automatically send an SMS message when the user is busy. I don't know how to go about it, please help me.
You cannot send an SMS message without user interaction on the iPhone using the public APIs. The only supported way to do it is using the MFMessageComposeViewController class.
There may be a way if you're developing for jailbroken devices (I don't know anything about that), or you could have the program contact some sort of web service that would send the SMS message for you (i.e. the message would come from the service, not the device).
Related
I searched all already asked questions here on Stack Overflow, and all of them deal with "sending" an SMS programmatically to another phone and that is NOT what I want.
I want to just add an SMS to the inbox, without using the cellular network or any other service and write a from "my_company_name" etc. Basically I want to avoid making the user or my company pay for the SMS. I know about push notifications and I will use them as well, but I need SMSs.
I thought about that maybe, if the user sends the SMS to himself it would be free of charge, but that "seems" to be not true at all.
The Messages app (and its notification UIs) only displays messages that come in over SMS or iMessage. What you're looking for isn't possible with public API.
As there is no public API available to do this (I guess you already now that), you'll have to go for the private APIs.
You might want to take a look at the source code of BigBoss's WifiSMS. This app allows one to control the iPhone's SMS system thru your computer. I haven't tested it myself yet, but BigBoss is a pretty credible application creator when it comes to jailbroken devices.
I used this code in my app in order to send background sms
But i am not able to upload app on itunes it says:using non public api
#class CTMessageCenter;
can any one tell me any way to send schedule sms when application is in background
or
can any one tell me any way to send sms without presenting SMS composer
There is no "legal" (aka permitted by Apple) way to do this.
The only work around I can assume is having a webservice on a server side, which would be the one sending the messages. You're app should communicate with the server and tell him what to do (text, hour...)
You cant :) why would apple let you send sms on peoples behalf?
Until yesterday I thought that it was not possible to send background SMS without using the IOS SMS interface (Which many people here assure also). However, today I downloaded a new app called SmartSender, which schedules your SMS and then sends it automatically.
I tested it and the SMS is not actually sent on background, but a local notification appears and when you click on it to bring app to foreground, the SMS is sent automatically.
How could this be achieved?
Maybe Apple approved the app because the interface is very clear on what you are doing and what you are sending, but how can you send SMS without showing the interface?
Update: The scheduled SMS appear on my phone Messages app as sent, so I don't think that they are using another service to send SMS, also the receiver phone is indicated that the SMS was sent from my phone.
Update 2: OK I'm using and watching the app doing this, so IT IS POSSIBLE without showing the default interface, I'm not asking whether this can be done or not. I am using it with all internet connections turned OFF, and the message is sent from MY PHONE so it appears on the MESSAGES APP. So the app is not using any third party service.
Update 3: I will accept my own answer, in fact it is not possible; however it was when the question was answered. The App in question has now specified in its description that it won't work in iOS 6, so I think Apple patched some bug that could be exploited to achieve this functionality.
Having tried the app, I can verify that it does send SMS programmatically, without showing the SMS interface. And it clearly doesn't happen through a third-party service, since the message gets sent as an iMessage when possible.
It's also clear from all the other answers that there aren't any public APIs for sending SMS programmatically, so the developer must have used a private API and yet somehow snuck this app through the approval process.
Specifically, it seems he used the CoreTelephony API. This post on SO describes the procedure. Apparently you'll also need to get your hands on the CoreTelephony header files somewhere.
I've been looking into the SMS send/receive limitation on iOS for a few days, using iOS 6 and XCode 4.5 (latest as of writing). I was curious about this SmartSender application so I purchased it.
I don't know if it's because I only tried it on iOS 6, but I get the standard message controller (MFMessageComposeViewController) to send messages. I have tried delayed send - I get the message controller at prescribed time and have to manually click on Send. I have tried immediate send - that pops up the controller and I also have to manually click on Send. If I click on Cancel, the app actually loops me back into the message controller (I can't cancel unless I kill the app!)
So true, this allows entering messages from a custom UI, but then the message itself is copied into the MFMessageComposeViewController and that is what sends the SMS. So App Store approved, but nothing like what we're all looking for!
You can not send SMS programmatically in background, you can use following third party API to send the text message (SMS).
http://www.twilio.com/
http://www.nexmo.com/
https://www.tropo.com/
I would suggest nexmo, its easy to use and support international messages also.
In fact it is not possible; however it was when the question was answered.
The App in question has now specified in its description that it won't work under IOS 6, so I think apple patched some bug that could be exploited to achieve this functionality.
You can use:
[[UIApplication sharedApplication] openURL: #"sms:+3912345678"];
it doesn't work on simulator... and you cannot send programmatically sms!
Tested on iOS < 6.
There is no way to send SMS programmatically. You may want to investigate a 3rd party service service for sending SMS like Twilio.
is there a way to have a Map/GPS app hook into the iPhones SMS reader so that it can parse the message and map to that area?
Specifically I'm thinking of a situation where I'm looking for someone's house and they text me their address. I would (from the SMS) be able to say "Map This" and that would send the text to the GPS app and get directions from where I am to that location.
Obviously there would be some error handling for situations like misspellings, locale names ("Burger King", "Hell"), and city/state guesses, but much of this is already handled by Google Maps.
Mostly I'm wondering how to tie the App to the SMS without having to copy/paste.
The public SDK doesn't provide an SMS API, so you cannot hook into the SMS messages. If you are building a location sharing app, you might consider having your own messaging transport layer using the Push Notification functionality.
I'm still new to the API and I wanted to ask:
Can you send a text message programmatically?
Can you access the users contact list programmatically?
I'm thinking no. I haven't seen anything about text messaging in the API, and I figure the sandboxing that the iPhone does keeps you away from the phones contact list.
Thanks everyone.
1) I'm afraid you can't send SMS with the iPhone SDK although you can make a link to send an SMS like so:
a href="sms:408-555-5555">408 555 5555</a>
2) You can access the contact list with the Address Book UI framework
one way round the sms/mms problem is to use an external aggregator then you can utilise http between a server and the iphone to send sms obviously there is a cost involved this way to the developer
Yes You can build an app to send SMS.
All u need a server API, which u gonna call through ur code, to send sms.
I am saying this bcoz i am currently working on it.
As soon as i m done with my app,i am gonna share it.
http://shishir.com?from=shishir&to=shishir&message=hi&sandbox=false&username=user&password=pass
u hv to pass values through URL.
will go in deep very soon.
regards
shishir