This discussion is archived
13492 Views 29 Replies Latest reply: Feb 22, 2009 8:05 PM by codz
Currently Being ModeratedJul 15, 2008 5:54 PM (in response to kb1ooo)Marc,
Thanks for your response. I understand how to do it by accessing the private PhotoLibrary class, but Phanfare claims they are doing it without breaking any rules. If they managed to get their app approved by Apple without breaking any rules, I'd like to know how.
If they are breaking rules, it should only be fair that all of us are allowed to do it.
I don't want to get my app banned because I compiled my own headers created by the dev team.
ThanksMacbook, Mac OS X (10.5.3)
Currently Being ModeratedJul 15, 2008 5:58 PM (in response to applephan)Andrew,
If your team didn't build the headers from the dylibs using class dump then they got them from someone who did. Section 3.3.1 of your sdk license agreement reads: "Applications may only use Published APIs in the manner prescribed by Apple and must not use or call any unpublished or private APIs"
Jonathan Zdziarski's O'Reily book documents all the private frameworks but is not support by Apple.
I'm guessing that Apple didn't officially release the PhotoLibrary framework, partly because they'd rather support a simpler interface, and partly because they don't want people to build apps that can compete with theirs.
Currently Being ModeratedJul 15, 2008 6:16 PM (in response to eventhough)eventhough,
Phanfare got pulled from the app store, obviously because Apple realized that the app uses the private frameworks and it somehow slipped under their radar. There was nothing legit about how Phanfare used the private frameworks. They did the same thing that everyone else has done to use the private APIs. The headers didn't come from Apple--as Andrew admitted--and they didn't fall out of the sky onto their computers without them knowing.
Not to mention the fact that if the CEO is resorting to posting in this forum, they can't get Apple to answer any of their calls. It doesn't sound to me like they are getting away with breaking the rules.
Currently Being ModeratedJul 15, 2008 6:55 PM (in response to kb1ooo)Apple has gotten back to us and confirmed the issue was that we used what they consider to be a private framework. We did get it from the O'Reilly book. We are going to resubmit our app with the standard camera framework.
The poster above brings up a valid point, which we had not considered, that it is important that apps are limited to a camera framework that is guaranteed to make a shutter sound, show a preview, and animate the shutter. Otherwise, there are serious security implications as the app could take a photo without your knowing, provided it was running. One can imagine a free game secretly taking photos while you play it.
There is no doubt that the framework we used is more than 5x faster than the one we now need to use. So hopefully, Apple will continue to improve the performance of the public framework. Seems like there is no reason it could not be faster. The built-in camera proves that the shot to shot time on the phone is quite good.
Anyway, we had no bad intentions (we really do love apple). We are just trying to provide a great user experience.
AndrewMacbook Pro, Mac OS X (10.5.4)
Currently Being ModeratedJul 16, 2008 5:35 AM (in response to applephan)
Otherwise, there are serious security implications as the app could take a photo without your
knowing, provided it was running. One can imagine a free game secretly taking photos while you
I agree. However, I don't know why the public interface needs to be 5x slower, and uglier.
Also, what's worrisome about the security issue is that they obviously have no way to know if an app is using the private API directly; your app slipped under the radar even though it was visible from the user interface that you were using a private framework. Would they have caught it if you indeed were snapping pics unbeknownst to the user...
Currently Being ModeratedJul 16, 2008 8:47 AM (in response to kb1ooo)kb1ooo,
Sorry for my mistake. I was thinking that the UIImagePickerController just let you select a photo from the library but not take a new one using the camera (I'm completly newbie on iPhone dev). Thus, when I try the SnapMyLife app, I think they used the private framework to get access to the camera and let you snap new pics. And I don't experienced myself any crash when I'm using it.
Since the removal of the Phanfare app from the AppStore, may we agree that there is really no way to use PrivateFrameworks with the actual Apple agreement policy ?
In your opinion a "special" agreement deal can be possible ?
Rgdsmbp, Mac OS X (10.5.4)
Currently Being ModeratedJul 18, 2008 9:11 PM (in response to kb1ooo)The Phanfare app is back in the Apple app store. The camera is significantly slower now, but hopefully Apple will improve that over time.
AndrewMacbook Pro, Windows Vista
Currently Being ModeratedSep 8, 2008 10:04 PM (in response to applephan)Andrew,
Can you discuss at all how you were able to add things like the progress bar overlay to the standard imagepicker view controller?Windows XP Pro
Currently Being ModeratedSep 10, 2008 6:16 AM (in response to hack4)I don't know, can we openly discuss things, or is the NDA still in effect?
But let's say you were coding for the Mac, not the iPhone, and you had an object that inherited from a view controller. You could access its view and add subviews to it, right?
Currently Being ModeratedNov 11, 2008 5:28 AM (in response to applephan)The shutter sound can't be a significant concern, as it doesn't play when the phone is in silent mode.Macbook, Mac OS X (10.5.5), Macbook
Currently Being ModeratedNov 11, 2008 5:30 AM (in response to applephan)The shutter sound can't be a significant concern, as it doesn't play when the phone is in silent mode.Macbook, Mac OS X (10.5.5), Macbook
Currently Being ModeratedFeb 3, 2009 8:52 AM (in response to eventhough)Has anyone here seen QuadCamera (in the app store)?
It is able to take several pictures in rapid succession. I wonder how they are able to do that. It looks very similar to our original app that used the private CameraController class.
Currently Being ModeratedFeb 3, 2009 3:04 PM (in response to speth)Assuming they're not using private APIs (which I would guess - Apple has been getting much stricter about checking and veto'ing such applications), I'd bet they're just grabbing the preview frame and asking it to render itself to a bitmap context. You can poke around to find the preview frame with the info at:
I was playing around with a similar application to make "mini-movies" and had a demo done, but decided I was just tempting fate with the review staff. And likely to be broken in a future update, like I expect 90% of the camera applications will be, as they are also poking around internal details of the view hierarchy.MacbookPro, Mac OS X (10.5.4)
Currently Being ModeratedFeb 12, 2009 8:04 AM (in response to larsberg)Is there any chance to make a closer look at any demo of what airsource published on his blog. Seems that is only a single way to use public APIs from Apple for any undocumented purposes. In particular I'm interested in overlay the camera view with some lables/text info or whatever abstract objects.
Do you think it is possible to implement with no violation of Apple license agreement?Mac OS X (10.5.5)
Currently Being ModeratedFeb 22, 2009 8:05 PM (in response to larsberg)I have tried rendering the preview frame into a context and attempting to extract the image, however like many people have struck the problem with the "black screen" output. @larsberg - How did you manage to get around this?