This question already has answers here:
Closed 10 years ago.
Possible Duplicate:
Does apple view the actual source code when approving apps?
So I'm gearing up for my first submission to the App Store, but before I submit I have a quick question or two.
1) First off - when submitting, will Apple be looking through code and verifying its correctness or just testing the App itself?
2) If Apple is indeed looking closely at the code, does whether or not you follow Apple's suggested paradigms influence whether or not the App is accepted? For example; In my program I frequently use [self dismissViewControllerAnimated::] rather than the Apple specified way of using delegation to have the presenting VC dismiss its presented VC's.
Just like to get feedback from people who maybe have already gone through the process and could give feedback on the experience. Thanks for your time!
Apple will not look at your code. All you submit is your binary application.
You are not going to submit the source code so be patient, none will stole your cool patterns :)
However, there's usually a good reason to recommend one or another approach, you'd better to think about following Apple recommendation not to appear among a lot of deprecated, slow or even disabled functionality.
Another point is that while they are not looking through your code directly, they are still kinda able to catch the used methods symbols which allows them to detect the private API usage and sometimes the app gets rejected just for your method being the match to the private API method from a signature, that's not happen often, but you better be accurate.
Another free recommendation for you - store the .dsym file somewhere, it will help you to symbolicate the crashes which could appear later right from the report file (you'll also need the app binary for that).
Related
I agree that this question is duplicate. Please bear with me. I was also among you all to believe that is not possible to programatically turn on/off bluetooth.
But using GKPeerPickerController if bluetooth is not on user will be prompted to turn it on. Fair enough to turn on the bluetooth.
I was betting with my belief that we can not turn off the bluetooth programatically as there is no way. But this application does that so I didn't had choice to refuse.
I just want to confirm whether it is possible or not and if yes how to turn off the bluetooth using GKPeerPickerController or any other public api way ?
I know this isn't the answer you want, but no, you can't turn off bluetooth programmatically with Apple-approved APIs.
There have been a number of apps approved on the App Store this year that have done this.
But, they keep getting removed by Apple shortly after release, once they (Apple) realize what's going on. They're certainly using private APIs.
Either developers are foolish enough to think that they won't be noticed, or they are simply hoping to pull in a couple weeks of revenue before Apple pulls the app, which could be enough to pay back their cost, with some profit.
The issue is that there's a number of ways to check whether an app is using private APIs. If developers are using objective-C frameworks in the normal way, that's an easy check. In fact, Xcode does some of this automatically when you use it to upload app binaries to iTunes Connect. But, it's not a complete check. Once at Apple, the reviewers perform another check, which I've been able to deduce is more sophisticated than what Xcode does.
However, that check is still not perfect, and I'm of the opinion that it's not necessarily a matter of a lazy reviewer just forgetting to perform the check. Objective-C gives you some techniques for obfuscating method calls. Depending on how you use these techniques, you might get past the reviewers . In my experience, I have every reason (wink, wink) to believe that Apple is not running every app on a fully instrumented version of iOS, which could log all function calls, and defeat even the best attempt to hide private API usage via obfuscation techniques.
So, I can pretty much guarantee you that this explains the apps you've found on the App Store that turn off Bluetooth. Public GameKit APIs let you turn Bluetooth on, but not off.
Disclaimer: I've never worked for Apple, and no Apple insiders gave me information. But, I have gotten private APIs through the review process.
Please try below code and I think it will also work for you.
Class BluetoothManagerClass = objc_getClass( "BluetoothManager" );
BluetoothManager *btCont; = [BluetoothManagerClass sharedInstance];
[btCont setPowered:NO];
You need to add BluetoothManager class/framework in your project.
Thanks
I wrote a nice app that would simplify life for many - somehow similar to these phone card apps. However, there is one private API function which I have to use to send a hash '#" in a phone call because the receiving hardware requires this. (which is understandably not allowed because of POSSIBLE abuse). But
My app does not missuse or in any way
cause damage.
Certainly the reviewers at apple don't have time to review for each single use of such functions - so therefore my app got rejected by the automated API check (so I assume). Yes I know that these issues are documented well by Apple, but I was hoping they would really "check" abuse possibilities of apps and then reject - or accept if the app is not harmfull in any way. (as happened in a similar case in appstore)
Anyway, if I don't find another solution this app will not be accepted.
What to do now?
Does it make sense to write an explanation comment when submitting to review?
Is there an alternative to send the signal of a # during a call somehow?
Is there an alternative way to sell/distribute apps? Will this affect my future apps to be submitted? What is your experience?
ps certainly, the Android version is available soon...
Thanks!
An option would be to submit it as a bug and request they "support send a hash '#" in a phone call".
You can always try the Cydia store, and probably there are other ways in the jailbreak community.
I just added a done button on my number keyboard and read that using the keyboard class directly is illegal but some people said that their app was successfully submitted to the app store? Does anyone know if it is legal or not?I have been googling around for 1hr and I keep getting yes and nos.. anyone knows for certain if this will cause the app to get rejected?
Thanks
It is not absolutely sure that doing something like adding a DONE button to a numeric keyboard is legal or not. It all depends on Apple, some app is rejected but many apps is already approved by Apple. It is hard to say.
It also depends on your technique as well. Usually, I see that people will work into the UIKeboard view hierarchy to add the DONE button and for this case, the usual approval problems is like I described above, some fail, some succeed
I want to add something (eg. the related city name) into the UI view when I make a phone call or received a phone call on iPhone. However, I can't figure out a good solution for this idea. Could anyone who has experience on this subject gives me some suggestions?
My currently solution is, try to write an extension based on mobile substrate and hook functions in SpringBoard. So many difficulties existed and following are my current big questions,
How to develop such a extension? I downloaded some examples from google, unfortunately they cann't even be compiled on my toolchain.
I can't figure out which ui view for the related screen I should use to insert my own component. I get header files of SpringBoard via class-dump, but no docs and no comments about its usage. Could someone share his discoveries with me?
How to build a trusted cross-compiling enviroment on leopard? All kinds of confusing errors pop up when I try to build others's codes. I've tried Zdziarski's instrunctions in his book, it works with iPhone OS 1 and can compile common projects with open sdk, but how should I do to make it works when comipiling ms plugins?
Also, is there any other solution to translate my ideas to codes? I start iPhone development one month ago, no experience with cocoa/Obj-C before. So your suggestions are very appriciated.
~ Link Bian (卞林扣)
Email/MSN: linkou.bian#gmail.com
I think you are asking for too much. It wont be possible to manipulate incoming/outgoing call screens. Ethically, that is.
Zdziarski is a hacker and from his book, you will get many undocumented API calls which will make Apple reject your app. Same goes for Erica Sadun's iPhone Developer's Cookbook.
Something that really helped me get dylibs compiled was using SkylarEC's Xcode template and just appended an extension of '.dylib' onto the binary and sshing it into /Library/MobileSubstrate/DynamicLibraries. I suggest hooking SBCallAlert or SBCallAlertDisplay to get the id of the caller which is usually just an NSString. Play around with it a little bit, those are all the visualizing methods of a call. If you put in an nslog in your custom override method, you can view the output in iPhoneConfgurationUtilitie (windows) or the console in Xcode. From there you would most likley need an index of area codes to comare the callers to. I don't believe you can add subviews to the call, on I intercept and reissue the strings for the views already there.
But you know, apple doesn't like this :P
lemme know if this helps
Would they just take the app off from the store / not let it pass in, or would the cancel the whole contract with the developer?
In theory, it wouldn't even be accepted in the first place, even if they're wrong when they think you do use them:
http://landonf.bikemonkey.org/code/iphone/Apple_Lesson_Huh.20081213.html
But there seems (or seemed) to be some exceptions:
http://landonf.bikemonkey.org/code/iphone/iPhone_Private_API.20081206.html
In practice, Apple does not really scan for this but if they detect it they'll simply not accept the app and ask you change it.
Every once in a great while Apple will pull an app they find breaks some of the rules, but that's pretty rare.
The main risk is your app will break in an update.