A Swift library providing a single API to request iOS permissions for Camera, Photos, Microphone, Contacts, and more.
Proposer is a Swift library that provides a single, unified API for requesting iOS permissions to access system resources like Camera, Photos, Microphone, Contacts, Reminders, Calendar, Location, and Notifications. It simplifies the permission flow by reducing boilerplate code and offering a clean, type-safe interface using Swift enums.
iOS developers building apps that require access to system resources and want a streamlined, Swift-native way to handle permission requests.
Developers choose Proposer for its minimalistic API, which consolidates multiple permission request methods into one, and its Swift-centric design that leverages enums for type safety and clarity, making permission handling more intuitive and less error-prone.
Make permission request easier.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Consolidates multiple iOS permission requests into a single `proposeToAccess` method, drastically reducing boilerplate code as shown in the example snippets.
Uses Swift enums like `PrivateResource` for permissions, ensuring compile-time safety and clarity, especially for specifying location usage modes such as .whenInUse or .always.
Allows localized alert messages before the first proposal or after rejections via extensions like `UIViewController+Proposer`, enhancing user experience without extra setup.
Supports Carthage, CocoaPods, and manual drag-and-drop integration, making it adaptable to various project dependency management preferences.
Only supports eight system resources; newer iOS permissions introduced after Swift 4.2, like HealthKit or Face ID, are absent, limiting its relevance for modern apps.
The README targets Swift 4.2 with no mention of updates for newer Swift versions, raising red flags about compatibility, bug fixes, and long-term support.
Built around UIKit extensions, which may not integrate seamlessly with SwiftUI projects without additional bridging code, adding complexity for modern iOS development.