I suspect that app may get pulled soon. There was another app that did a similar thing and that only survived on the AppStore for a week or so.
–
Nick BullJun 19 '12 at 14:09

It has to do with something around it turning on bluetooth with a method that uses bluetooth and probably crashing itself with bluetooth so that ios kills it. (just a guess)
–
ChiquisJun 25 '12 at 8:23

Thank you for both of your inputs. Actually from reviews we can see that application really works and helps turn on or off. With GKPeerPickerController we can ask user to turn on bluetooth but how to turn it off is mystery yet and so questions exists.
–
Janak NirmalJun 25 '12 at 8:51

It's like in location services. The SDK can ask the user if you use a bluetooth function, but bt is disabled. There is no vice-versa method to disable bluetooth (at least no official, maybe on jailbroken ones or private API). … how about this answer? stackoverflow.com/a/5708959/207616
–
user207616Jun 25 '12 at 9:59

@relikd no, its not like in location services. Bluetooth is not a service, rather there are services which build on top of bluetooth. Also the software development kit won't ask the user, i guess you mean the operating system.
–
phix23Jun 25 '12 at 10:27

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.