views:

78

answers:

4

As a developer I'd like to make a few little utilities for myself that use private methods, etc. as I have no intent to submit them to the app store. For instance, at the moment I want to work on an inter-device communication tool (including an iPhone MiFi type implementation).

So the question is, does access to that particular functionality require a jailbroken device? Or are things like that just a matter of using unpublished APIs and such?

+4  A: 

It depends on exactly what you need to do. Using unpublished APIs generally doesn't require jailbreaking; you just use the API. On the other hand, if you need root access or want to use privileged ports, then you'll need to jailbreak.

Kristopher Johnson
Yes, that's the question I guess – what kinds of tasks require root access or privileged ports?
Mark McDonald
Well, for example, you can't run an HTTP server on port 80, because you can't bind to any port number below 1024 (but you can run an HTTP server on another port). And you can't access anything in the filesystem other than your app's directory. There are various system calls that require root. I can't give a full list here.
Kristopher Johnson
+1  A: 

There are two issues. The first is about private APIs - if you use them you don't get on the store, simple as that. I have never heard of jailbreaking being required to use them though.

Then there is distribution. As above, you don't get on the store so you need some other way of loading your apps to devices. If you just need them on devices in your posession and you have less than 100, any developer can do that without jailbreaking. But if you want to send apps to someone remotely, then they would need a jailbroken device.

Adam Eberbach
As mentioned, these are tools I have no interest in distributing via the App Store.
Mark McDonald
+1  A: 

Not too sure about a MiFi implementation but from what I understand you could make the app do that without jailbreaking. However, if you don't have an active/paid developer account with Apple then you will need to Jailbreak just to load the app on your phone.

sosborn
A: 

Well, based on some class-dump snooping it looks like the Wi-Fi and tethering methods are called on Springboard.app (except for the socks proxy method mentioned by Kristopher Johnson) which requires using the Mobile Substrate libraries and therefore requires Jailbreaking. Boo.

Mark McDonald