views:

291

answers:

3

For example, how would I write a program like senuti? Are there any libraries I can use for this? It would be ideal if I could do this in Python or .Net, but I'm open to other things as well.

+2  A: 

There is no legal / official way of doing this. Creating a program that would sync with an iPhone would violate the EULA you agree to when using the iPhone and iTunes.

Not only is it illegal, but it's also impossible to do this reliably. Apple could break the method at any time without any notice, and it would pretty much be a cat-and-mouse game.

I only know of one application that something of the kind, and it is the iToner application which synchronizes ringtones.

Kenneth Ballenegger
'Things' for iPhone does this. It's on the App Store, so Apple deemed it legal and appropriate.
ceejayoz
I don't see any lawsuits against Senuti either...
Jason Baker
You don't see any lawsuits against senuti, sure, but if it ever gained in popularity (to the point where non-programmer-alpha-geeks knew about it), I bet you'd see one pretty quick smart then.
Orion Edwards
The OP's question is related to syncing with the iPhone like iTunes does it, via cable and with the aim of extracting information, for example, music. Syncing of an iPhone application to a Mac application is totally unrelated to the original question. (As such, I do not appreciate unwarranted down-votes due to @ceejayoz's mistaking of the original question.)
Kenneth Ballenegger
+1 It's a decent answer and Kenneth makes a point. Whether it's debatable or not.
Kriem
+4  A: 

There are three things you can do:

  1. Add some code to your iPhone application which acts as some kind of server (http, SMB, etc). Then your mac/windows full client application can connect to this server over wifi. This is safe and reliable, but unfortunately the app will have to be running on the iPhone at the time of sync.

  2. Sync to the "cloud". EG: Have your iPhone app save some data to a web server on the internet (you could use amazon EC2, windows Azure, or even just a PHP script running on a cheap hosting account), and then have your windows/mac client also connect to this web server to retrieve the data. This is the most user-friendly, but it requires you to pay for the hosting of the web server, and will be unsuitable for large amounts of data

  3. Violate the EULA and try to reverse engineer the way iTunes communicates with the iPhone. This is how senuti works, but I wouldn't recommend it, as they're constantly having to play catchup with apple changing the format underneath them, and they are probably exposed to some kind of legal action, if apple ever bothered to sue them.

Orion Edwards
+4  A: 

i believe Version 3.0 will resolve this as it allows you to program apps to the USB interface. check out some of the documentation for that in the External Accessory framework.

it would still require the app to be open, so essentially would mean two syncs (or more if you have multiple apps)

Bluephlame
You will have access to hardware accessories via the dock connector, but I don't believe this will help you to communicate with a desktop.
Brad Larson