We got an interesting mail from Apple today. We are using Apple’s private UIGetScreenImage API which was opened to the public in late 2009. Now, this is obviously not permitted any more and Apple sent us this mail:
Hello ikangai solutions,
We noticed that your app, q·.:CARD with Apple ID 365095972, is using the private UIGetScreenImage API. As you know, the use of private APIs is not permitted in apps. However, in late 2009, Apple announced it would begin to allow iOS apps to use the private UIGetScreenImage() function, but as noted in the announcement https://devforums.apple.com/thread/34908:
“A future release of iPhone OS may provide a public API equivalent of this functionality. At such time, all applications using UIGetScreenImage() will be required to adopt the public API.”
With the availability of the AV Foundation framework in iOS 4, public API equivalents are now available. Applications using UIGetScreenImage() to capture images from the camera should instead use the AV Foundation AVCaptureSession and related classes. Note that use of AVCaptureSession is only supported in iOS4 and above, so make sure your min OS is appropriately set. More details on how to capture video frames from the camera as images using AV Foundation can be found in Technical Q&A 1702:
For applications using UIGetScreenImage() to capture the contents of interface views and layers, the -renderInContext: method of CALayer in the QuartzCore framework should used instead. For more information, see Technical Q&A 1703, “Screen capture in UIKit applications”:
If these APIs do not provide the functionality you want, we recommending filing an enhancement request using the Apple Bug Reporter at to let us know what you need.
As always, should you need code-level technical assistance implementing these APIs, you may with consult Apple Developer Technical Support here: . To ensure that Developer Technical Support can best help you, please be sure to include any crash logs, screenshots, or steps to reproduce any issues you’ve encountered.
We ask that you move to these new APIs in your next update.
If you have any questions about this response, or would like to discuss it further, please feel free to reply to this email. We look forward to reviewing your revised app.
App Review Team
We believe that’s really good practice and keeps developers happy and in the loop. After some “not so nice” encounters with the Apple during the approval process we think that this is exactly what Apple needs to do: Tell the developers what is going on and how they can avoid problems.
your ikangai team