How can I retrieve an app’s author (or developer or publisher, etc) on a jailbroken iOS 6.x device? In iOS 4.x and 5.x, there was an author member in the SBApplication class. But in iOS 6.1 I now get an NSUnknownKeyException when requesting the author. A quick look at SBApplication.h from a iOS 6 class dump online didn’t show anything promising (except signerIdentity, but that’s something else). Is there any easy way to get this, without digging around in any Info.plist files?
Update: The Info.plist files actually don’t contain this information either. The iTunesMetadata.plist file on the other hand does, but System/Cydia apps don’t have this file.
I haven’t yet jailbroken my iOS 6 device or run
class-dumpon all the iOS 6 frameworks, so I can’t tell you if there’s another private API to do exactly what you used to be able to do.Your suggestion about inspecting the contents of app folders (e.g.
/var/mobile/Applications/*/*.app/) and reading the iTunesMetadata.plist files sounds reasonable. Reading each app’s Info.plist would also give you theCFBundleIdentifier, which would normally at least contain the publisher’s domain name (e.g.com.mycompany.MyAppName).For apps that don’t come from the app store (and don’t have iTunesMetadata.plist), you could try another technique (in addition to reading Info.plist):
Cydia packages are maintained with
dpkgutilities. You can list all installed packages with the commanddpkg -l. You can invoke this command either withpiping the output into a temporary file, or with
NSTask.NSTaskis part of OS X APIs, and is not in the iOS public APIs. But, if you add the NSTask.h header to your project yourself, you can certainly use it as a private API in a non-App Store app, to run a command and capture output programmatically.At the command line, running
dpkg -lwould give you:so, your app could parse that output, to read package names from the second column.
Then, you could use the
apt-cache showcommand to get the information from the package’s DEBIAN/control file, which would have something like this:I know this is more work than just using
authorfromSBApplication, but maybe it’s good enough? Hopefully, some one else will chime in with another answer …