iHasApp framework rejected by Apple? - ios

My app has been approved before with iHasApp. A new update has been rejected by Apple with the following reason:
"Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs"
We found that this app scan all known URL schemes using a service called iHasApp.
How to fix that?

Apple recently began rejecting apps that use canOpenURL: simply to determine which apps are installed on a user's device. You'll have to remove the library in question.

Related

iOS app store submission rejected for "App-Prefs:root=WIFI" [duplicate]

In my app I'm using [NSURL URLWithString:#"App-Prefs:root=Privacy&path=LOCATION"] to open settings screen. Will it be rejected by apple as according to some sources this is considered a private API?
Yes. The only legal way to open Settings is to use UIApplicationOpenSettingsURLString.
My app just got rejected because of this, so yes, it is considered as private API :)
Here's the rejection notice from Apple:
Your app uses the "prefs:root=" non-public URL scheme, which is a private entity. The use of non-public APIs is not permitted on the App Store because it can lead to a poor user experience should these APIs change.
To resolve this issue, if you are navigating to Settings > Privacy. "Just remove that code" and put a simple alert showing Enable location services.
Because from iOS 10 apple consider it is as private entity. So you can not go through it.
There’s no supported way to open Settings to the Wi-Fi/Language/Location ‘page’. The fact that this worked in iOS 9 is a bug that’s been fixed in iOS 10.
For more info please refer https://forums.developer.apple.com/message/186656#186656

IOS application got rejected for App Store Review Guideline 2.5.1

 We have just got a rejection on an AppStore application commiting.
 Here is the message that Apple gave:
 Apple said we use NEVPNManager in an unapproved manner. but I am sure that
our code do not use any function of NEVPNManager. Then, I thought that must
be some 3rd party SDK use NEVPNManager, However, after checking our project
setting, I am sure we don't link "NetworkExtension.framework" and don't open
"NetExtension" capabitity, so there is no way to use NEVPNManager.
 I am very confused about this, so I want to get some advice about this problem.
appstore-guidelines-software-requirements
networkextension-nevpnmanager

Open Settings Programmatically iOS 10

I am able to open Settings > iCloud using following method,
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:#"App-Prefs:root=CASTLE"]];
Question: Is this legal? Will Apple reject the application? Because I cannot find any legitimate source for this method to open iCloud Settings.
Apple has stopped allowing redirection to the public schema like Prefs so from now on the application will not be able to redirect to the settings other than the self-settings.
See the link for more detail
It is not supported officially and you can follow along this SO Thread
and this answer in particular. Hope it clear out the issue. The settings would open but as it is not officially supported there may a rejection due to this issue.
Based on experience, Apple will decline reviewing your app in case you use ":root=" non-public url Scheme
Apple Review Team Message:
Your app uses the "prefs:root=" non-public URL scheme, which is a private entity. The use of non-public APIs is not permitted on the App Store because it can lead to a poor user experience should these APIs change.
Continuing to use or conceal non-public APIs in future submissions of this app may result in the termination of your Apple Developer account, as well as removal of all associated apps from the App Store.

Can i use "com.apple.springboard.lockcomplete" notification?

I am trying to find device lock state as UIApplicationState gives the wrong state when Lock the device, it gives UIApplicationStateActive for few second.
I found one solution using Darwin notifications for notification "com.apple.springboard.lockcomplete".
Is it the correct way to get Lock state? Does Apple allow this?
No Apple won't allow to use "com.apple.springboard.lockcomplete".My application get rejected due to this.
The answer is... it depends.
Using non-public API is not permitted, and these Darwin notifications are not publicly documented. So the official answer is no, you are not allowed to use this notification in a production code. Otherwise, you risk getting this unpleasant email from Apple:
Your app uses or references the following non-public APIs:
com.apple.springboard.lockcomplete
On the other hand, I've used that very notification for 4 years till I got a rejection from the App Store for one of my apps. Another app of mine still uses it without problems. So if you really need it and you think it's worth the risk, you may give it a try.
Based on our experience, your app WILL be rejected for use of com.apple.springboard.lockcomplete with the following notification:
Guideline 2.5.1 - Performance - Software Requirements
Your app uses or references the following non-public APIs:
com.apple.springboard.lockcomplete
The use of non-public APIs is not permitted on the App Store because
it can lead to a poor user experience should these APIs change.
Continuing to use or conceal non-public APIs in future submissions of
this app may result in the termination of your Apple Developer
account, as well as removal of all associated apps from the App Store.
Next Steps
If you are using third-party libraries, please update to the most
recent version of those libraries. If you do not have access to the
libraries' source, you may be able to search the compiled binary using
the "strings" or "otool" command line tools. The "strings" tool can
output a list of the methods that the library calls and "otool -ov"
will output the Objective-C class structures and their defined
methods. These tools can help you narrow down where the problematic
code resides. You could also use the "nm" tool to verify if any
third-party libraries are calling these APIs.
Resources
If there are no alternatives for providing the functionality your app
requires, you can file an enhancement request.
Apple won't allow this.Here is there comments for this
"The use of non-public APIs is not permitted on the App Store because it can lead to a poor user experience should these APIs change.
Continuing to use or conceal non-public APIs in future submissions of this app may result in the termination of your Apple Developer account, as well as removal of all associated apps from the App Store."

mobile application was rejected in app store due to health kit framework

I made iOS app using Xamarin and my app is getting rejected for the following reason:
Apps using the HealthKit framework must indicate integration with the
Health app in their marketing text and must clearly identify the
HealthKit functionality in the app's user interface
But I don't use HealthKit anywhere and didn't enable it. I can't find any reference of it in the code.
Has anyone had this problem before?
Thank you
Be sure to check on your Apple Developer Center it isn't activated it on your Application Certificates.
I've resolved it by adding in project Properties, iOS Build:
Additional Options => Additional mtouch arguments: --linkskip=HealthKit
Oddly enough a week ago had my Xamarin app rejected for the same reason.
Although on the resolution center they asked me if the App uses the HealthKit Framework and i replied that the app does not use it.
Was approved the next day

Resources