How do you retrieve the call list and voicemail messages on the iPhone? - iphone

I'm developing an iPhone application that replicates the functionality of the built-in phone
application, but adds a few features on top. This is for ad hoc distribution only.
In particular, is there a way to programmatically retrieve the last calls received by the phone? Also, how can an application access the list of voicemail messages?

You can check out the private CoreTelephony APIs, esp CTCallCenter.h. You can dump the private headers with this tool: https://rubygems.org/gems/private-dumper
And check out other private headers here: https://github.com/kennytm/iphone-private-frameworks/
You might also find some more info here: http://iphonedevwiki.net/index.php/Main_Page
This app demonstrates how to access the call-log even without private APIs and jailbreaking: https://github.com/nst/spyphone
I'm not sure though, if it is possible to completely re-build the Phone.app with private APIs without jailbreaking.
Johannes

Related

Show available wifi in UITableView similar to iHome Connect

I'd like to show a list of available wifi in my next app, similar to iHome Connect. http://itunes.apple.com/us/app/ihome-connect-setup-app-for/id450241802?mt=8
I've done some googling and have found out that the only way to do this is to use a private API (illegal), but there are apps in the app store that are doing this?
Has anyone had the need to do this? If so, what private API did you use and was your app rejected?
It is possible using private API and your app will likely be rejected.
Stumbler helper library: http://code.google.com/p/iphone-wireless/

Messaging service within my app

I need to implement a message service into my app that works exactly like this:
users register with a nickname within the app
they can add contacts (just nicknames) and send them a message by just specifying their nickname
they can send a message whenever they want, and the message is stored on a server until when the receiver connects to internet.
when a message is received, a push notification is triggered.
So, the messages work pretty much like emails, however instead of using email addresses, we only use usernames. I'm also going to build my own back-end for it.
Which APIs should I use or which 3rd party framework can I use ?
And any tip ?
N.B. I need to make it work with iOS 3.0 as well.
and in the future I will develop an Android app, so the nicknames should be unique and I should be able to send messages from iPhone to Android devices within the same app.
thanks
I've successfully used the Three20 library and would recommend giving it a try. It's an open source spin-off originated by the author of the Facebook app. It features a bunch of additional GUI components that might be useful to your project, like a message composer that resembles the one used by Apple's email app.
Also, Three20 features a nice framework for handling navigation within your app. Currently, the biggest drawback seems to be that certain features don't play well with the iPad API.
The answer seems to be Push Notifications

Can we fetch the call details of an iPhone?

Can we fetch the call details like dialed numbers, missed calls of an iPhone?
UPDATE
Can we do it in jail broken phones for CYDIA store?
Yes, you can do it for jailbroken device.
The call history is stored in call_history.db.
No - Apple simply don't provide an API to do this.
No, no information about phone calls is available, nor SMS messages.
iOS apps are sandboxed to prevent developers from doing nasty things like sending that data back to their servers. It limits some potentially cool apps, but it also protects privacy.
Yes,You can't do with non-Jail Broken iphones. If you want to do that,you must have a jail broken iphone. API is not providing any private API to access their APplication SANDBOx.Apple will never provide due to security.

Enterprise distribution Program for iPhone

I would like to implement a application which backs up all the internal data like SMS, MMS, videos, audios, documents, call history stored in iPhone. But this seems to be not possible with API docs that the apple has released so far ... I have gone through the PDF of Enterprise distribution program and some of the links related to Enterprise Distribution Program, specifies about the Remote wipe and accessing of internal data like Calendar, SMS, MMS etc .... But they didn't mention how to do it programmatically.
Does Apple provide any special privileges like extra API support to access the internal data in their Enterprise Distribution Program?.
Is there any difference between Enterprise Distribution Program and Standard Distribution Program in the development point of view?
And since in-house distribution does not require Apple approval, shall we use some other method which are not officially mentioned in apple docs, to access the internal stored data ..
If so can anyone point out the way to do it?
Any help would be greatly appreciated
awaiting for your response
Best regards,
Mohammed Sadiq ....
You will not get any "bonus api", as there is no api, there's just public one, and private calls. Still, as you will distribute the app on in-house basis, you can use sqlite to get access to sms, calendar, phonebook data. I can't say for sure about other fields, as I don't know the exact permissions of the latest sandbox profile. You definitely can get access to everything on jailbroken device, but that might be not the best solution for you.
Standard and Enterprise are different in that Apple doesn't regulate the apps, as you said, I don't think there are any differences in development (except for what The company needs like internal server access) but there is the difference in distribution. You can't officially get that data programmatically but using undocumented calls sounds like it could work.

iPhone: Need suggestion for SYNC contact

i want to create a application which sync my iPhone contacts to my server and vice-versa.
i read a article on google Get Google Sync on your phone . i want to this type of feature which directly update the contact without user interaction (however one time setting is desired).
any body have idea how the google sync work .
Please advice me that how can i achieve this task. any suggestion and link is greatly appreciated
I think it's important to separate the two overlapping approaches in your question.
Firstly, Google Sync is essentially a way to use Microsoft Exchange protocols and to setup a Mail / Contact / Calendar profile on an iPhone. The iPhone OS supports this feature, not an iPhone App in the App Store. Google Sync leverages this fundamental capability of the phone by exposing the data (mail, contacts, calendars) via these known protocols. If you want to expose data in this way to your users, setup a Microsoft Exchange server and ask questions on serverfault.
Secondly, there are iPhone apps. iPhone apps sold in the app store are not currently allowed to run in the background. This means you can't emulate functionality like iTunes or Mail where your music plays while you are browsing the web, or mail checking is done while you are playing a game of Mini Squadron. If you want this backgrounding capability, file a bug/enhancement with Apple.. However, you can interact with iPhone contacts (Address Book) via the API.. You can also of course "re-invent the wheel" and expose the data however you like via the internet, and consume that data from a custom iPhone App with the one caveat that users would need to actively launch your application to get to this data and it would not be integrated with the built-in iPhone Calendar, Address Book or Mail applications. Some good examples of that are some of the music community apps that have messaging systems built into them. Presumably that is all being done with web services.
EDIT: It is also worth mentioning that should you go the "iPhone App" route, you should at least consider if push notifications are right for you, and if so how you will handle it.
Have you seen the API-Docs?
http://developer.apple.com/iphone/library/documentation/ContactData/Conceptual/AddressBookProgrammingGuideforiPhone/100-Introduction/Introduction.html
Next there is an application I use called Funambol - it is a sync4j Server/Client. They have an open source application to sync contacts on the iPhone. Source is somewhere in their repository, informations here: http://forge.ow2.org/scm/?group_id=96
As slf told you your application must run in foreground. This may limit you.
Good luck & best regards,
Florian
The 3.0 SDK will allow your application to read contact data on the phone.
Web services will allow you to publish that data to your server, and receive updates.
You may also want to use coredata to store a hash of all contact data so you can tell what is new / updated and just send that data to your server.