How to access iOS 8 sms history with private frameworks? - ios

I want to read iPhone's sms history in my app. My application is for my own use (Enterprise distribution without jailbreak) and it's not for apple store so there is no limits for using private frameworks. The solutions I have tested so far are:
Reading the sms database -> Didn't work because of sandbox restrictions.
Using ChatKit; I saw CKConversationList class that has a method -(id)conversations which I guess returns an array of CKConversations. Then I can retreive all the history. The problem is CKConversationList.sharedConversationList().conversations() returns nil when I call it in my app. Although it doesn't return nil when I call it in MobileSMS process (I checked it with a tweak and tested it on a jailbroken phone). I saw a method named +(void)initialize and I called it before calling the above method but it still doesn't work.
IMCore private framework could be used maybe but I don't know how.
Thanks in advanced:)

Related

Is there a way to delete call logs and SMS programmatically in iOS?

I want the ability for a user to specify a time-frame and delete all call logs and sms created during that time-frame. Does Apple allow this functionality?
I know this is like accessing the sandbox mode of a private app but just want to confirm if there is a way.
Sadly, There is no way to access the SMS or Call Logs.
Apple encourages third party apps to be developed to carry unique functions. Not the ones that are already available from First party which is apple itself.
Call log and sms are synced to iCloud. So i guess even if you figure out a way to access them using some private api, you might not be able to update them. so apparently they will be resynched.

Is there an iOS API for accessing call logs?

I want to access the call log of the device in my application. I have R&D a lot and found some posts here on Stack Overflow as well (for example, this one), but none of them have clear vision whether we can do this.
When I look into these apps:
Truecaller
quickReminder
...it seems that they managed to get the call history in their app and customized it as well.
Any help/feasibility would be appreciated.
It is not possible to extract the call log programmatically.
First of all Apple officially does not expose any public API to access the call log. That means you can hack all you want to access the call log(Using private API's) but when submitting your app to Apple by sure it will be rejected.
Regarding the app you have mentioned(quickRemainder)
It gets the call log using a cvs file or a text file. It is not taking the info via device calllog db.
Extract from their app description.
You can import text or cvs files containing phone calls into this app.
TrueCaller does not get the call log they just use the app to search the contacts and update the contacts with info they got. They are not reading the callogs
Update: Apple has introduced framework called Callkit. Though you cannot access all the call log, you can have some control over calls like
Identifying incoming calls
Blocking calls
etc
https://developer.apple.com/reference/callkit

Access call history on iOS

In my iOS application I need to get all call history (dialled,recieved,missed) from an iOS device and display as a list in my application.
So many answers are there previously for this question.But I didn't get exact answer for my question.
If anybody worked on this question previously please let me know the answer immediately.
There is no public API for accessing the call history on iOS.
If you wanted to do this in a private app that couldn't be released on the App Store you could look at this link.
There are apps on the store that use the above method, but I wouldn't rely on it passing review. I think the apps that do use it may have slipped through the net.
Apple has introduced framework called Callkit. Though you cannot access all the call log, you can have some control over calls like
Identifying incoming calls
Blocking calls etc
https://developer.apple.com/reference/callkit

How to display view contact on call screen and get info comming call?

I want to display a view on call screen of iPhone and get info comming call but I can't.
I found one link access private API but it saying that apple will not approve this,
But i saw some application on appstore.
Link
https://itunes.apple.com/au/app/contact-notes/id660212820?mt=8
Can any body tell me how to do this?
You may have luck using the APIs in the new CoreTelephony framework Apple added, specifically the CTCall class. This doesn't reveal the caller, but it may be possible to somehow get that.
Using private APIs in any way is not recommended and will break on future releases of the OS, and it's doubtful if you'll even get in the App Store using them. Don't do it.
It's possible that the application you cited as an example uses these private APIs, seeing as it has iOS 5 compatibility. If you really need to use that API, it's possible to obfuscate your use of it with method swizzling, or getting function pointers and calling those, although that can will break when Apple changes their private APIs.
Lastly, you could download and install this app, then dump its symbols to see what APIs it uses.

VoiceService in iOS

I have a question about understanding event changes in iOS when VoiceOver is enabled. I'm developing some app for blind people.
Unfortunately there is not TTS support on iOS, differently from the Mac OS SDK where you can use NSSpeechSynthesizer objects.
I found VoiceService the is not public. So, in conclusione it seems that no API for speak text is available on iOS.
The question is: How can I notify the user about data processing end?
Here is a user case: User push button, the app make some calculus/process, than should return the result. In Mac this is easy you use speakString:#"Result".
But how can I tell VoiceOver to announce the result??
Excuse me if I was too contort :-)
Thank you very much...
You could use this
if (UIAccessibilityIsVoiceOverRunning()) {
UIAccessibilityPostNotification(UIAccessibilityAnnouncementNotification,
#"Result has been computed.");
}
VSSpeechSynthesizer is available for the iOS - but it is a private API and as such will likely be rejected from the app store. However you can still make apps for private consumption.
http://iphone-dev-kitchan.blogspot.co.uk/2010/08/text-to-speech-using.html
I consider it being a Private API a bug as it makes creating accessible apps for the partially sighted for instance, harder. I have filed Bug ID #: 9451650 Bug Title: VSSpeechSynthesizer is Private
You can use FliteTTS which is free and reasonably simple to integrate, and still working in iOS5+.
https://bitbucket.org/sfoster/iphone-tts
You could also record a generic message 'Results available' as a wav file and play that. If your message is static (or is from a short list of possible results) you do not need TTS.
iOS6 VoiceOver / Accessibility was mentioned in the WWDC2012 keynote.
See previous answers here (which I have reiterated above)
How can I add NSSpeechSynthesizer Class Reference?
Is there an iPhone API that allows me to use VoiceOver directly in my app?

Resources