Get content of SMS and email in iPhone? - iphone

I'm trying to implement an app that can read received SMS and email out. I mean convert the text content to voice. So I need to access to SMS and email first. As far as I know, there is no such API provided in the default SDK. Is there any other way to realize it?
Are the SMS messages stored in database(sms.db)? How to access to them? Is it only possible on jailbroken iphones?
And what about emails? Are they only stored in mail servers? How can I get them in my app?
Sorry for asking so many questions. I have spent many days on this problem, but havn't found any solutions...

You can't. According to the Device Features Programming Guide: Sending an SMS Message:
In iPhone OS 4.0 and later, you can send text messages from within your application. This feature is strictly for sending messages. Incoming SMS messages go to the built-in Messages app.
There are serious privacy and security concerns with enabling app access to emails and SMS, and I am glad Apple choose not to do it.

Yes, you can, (at least with SMS) but only in a jailbreak app (which you suggest is ok in your comments).
The sms.db file can be read by apps that aren't sandboxed.
See my answer to a similar question for how to get SMS content. That answer just shows how to get the most recent SMS, but if you just use the commented out while loop, you can iterate through all SMS.

Related

How to block incoming phone calls, text messages and email in Objective C

Is there any way to block incoming phone calls, text messages and email. Will appstore allows these kind of applications on appstore. Please help me if this is possible or not.
It is now possible from iOS 10 to block the unwanted calls
Checkout the CallKit framework
CallKit introduces app extensions that enable call blocking and caller identification. You can create an app extension that can associate a phone number with a name or tell the system when a number should be blocked.
Update: Never say never :) iOS 10 introduced this possiblity, see other answers.
Original:
NO, this is not possible with public API (and non-jailbroken devices)
And NO, Apple would never allow any app that disrupts the expected standard system behavior
Apple will never allow any third party application to do any illegal things without user's knowledge. This is the policy I think apple has applied to ensure his user's that their data are safe in their iphone. U can consider mails, calls, sms to be under those categories. There may be others which I might have missed.
Please refer this link for your knowledge
Only Apple can do that and unfortunately for you they plan to do otherwise.. :/
Even if it is called "smart", all in all your target device is a "phone" so the basic phone functionalities should not be ever blocked, and the phone manufacturers do not allow this for third party applications.
Rajan is correct you can block the incoming phone calls from iOS 10.
Create a Call Directory Extension , use the addBlockingEntry(withNextSequentialPhoneNumber:) method to pass the blocked numbers to the system.
Now it's end of 2018 and actually you can really do something with Apple's latest API.
As #Rajan stated, with CallKit API (iOS 10+) you can achieve call blocking and identification (i.e. show additional info on the incoming call screen for the caller's phone number).
You can also do SMS and Call Reporting (iOS 11+) as well, where you have access to the SMS content if the number is not in your Contacts.

Mass texting - iOS

This is in regard to Objective-C in an iPhone app...
I have figured out how to get a list of all contacts on my iPhone, but is it possible to send out a mass text? I know I can make a message composer which has an array of recipients, but that will end up sending the text as a group text, not as an individual text to each person.
Also, is there a way to send a text message in iOS without using a message composer?
Most likely no, at least not without jailbreaking. This is the sort of thing that Apple wouldn't allow developers access to just to prevent any possible abuse by the same (especially when it might cost a user a small chunk of change if a mass-text got sent out).
MFMessageComposeViewController is your best bet. You'll be able to specify an array of phone numbers to send SMS to. As for group messaging, I would assume it would default to the users settings. (This is an option in Settings.app) It's simple enough to test but the documentation doesn't mention it.
http://developer.apple.com/library/ios/#documentation/MessageUI/Reference/MFMessageComposeViewController_class/Reference/Reference.html#//apple_ref/doc/uid/TP40009668

How to hook text messages in iphone

I'm trying to develope an iphone application which helps for filtering spam text messages.
But I don't know how to hook text messages.
Please help me.
You just can't. iOS API as of today does not give you access to text messages. Not to read them, not to send them, not to filter them. Sorry to break you bad news.
If your phone is jailbroken, you could do it by accessing the SQLITE database where text messages are stored. But you definitely won't be able to distribute your application through AppStore.
In order to do what you are trying to do, you are going to need to hook into the API. It is possible to jailbreak an iPhone without it being identified as 'jail-broken', though it's a bit tricky and a single screw up can deem your HID jailbroken for life.
If you're attempting to make a program usable for any user, this is not the method you want to use.
The only way this would be possible, is through a virus.

How to build app for flagging emails in iPhone?

Unfortunately, the iPhone cannot flag email messages for followups as it does in Outlook or Gmail. Everywhere I search, people are griping about this with no solution except for moving emails in a 'follow up folder', which is lame because I use flags on my PC with great ease. I am using Exchange to access my email and know flagging works on Windows, Treo, and some other phones. Still no email flagging in the upcoming iOS 4.3 either.
My question is if it is possible to modify the built in mail app in iPhone to give capability for flagging email messages? I'm sure this would require jailbreaking which I'm ok with. If it is not possible, what about creating a stand alone app that simply views emails with an option to flag them? Any help would be greatly appreciated.
The only options you have to get this feature are
build your own mail client for the iPhone. There is a really nice (but not up-to-date) mail framework in Objective-c called MailCore and a pretty good C framework called libEtPan
hope that Apple will support it in a new iOS version release
Have a look at the sql database for the MobileMail.app account in this folder:
/User/Library/Mail/IMAP-emailaddress#imapserver/
Edit it directly with SQLite.
The iPhone's mail application doesn't come with an extensions framework, so there's no straightforward way to modify its functionality. If you really have your heart set on this feature, the only option you really have is to jailbreak and write your own mail client. That wouldn't be a simple exercise, especially if you need Microsoft Exchange integration.
The way I would deal with this is to use the Gmail web interface, which lets you star messages. You can set up your exchange account to forward messages to Gmail, and then you'd use Gmail as your primary mail provider.
Both these solutions sound really clumsy, so I think you might have to give up on flagging messages.

Store value of AlertView in iphone

HI,
I'm aware that accessing the SMS incoming isn't possible in the iPhone SDk but could i read the alertView that is active on the iPhone (ie. new SMS alert) and store its values into a variable? Obviously this would require backgrounding but in theory could this work?
As other stated, you cannot see the SMS message or associated alerts.
Not sure about iOS, but on other platforms (e.g. Java ME) it is possible to address an SMS to your application instead of the phone's "inbox" (default handler). This requires that you control the server sending the SMS message.
I imagine even if you could catch an SMS targeted at your iOS app, you wouldn't. Instead use Apple's Push Notification system.
I hesitate to type this in an iOS related question, but the Android OS makes it pretty trivial for an app to see SMS messages. You can even be woken up as they arrive. So, if you just want to test out some idea you have, consider that.
No. You can access your own alerts but not those from other applications.
Unfortunately, you cannot access other application's data, be it in background or not.