What is ISHPermissionKit?

ISHPermissionKit provides a polite and unified way of asking for permission on iOS. It also provides UI to explain the permission requirements before presenting the system permission dialog to the user. This allows the developer to postpone the system dialog. The framework provides no actual chrome, leaving the developer and designer in charge of creating the views.

While you can use ISHPermissionKit to ask for a user’s permission for multiple categories at the same time and out of context, you should continue to ask for permission only when the app needs it. However, there might be occassions when multiple permissions are required at the same time, e.g., when starting to record location and motion data.

This framework also provides explicit ways to ask for the user’s permission where the system APIs only provide implicit methods of doing so.

Supported permission categories:

  • Calendar: Events and Reminders
  • Contacts
  • Location: Always and WhenInUse
  • Motion: Activity data (step counting, etc.)
  • HealthKit
  • Microphone
  • Music Library
  • Notifications: Local and Remote
  • Photos: Library and Camera
  • Social: Facebook, Twitter, SinaWeibo, TencentWeibo
  • Siri
  • Speech Recognition

The library compiles with the iOS 11 SDK and later and deploys back to iOS 9. Permission categories that were added later than the deployment target will be skipped on unsupported versions.

All permission categories relate to sensitive user information. If your app binary contains code to access this information, it has to comply with special review guidelines and other requirements to pass binary validation in App Store Connect and app review. Therefore, you must specifically enable the categories you need with build flags, everything else will not be included in the framework. Please read the installation instructions carefully.

ISHPermissionKit verifies that the required usage descriptions are provided in your app’s Info.plist. If the DEBUG preprocessor macro is set, it will assert and explain which keys need to be added. Other requirements for each permission category are mentioned in the header documentation in ISHPermissionCategory.h.

In contrast to other libraries, ISHPermissionKit allows you to present custom view controllers, ask for several permissions in a sequence, provides a unified API through subclasses, and is iOS 10 compatible.

Overview