I want to ask a questions about the canAuthenticateAgainstProtectionSpace and ddidReceiveAuthenticationChallenge. Are they private API iPhone application?
If yes, how can I modify it? And after I modify the private API of iPhone, will the iPhone reject my application?
If no, where should I put the modified code? I used to put the code within a .m file, but it did not work.
Thank you.
They are both documented in Apples documentation here So they shouldn't be private. Usually finding private API's takes some investigative work and yes Apple will almost always reject an App if it uses a private API (There has been one case I have heard of that they let it through) but you shouldn't run into troubles with those ones.
In addition to looking in the documentation for a method (if it's there it isn't private), you can also use App Scanner to search specifically for private API method signatures. It also allows you to scan your .app before submitting it to the review team.
Related
Apparently, there are already some applications implementing auto-answer on iphone:
http://www.iclarified.com/entry/index.php?enid=20776
How is this done? How can I automatically answer calls programmatically? (private APIs ok)
First, one note on jailbroken vs private API:
Private API are just undocumented API, which can be executed on jailed or jailbroken devices. However, Apple will reject (won't accept them to AppStore) apps with private API usage. So, you can use them on jailed device, but you will have problem with distribution of this app.
My guess is that AutoAnswer is jailbreak tweak. They can be executed only on jailbroken phones.
I think the easiest way to learn how AutoAnswer is implemented would be to disassemble it and check which API it hooks. The harder way would be to disassemble Phone application (may be it's part of Springboard, I don't remember) and find which API you need to hook to provide the same functionality.
Is it possible to incorporate one iPhone app into another in order to redistribute it?
We're going to publish few apps owned by other developers and need to create some pre-rolls with our branding and some other similar features. The original developer could build the app for us, but won't provide us with a source code.
Sorry if the question sounds stupid, we haven't very big experience in the field, just need to clarify some things
Thank you!
No you can't. You are only allowed to execute your own app, you can't embed an other app in your bundle.
It is not possible to embed an app into another app, or better, you could do that, but Apple would reject it and anyway you would not be able to launch it on a non jailbroken device.
More to the point of your specific case, if you have only the binaries you could try and modify the resource files (i.e., .nib and .strings files) to modify the UI to some extent. Of course, you would then need to regenerate the signature for the app (and hope that everything works ok).
It's just a thought, but maybe you could include the other developers apps as static libraries. The advantages would be that the other devs wouldn't have to surrender their sources, you wouldn't face any code signing and bundle id related issues and including static libraries is perfectly safe.
The only disadvantage would be that the devs would still need to deliver the content seperately and they need to learn how to build a static library. An entry point for each app / each library to call it would also be needed, maybe even a small interface to allow the container app to learn about the individual apps status, to cancel them etc.
As I said, this is just an idea, there may be issues with that approach that I do fail to see right now. But maybe others can comment on this...
You might want to check out this link to learn a bit about building static objective c libraries.
Check apples Custom URL scheme, it might find useful for you. Just help=> http://iosdevelopertips.com/cocoa/launching-your-own-application-via-a-custom-url-scheme.html
I'm using NSURLRequest in my current app which is in the App Store. I need to change to Https in the next version.
Do I need to declare "Encryption" in the Apple "upload binary" section when submitting the application?
I saw 2 related threads, but I'm not convinced with the answers there. If someone with real experience or knowledge could answer this one, it could be great..
Thanks.
This only concerns encryption within the application. If you're not doing any of that then you're OK.
https://itunesconnect.apple.com/docs/iTunesConnect_DeveloperGuide.pdf
No, they only want to know if you are implementing an encryption algorithm inside the app itself because there are various laws involved in what can be exported to where with regard to types of encryption.
I'd recommend asking Apple, but I suspect the answer is no.
Refer to Apple's Export Compliance FAQ (needs developer access).
Using any of the iPhone's private APIs, is it possible to access the call log on the iPhone without jailbreaking it? Is the same somehow possible for opened URLs in Safari and launched apps (which app was launched when and active for what amount of time)?
I know I can't submit it to the AppStore and I don't want to either.
Based on Erica Sadun's DumpFrameworks Perl script I have already created a ruby gem that dumps the header files of iOS's private framework classes. Maybe that's helpful in finding the answer: http://rubygems.org/gems/private-dumper
I'm primarily interested in how to do this (or even just part of this) without jailbreaking but I'm also interested in a jailbreak-based solution.
Thanks!
Johannes
I haven't played with this recently so I'm not sure that these "hacks" will still work but Nicolas Seriot had come out last year with a series of examples that show how much access a developer can have in an iPhone app. He released a project called "SpyPhone" that shows these examples, one of which, I believe, does what you're asking for.
Here are slides from a talk he did on it: http://www.scribd.com/doc/23739469/iPhone-Privacy-from-Nicolas-Seriot
Hope this helps!
Recently I've heard that Apple is using tools to search for references to undocumented APIs and are rejecting iPhone apps from the App Store because of it.
The popular Three20 framework is causing people to get rejected.
I also just saw that the KissXML library has also caused rejection.
I'm looking for an Objective C DOM-based XML parser and am now considering TouchXML.
Can anyone confirm that TouchXML does not reference any undocumented APIs? I don't want to risk an app rejection based on this.
I can confirm that I've included no private frameworks in several projects that use TouchXML that have all become apps in the App Store. I would ask the question at the google code site to make sure, but John Wight who wrote the library writes very clean and tight code. It would surprise me if he used any undocumented APIs.
Also, I wouldn't worry about it too much. Build your app and submit it and if it gets rejected, fix it then. Apple will even tell you what API you're referencing that you're not supposed to if that is the case. If you have to go through their bureaucracy anyhow, you might as well benefit from it by making them tell you what's wrong. Also, keep in mind that probably everyone gets rejected at least once--especially if it's your first app. ;-)
Tidy does. My app was just rejected from the app store on that basis.
"3.3.1 Applications may only use Documented APIs in the manner prescribed
by Apple and must not use or call any private APIs."
The following non-public APIs are included in your application:
tidyBufAlloc
tidyBufFree
tidyBufInit
tidyCleanAndRepair
tidyCreate
tidyOptSetBool
tidyParseBuffer
tidyParseString
tidyRelease
tidySaveBuffer
tidySaveString
tidySetCharEncoding
tidySetErrorBuffer
tidySetOutCharEncoding"
I know that there is at least one app on appstore which uses TouchXML. But during development process I found some bugs there, so I try to find some alternative now.
Consider using libxml2. It has a steeper learning curve, but the speed and flexibility are worth it.
I've just had an app rejected precisely because it uses touchXML