A polite and unified way of asking for permission on iOS

Overview

ISHPermissionKit

Travis Build Status  Version  Carthage compatible

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.

Sample App Demo

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.

Recommended reading: The Right Way to Ask Users for Mobile Permissions

Roadmap

Missing features:

  1. Resetting state correctly when device is reset
  2. Permission monitoring and NSNotifications upon changes

Please file an issue for missing permissions.

How to Use

Sample App

In order to demonstrate all steps that are required to use ISHPermissionKit, the sample application has a separate repository.

The sample app uses the dynamically-linked framework.

Installation

Build Flags

Your variant of ISHPermissionKit will only include the permission categories you actually need. We use preprocessor macros to ensure any unused code is not compiled to save you from suprising App Store rejections, as some privacy guidelines apply to all apps that contain code to access user data, regardless of whether or not the code is ever called in your app. How to enable the categories you need depends on how you install ISHPermissionKit (see below).

Static Library

Add this Xcode project as a subproject of your app. Then link your app target against the static library (ISHPermissionKitLib.a). You will also need to add the static library as a target dependency. Both settings can be found in your app target's Build Phases.

You must provide a build configuration manually.

Use #import <ISHPermissionKit/ISHPermissionKit.h> to import all public headers. The static library version is recommended if you are concerned about app launch times, as a high number of dynamic libraries could increase the latter.

Dynamically-Linked Framework

Add this Xcode project as a subproject of your app. Then add the framework (ISHPermissionKit.framework) to the app's embedded binaries (on the General tab of your app target's settings). On the Build Phases tab, verify that the framework has also been added to the Target Dependencies and Link Binary with Libraries phases, and that a new Embed Frameworks phase has been created.

You must provide a build configuration manually.

You can use Carthage to fetch and build the framework. You will still have to provide a build configuration manually.

The framework can be used as a module, so you can use @import ISHPermissionKit; to import all public headers. Further reading on Modules: Clang Documentation

Providing a Build Configuration

When building the static or dynamic library, ISHPermissionKit will look for a file named ISHPermissionKitAppConfiguration.xcconfig in the same directory as ISHPermissionKit's root directory (not within the root directory), and two levels further up the directory hierarchy. Configuration files in either location allow you to set preprocessor flags that will be used when compiling the framework.

We strongly recommend to start with a copy of the template config provided in this repository, ISHPermissionKitAppConfiguration.xcconfig. It includes a list of all supported flags, and you can easily specify which features you need by commenting or uncommenting the respective lines.

You will have to use the same configuration file to build your app, else the category-specific symbols will not be available. In your project settings, you can select a configuration file for each target:

Setting a configuration file

If you already use a configuration file, you can pick one and include the other in it. Ensure to always use $(inherited) when setting preprocessor macros.

Required Frameworks

ISHPermissionKit uses system frameworks to accomplish its tasks. Most of them will be linked automatically unless you have disabled "Enable Modules" (CLANG_ENABLE_MODULES) and "Link Frameworks Automatically" (CLANG_MODULES_AUTOLINK) in your app target's build settings.

Unfortunately, some framework are not weakly linked automatically which will cause your app to crash at launch on older systems that don't support the respective framework. These frameworks must be explicitly linked in your app, and set to "Optional". Feel free to duplicate rdar://28008958 (https://openradar.appspot.com/search?query=28008958).

Weak-linking a framework in Xcode

This is currently required for the Speech framework, and only if you enable the speech permission category.

Cocoa Pods

You can use CocoaPods to install ISHPermissionKit as a static or dynamic library. Each permission category requires a separate (sub)pod. The following sample Podfile includes all available pods – you should pick only those that you are actually using in your app.

target 'MyApp' do
  use_frameworks! // remove this line if you want to link your pods statically
  pod 'ISHPermissionKit/Motion'
  pod 'ISHPermissionKit/Health'
  pod 'ISHPermissionKit/Location'
  pod 'ISHPermissionKit/Microphone'
  pod 'ISHPermissionKit/PhotoLibrary'
  pod 'ISHPermissionKit/Camera'
  pod 'ISHPermissionKit/Notifications'
  pod 'ISHPermissionKit/SocialAccounts'
  pod 'ISHPermissionKit/Contacts'
  pod 'ISHPermissionKit/Calendar'
  pod 'ISHPermissionKit/Reminders'
  pod 'ISHPermissionKit/Siri'
  pod 'ISHPermissionKit/Speech'
  pod 'ISHPermissionKit/MusicLibrary'
end

Providing a build configuration manually is not required when you use CocoaPods, and you can also ignore the Required Frameworks section.

See the official website to get started with CocoaPods.

ISHPermissionsViewController

You can request permission for a single category or a sequence of categories. The following example presents a ISHPermissionsViewController for Activity and LocationWhenInUse permissions if needed.

NSArray *permissions = @[
    @(ISHPermissionCategoryLocationWhenInUse),
    @(ISHPermissionCategoryActivity)
    ];
ISHPermissionsViewController *vc = [ISHPermissionsViewController permissionsViewControllerWithCategories:permissions dataSource:self];

if (vc) {
    UIViewController *presentingVC = [self.window rootViewController];
    [presentingVC presentViewController:vc
                               animated:YES
                             completion:nil];
}

The designated constructor returns nil if non of the categories allow a user prompt (either because the user already granted or denied the permission, does not want to be asked again, or the feature is simply not supported on the device).

You can set a completionBlock or delegate (both optional) that will be notified once the ISHPermissionsViewController has iterated through all categories. If you do not set a delegate, the view controller will simply be dismissed once finished, and if set, the completion block will be called. If you do set a delegate, the delegate is responsible for dismissing the view controller.

The dataSource is required and must provide one instance of a ISHPermissionRequestViewController for each requested ISHPermissionCategory.

The ISHPermissionRequestViewController provides IBActions to prompt for the user's permission, ask later, and don't ask. It does not however provide any buttons or UI. Your subclass can create a view with text, images, and buttons etc., explaining in greater detail why your app needs a certain permission. The subclass should contain buttons that trigger at least one of the actions mentioned above (see the header for their signatures). A cancel button should call changePermissionStateToAskAgainFromSender:. If your subclass overwrites any of these three actions, you must call super.

ISHPermissionRequest

The ISHPermissionRequest can be used to determine the current state of a permission category. It can also be used to trigger the user prompt asking for permissions outside of the ISHPermissionsViewController.

You must use the additional (...+All.h) method +requestForCategory: to create the appropriate request for the given permission category.

Here is how you check the permissions to access the microphone:

ISHPermissionRequest *r = [ISHPermissionRequest requestForCategory:ISHPermissionCategoryMicrophone];
BOOL granted = ([r permissionState] == ISHPermissionStateAuthorized);

The same example for local notifications:

ISHPermissionRequest *r = [ISHPermissionRequest requestForCategory:ISHPermissionCategoryNotificationLocal];
BOOL granted = ([r permissionState] == ISHPermissionStateAuthorized);

How to Contribute

Contributions are welcome. Check out the roadmap and open issues. Adding support for more permission types is probably most rewarding, you can find a few hints on how to get started below.

Adding Support for New Permissions

You will need to create a new subclass of ISHPermissionRequest and add an ISHPermissionCategory (make sure to use explicit values as these may be persisted). Don't change existing values. Finally, wire it up in ISHPermissionRequest+All by returning your new subclass in +requestForCategory:.

Subclasses must implement at least two methods:

  1. - (ISHPermissionState)permissionState
  2. - (void)requestUserPermissionWithCompletionBlock:(ISHPermissionRequestCompletionBlock)completion

What these methods actually do depends on the mechanism that the system APIs provide. Ideally, permissionState should check the system authorization state first and return appropriate internal enum values from ISHPermissionState. If the system state is unavailable or is similar to kCLAuthorizationStatusNotDetermined then this method should return internalPermissionState. You should try to map system provided states to ISHPermissionState without resorting to the internalPermissionState as much as possible.

When requesting the permission state you should only store the result in internalPermissionState if the state cannot easily be retrieved from the system (as is the case, e.g., with activity monitoring from the designated co-processor).

Before a new permission can be added, you must introduce a new build flag and ensure the library compiles with and without it. Please update this document accordingly, add the new build flag to the template configuration file (ISHPermissionKitAppConfiguration.xcconfig), and create a new CocoaPods subspec.

Attribution

ISHPermissionKit icon designed by Jason Grube (CC BY 3.0) from the Noun Project

More OpenSource Projects by iosphere

ISHHoverBar - A floating UIToolBar replacement as seen in the iOS 10 Maps app, supporting both vertical and horizontal orientation

ISHPullUp - Vertical split view controller with pull up gesture as seen in the iOS 10 Maps app

Apps Using ISHPermissionKit

Trails · Outdoor GPS Logbook

SumUp – Accept EMV card payments

Swiss Snow Report

If your app uses ISHPermissionKit, let us know and we will include it here.

Comments
  • Facebook permission denied on second attempt if no account data on first attempt

    Facebook permission denied on second attempt if no account data on first attempt

    Thanks for all hard work on this library.

    I'm trying the Facebook permission. If the permission is requested and the user has not filled in their account in Settings, the request failed with Denied, as expected.

    I then direct the user to their Facebook account settings. If they add their account in Settings and return to my app, further requests for the Facebook permissions fail with Denied.

    Is this a bug or some known behaviour?

    Update: I should add, when viewing the Facebook screen in Settings, my app is not listed under allow these apps to use your account, so it seems after ISHPermissionKit's first failed request, it never again tries to request access from the system (caching the original result as a denial, rather than just a lack of account?)

    bug 
    opened by danhalliday 14
  • Internal state were not reset after user's privacy settings reset

    Internal state were not reset after user's privacy settings reset

    Solution?

    For microphone I changed code to

    case AVAudioSessionRecordPermissionUndetermined: {
                ISHPermissionState currentState = [self internalPermissionState];
                if (currentState != ISHPermissionStateAskAgain || currentState != ISHPermissionStateDoNotAskAgain) {
                    [self setInternalPermissionState:ISHPermissionStateUnknown];
                }
                return [self internalPermissionState];
            }
    
    opened by bezigon 13
  • Allow cocoapod configuration to only install specific requests

    Allow cocoapod configuration to only install specific requests

    Just a heads up that our App was rejected for referencing the Health Kit API when we do not actually use it. It would be nice to either remove this from being installed from the CocoaPod or allow some sort of config.

    bug 
    opened by MPiccinato 8
  • Permission Categories Not Resolving

    Permission Categories Not Resolving

    My Swift 3.0 project isn't resolving any of the permission categories. ISHPermissionKit installed as a Dynamically-Linked Framework.

    screen shot 2016-10-26 at 4 37 47 pm

    Any suggestions?

    opened by emaddoma 6
  • Various documentation improvements

    Various documentation improvements

    Aims to get a higher CocoaPods quality rating (plus some extra stuff).

    https://cocoapods.org/pods/ISHPermissionKit/quality https://guides.cocoapods.org/making/quality-indexes

    • Adds header documentation
    • Adds shared schemes to allow builds via xcodebuild
    • Adds changelog file
    • Adds repo icon (shown, e.g., in SourceTree)
    • Adds appledoc config file (allows appledoc . within the root directory)
    opened by shagedorn 3
  • Ensures HealthKit's status is 'unsupported' on iPad (and other devices that don't support it)

    Ensures HealthKit's status is 'unsupported' on iPad (and other devices that don't support it)

    Uses the documented way of checking HealthKit availability.

    Note: The linker sets HKHealthKit to nil if the framework is not found (e.g., when running on iOS 7). https://developer.apple.com/library/ios/documentation/DeveloperTools/Conceptual/cross_development/Using/using.html

    opened by shagedorn 3
  • Ensure 'CFBundleVersion' is set

    Ensure 'CFBundleVersion' is set

    When archiving/uploading with Xcode 10.2, this will otherwise throw this upload error:

    ERROR ITMS-90056: "This bundle /Frameworks/ISHPermissionKit.framework is invalid. The Info.plist file is missing the required key: CFBundleVersion. Please find more information about CFBundleVersion at https://developer.apple.com/documentation/bundleresources/information_property_list/cfbundleversion"

    ISH_BUNDLE_VERSION was never set.

    opened by shagedorn 2
  • When are you planning to release new version of ISHPermissionKit?

    When are you planning to release new version of ISHPermissionKit?

    When are you planning to release new version of ISHPermissionKit? I think this fix https://github.com/iosphere/ISHPermissionKit/commit/e7edcea14d65230c4e2a65e2a42f72ef94b6d9b7 should go to production ASAP

    Thanks!

    opened by VladKorzun 2
  • Push notification arriving, but not waking device?

    Push notification arriving, but not waking device?

    If I send my app a push, it's always received. Alerts appear outside the app. Alerts appear on the lock screen. However, if the device is locked and the screen is off, the push to my app doesn't wake the device and play sound like my other apps do. Am I missing something?

    opened by emaddoma 2
  • Housekeeping

    Housekeeping

    • Sample app uses the dynamic framework
    • Sample app now uses all categories (in the same order the categories are defined), unless they require capabilities – those are added, too, but commented out. This should allow us to easily test all categories locally.
    • Add required configuration for Health and TencentWeibo requests in sample app
    • Xcode housekeeping
    opened by shagedorn 2
  • requesting permissions outside of the RequestViewController

    requesting permissions outside of the RequestViewController

    Hello,

    Many thanks for this great lib!

    I'm having trouble using the ISHPermissionRequest to request some permissions outside of the ISHPermissionsViewController.

    Location

    The iOS alert does show up, but disappears before the user has had a chance to choose. Here's my code :

    ISHPermissionRequest *requestManager = [ISHPermissionRequest requestForCategory:ISHPermissionCategoryLocationWhenInUse];
        [requestManager requestUserPermissionWithCompletionBlock:^(ISHPermissionRequest *request, ISHPermissionState state, NSError *error){
          if (error || state != 200) {
            NSLog(@"Permission denied");
          } else {
            NSLog(@"Permission granted")
          }
        }];
    

    Remote notifications

    The iOS alert show up and stays till the user chooses, but the completion block is not called unless I call the method a second time. Here's my code :

    ISHPermissionRequest *requestManager = [ISHPermissionRequest requestForCategory:ISHPermissionCategoryNotificationRemote];
        [requestManager requestUserPermissionWithCompletionBlock:^(ISHPermissionRequest *request, ISHPermissionState state, NSError *error){
          if (error || state != 200) {
            NSLog(@"Permission denied");
          } else {
            NSLog(@"Permission granted")
          }
        }];
    

    Is there anything i am doing wrong or not getting ?

    Many thanks for your help

    opened by VonD 2
  • Discourage usage of

    Discourage usage of "Do not ask again"

    There is currently no way to reset a permission's state (nor can the user go to settings and change it there) when a user has once selected "Do not ask again". This option should generally be discouraged:

    • Add note in README and/or header docs
    • Show alert in sample app to explain the behaviour
    • Add "No" option (that triggers the system alert) to sample app

    We should also think of allowing to reset this state via public API.

    enhancement 
    opened by shagedorn 0
  • TencentWeibo: Alert not presented

    TencentWeibo: Alert not presented

    Steps:

    • Use the demo app to request TencentWeibo permission with the debugger attached

    Xcode will log that the alert could not be presented. You will not see a permission prompt.

    bug 
    opened by shagedorn 0
  • "Don't ask again" does not work for some categories

    Seems I've missed something for the newly-implemented categories.

    This can easily be reproduced in the test app: Just click through all permissions and select "Do not ask again". Reopen the app, and you will be prompted again for some of them.

    bug 
    opened by shagedorn 1
  • Support HomeKit permissions

    Support HomeKit permissions

    Linking HomeKit may have similar implications as linking HealthKit. Maybe we can re-use (and rename) the Health targets, since we certainly don't want more framework variants.

    enhancement 
    opened by shagedorn 0
  • Permissions controller cannot handle requests that become outdated after presentation

    Permissions controller cannot handle requests that become outdated after presentation

    • present the permissions controller (the container)
    • while presented, one or more "waiting" (i.e., not visible, but queued) requests becomes outdated, i.e., it cannot be presented anymore
      • this may happen when a system alert is unintentionally triggered, see https://github.com/iosphere/ISHPermissionKit/issues/64
      • can also happen when multiple requests (modern and legacy) are presented that share one system permission, e.g., AssetsLibrary vs Photos, AddressBook vs Contacts (currently not implemented), Local/Remote Notifications vs User Notifications

    Expected result: The stale permission is skipped silently.

    Actual result: The stale permission is skipped, but another one is presented twice, at least when opting for "Later".

    bug 
    opened by shagedorn 0
Releases(2.1.2)
  • 2.1.2(Apr 6, 2019)

  • 2.1.1(Sep 5, 2018)

  • 2.1.0(Sep 5, 2018)

    • Ready for Xcode 10 and iOS 12 (still builds with Xcode 9/iOS 11)
    • Bump deployment target to iOS 9
    • Remove deprecated permission categories (AssetsLibrary and AddressBook-based APIs)
    • Allow determination of possible requests without displaying any UI
    Source code(tar.gz)
    Source code(zip)
  • 2.0.0(Oct 25, 2016)

    This release requires additional setup to ensure your apps pass binary validation in iTunes Connect. Please study the README file carefully.

    • Ready for iOS 10
    • New permission types: Siri, photo library, speech recognition, user notifications, music library
    • All required usage descriptions will be asserted in DEBUG at the time of requesting a permission
    • Carthage compatibility
    Source code(tar.gz)
    Source code(zip)
  • 1.2.0(Jul 15, 2016)

    • Provide callback to handle true errors
    • Fix issues for social media account permissions if user had no user account:
      this may require your implementations to handle the error to avoid asking the user again for permission
    • Add methods to query request-able and granted permissions given a set of categories
    • Add some rudimentary unit tests
    Source code(tar.gz)
    Source code(zip)
  • 1.1.0(Jun 8, 2016)

    • Improves CocoaPods integration
      • README examples updated to work with CocoaPods 1.0
      • Private headers are marked private in Podspec
      • Adds subspec for Health support
    • Improves Swift support by adding nullability annotations
    • Internal refactoring
    Source code(tar.gz)
    Source code(zip)
  • 1.0.0(Nov 20, 2015)

    • Improves documentation
      • Improves header documentation
      • Adds shared schemes to allow builds via xcodebuild
      • Adds changelog file
      • Adds repo icon (shown, e.g., in SourceTree)
      • Adds appledoc config file (allows appledoc . within the root directory)
    Source code(tar.gz)
    Source code(zip)
  • 0.9.0(Nov 19, 2015)

    • Added support for remote notifications
    • Added source annotations to work better with Swift
    • Fixes project configuration warnings
    • Removes Xcode 6/iOS 8 SDK build support (iOS 7 is still the deployment target)
    Source code(tar.gz)
    Source code(zip)
  • 0.8.0(Nov 19, 2015)

    • Allows upgrade from WhenInUse to Always location permission
    • Adds support for dependencies between permissions
    • Bugfixes: Camera, Microphone permissions
    Source code(tar.gz)
    Source code(zip)
  • 0.7.0(Nov 19, 2015)

  • 0.6.0(Oct 20, 2014)

    • HealthKit is not used in default setting. If you need to use HealthKit please consult the readme and use the ISHPermissionKitLib+HealthKit variant.
    • This is an important update if you do not use HealthKit as you might otherwise get a rejection from Apple for not providing a privacy policy or have no reason to link to HealthKit.
    Source code(tar.gz)
    Source code(zip)
  • 0.5.0(Jul 2, 2014)

    • Added additional permissions:
      • Health-App
      • AdressBook
      • Calendar
      • Social-Services
      • Reminders
    • Changed designated constructor for ISHPermissionsViewController: +permissionsViewControllerWithCategories:dataSource:
    • Improved UI layout on iPad
    Source code(tar.gz)
    Source code(zip)
  • 0.1.1(Jul 2, 2014)

    First version with support for permissions to:

    • CoreLocation: Always and WhenInUse
    • CoreMotion: Activity data (step counting, etc.)
    • Microphone
    • Photos: Camera Roll and Camera
    • LocalNotifications
    Source code(tar.gz)
    Source code(zip)
Owner
iosphere GmbH
We build apps for our clients and work on our own ideas: trails.io, offmaps.com, rudel.io, mapsag.es
iosphere GmbH
A unified API to ask for permissions on iOS

Permission exposes a unified API to request permissions on iOS. Usage • Example • Installation • License Usage Permission Permission.swift PermissionS

Damien 2.9k Dec 27, 2022
A unified API to ask for permissions on iOS

PAPermissions PAPermissions is a fully customizable and ready-to-run library to handle permissions through a ViewController Right now it supports out

Pasquale Ambrosini 694 Oct 17, 2022
A visual permission manager for iOS

VWWPermissionKit We've all been there. You get started on your latest and greatest app when you have to add logic to prompt the user for permissions b

Zakk Hoyt 144 Feb 24, 2022
Ask permissions on Swift. Available List, Dialog & Native interface. Can check state permission.

SPPermissions About Library for ask permissions. You can check state of permissions, available .authorized, .denied & .notDetermined. Available ready-

Ivan Vorobei 5.1k Dec 30, 2022
Make permission request easier.

Proposer Proposer provides a single API to request permission for access Camera, Photos, Microphone, Contacts, Reminders, Calendar, Location or Notifi

null 855 Nov 3, 2022
A set of SwiftUI dynamic property wrappers that provide a more familiar API for accessing the Contacts framework. (iOS, watchOS, macOS)

Connections Also available as a part of my SwiftUI+ Collection – just add it to Xcode 13+ A set of SwiftUI dynamic property wrappers that provide a mo

SwiftUI+ 9 Oct 7, 2022
Swift Package for fetching approximate user location without asking for their permission 👺 .

Earendil Swift Package for fetching approximate user location without asking for their permission ?? . Get their country, subregion or continent with

Przemysław Jabłoński 4 Sep 3, 2021
AREK is a clean and easy way to request any kind of iOS permission (with some nifty features 🤖)

AREK is a clean and easy to use wrapper over any kind of iOS permission written in Swift. Why AREK could help you building a better app is well descri

Ennio Masi 961 Dec 20, 2022
Easy to use cryptographic framework for data protection: secure messaging with forward secrecy and secure data storage. Has unified APIs across 14 platforms.

Themis provides strong, usable cryptography for busy people General purpose cryptographic library for storage and messaging for iOS (Swift, Obj-C), An

Cossack Labs 1.6k Dec 30, 2022
Easy to use cryptographic framework for data protection: secure messaging with forward secrecy and secure data storage. Has unified APIs across 14 platforms.

Themis provides strong, usable cryptography for busy people General purpose cryptographic library for storage and messaging for iOS (Swift, Obj-C), An

Cossack Labs 1.6k Dec 30, 2022
A unified API to ask for permissions on iOS

Permission exposes a unified API to request permissions on iOS. Usage • Example • Installation • License Usage Permission Permission.swift PermissionS

Damien 2.9k Dec 27, 2022
A unified API to ask for permissions on iOS

PAPermissions PAPermissions is a fully customizable and ready-to-run library to handle permissions through a ViewController Right now it supports out

Pasquale Ambrosini 694 Oct 17, 2022
Unified API Library for: Cloud Storage, Social Log-In, Social Interaction, Payment, Email, SMS, POIs, Video & Messaging.

Unified API Library for: Cloud Storage, Social Log-In, Social Interaction, Payment, Email, SMS, POIs, Video & Messaging. Included services are Dropbox, Google Drive, OneDrive, OneDrive for Business, Box, Egnyte, PayPal, Stripe, Google Places, Foursquare, Yelp, YouTube, Vimeo, Twitch, Facebook Messenger, Telegram, Line, Viber, Facebook, GitHub, Google+, LinkedIn, Slack, Twitter, Windows Live, Yahoo, Mailjet, Sendgrid, Twilio, Nexmo, Twizo.

CloudRail 195 Nov 29, 2021
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.

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.

Joe L 420 Dec 22, 2022
A simple and attractive AlertView to ask permission to your users for Push Notification.

A simple and attractive AlertView **to ask permission to your users for Push Notification.** PRESENTATION Ask permission to user for push notification

Boisney Philippe 37 Mar 23, 2022
Permission Util for iOS (feat.RxSwift)

EzRxPermission Example To run the example project, clone the repo, and run pod install from the Example directory first. Requirements Installation EzR

Yunjae-Na 4 Jun 30, 2022
Simplifies iOS user permission requests (location, push notifications, camera, contacts, calendar, photos, etc).

ICanHas Swift 4 library that simplifies iOS user permission requests (push notifications, location, camera, photo library, contacts, calendar). Instal

Adolfo Rodriguez 91 Jun 2, 2022
A visual permission manager for iOS

VWWPermissionKit We've all been there. You get started on your latest and greatest app when you have to add logic to prompt the user for permissions b

Zakk Hoyt 144 Feb 24, 2022
Ask permissions on Swift. Available List, Dialog & Native interface. Can check state permission.

SPPermissions About Library for ask permissions. You can check state of permissions, available .authorized, .denied & .notDetermined. Available ready-

Ivan Vorobei 5.1k Dec 30, 2022
Make permission request easier.

Proposer Proposer provides a single API to request permission for access Camera, Photos, Microphone, Contacts, Reminders, Calendar, Location or Notifi

null 855 Nov 3, 2022