jlaws / JLPermissions

An iOS pre-permissions utility that lets developers ask users on their own dialog for calendar, contacts, location, photos, reminders, twitter, push notifications and more, before making the system-based permission request.
MIT License
439 stars 53 forks source link

App Store rejection - HealthKit #13

Closed cannyboy closed 9 years ago

cannyboy commented 9 years ago

We just got an App Store rejection:

We found that your app uses public APIs in a manner not prescribed by Apple, which is not in compliance with the iOS Developer Program License Agreement, as required by the App Store Review Guidelines.

In particular, section 3.3.1 of the iOS Developer Program License Agreement specifies:

"Applications may only use Documented APIs in the manner prescribed by Apple and must not use or call any private APIs"

Specifically, we found your app uses a HealthKit API (HKHealthStore) with no HealthKit features or functionality.

We actually don't use HealthKit - it's not imported as a framework or in our app's 'Capabilities'. The only mention of HealthKit is in JLPermissions. I suspect the problem is similar to this issue from another project: https://github.com/iosphere/ISHPermissionKit/issues/15 - i.e., merely the mention of HealthKit is enough to upset Apple's reviewers.

For now, I'm going to remove JLPermissions from my Podfile, and use a custom version which does not refer to HealthKit (for safety, I may also remove references to Calendar, Reminders, Microphone, and Locations)

jlaws commented 9 years ago

Interesting... might have to add compile time flag/macro's so that specific parts of the API can be ignored.

sachinkesiraju commented 9 years ago

So sorry to hear about the App Store rejection. It appears Apple is rejecting apps that call Health Kit methods in their code regardless of whether they're actually using it. I suggest we create two separate branches in the project, one without Health for the apps that don't need it. I can submit a PR with the health-free branch if we decide to go this route.

jlaws commented 9 years ago

I was actually thinking of splitting it further into sub components where each permission is a separate pod. You can either bring in the whole thing with 'JLPermissions' or do 'JLPermissions/Notifications' and 'JLPermissions/Location' to isolate it. It will require breaking up the code into numerous .h and .m files, but shouldn't be too bad. For now if you need an immediate release, just fork the code and delete the healthkit stuff. I will try to get the split done this weekend.

On Thu, Oct 30, 2014 at 8:32 AM, Sachin Kesiraju notifications@github.com wrote:

So sorry to hear about the App Store rejection. It appears Apple is rejecting apps that call Health Kit methods in their code regardless of whether they're actually using it. I suggest we create two separate branches in the project, one without Health for the apps that don't need it. I can submit a PR with the health-free branch if we decide to go this route.

— Reply to this email directly or view it on GitHub https://github.com/jlaws/JLPermissions/issues/13#issuecomment-61084051.

sachinkesiraju commented 9 years ago

That does seem like a viable solution. For now, I'll remove the Health Kit part so it won't affect anymore users.

jlaws commented 9 years ago

@cannyboy @sachinkesiraju The latest version 2.0.1 has been split into sub pods for each permission. You can now pick/choose what you want to include. It has breaking API changes since you can no longer use [JLPermissions sharedInstance] but instead need to use something like [JLContactsPermission sharedInstance]. Along the way I fixed a few bugs.

I am using the latest in my project and it is working fine, but let me know if either of you run into any issues.

sachinkesiraju commented 9 years ago

That's great! I'll be sure to keep you updated!

cannyboy commented 9 years ago

cool, will check it out

KanybekMomukeyev commented 9 years ago

the same here, my app rejected for this issue, but i can't find where my app used health kit, i totally removing JLPermissions from pods, and added only to project! The version was 2.1.2

jlaws commented 9 years ago

That's why you need to use the individual pods it the blanket library. See the latest read me. If you can't figure it out it is probably best to remove the library entirely for the users sake. On Mon, Jan 26, 2015 at 09:04 Kanybek notifications@github.com wrote:

the same here, my app rejected for this issue, but i can't find where my app used health kit, i totally removing JLPermissions from Xcode!

— Reply to this email directly or view it on GitHub https://github.com/jlaws/JLPermissions/issues/13#issuecomment-71473773.

KanybekMomukeyev commented 9 years ago

Thanks, next time will carefully read read me file ((