提案人 1.2.3

提案人 1.2.3

测试已测试
语言语言 SwiftSwift
许可协议 MIT
发布上次发布2020年1月
SPM支持 SPM

nixzhu维护。



提案人 1.2.3

Proposer

Proposer提供了单一API来请求访问权限,包括摄像头照片麦克风联系人提醒日历位置通知

要求

Swift 4.2, iOS 9.0

(使用Swift 3,请使用版本1.1.0)

示例

只有一个单一的API

proposeToAccess(_:agreed:rejected:)

在现实中

import Proposer
@IBAction func choosePhoto() {
    let photos: PrivateResource = .photos
    let propose: Propose = {
        proposeToAccess(photos, agreed: {
            print("I can access Photos. :]\n")
            if UIImagePickerController.isSourceTypeAvailable(.savedPhotosAlbum) {
                let imagePicker = UIImagePickerController()
                imagePicker.sourceType = .savedPhotosAlbum
                self.present(imagePicker, animated: true, completion: nil)
            }
        }, rejected: {
            self.alertNoPermissionToAccess(photos)
        })
    }
    showProposeMessageIfNeedFor(photos, andTryPropose: propose)
}

当您想获取用户的位置时,得益于Swift的枚举,您甚至可以选择使用模式

@IBAction func shareLocation() {
    let location: PrivateResource = .location(.whenInUse)
    let propose: Propose = {
        proposeToAccess(location, agreed: {
            print("I can access Location. :]\n")
        }, rejected: {
            self.alertNoPermissionToAccess(location)
        })
    }
    showProposeMessageIfNeedFor(location, andTryPropose: propose)
}

根据您的需求,您必须在您的Info.plist中添加NSLocationWhenInUseUsageDescriptionNSLocationAlwaysUsageDescription

请查看演示以获取更多信息。

我建议您添加一个UIViewController+Proposer.swift文件(演示),以在首次提案之前或在提案失败时显示本地化警告。

安装

大胆地将Proposer.swift拖到您的iOS项目中。但建议使用Carthage(或CocoaPods)。

Carthage

github "nixzhu/Proposer"

CocoaPods

pod 'Proposer'

联系

NIX @nixzhu

许可协议

提案者提供MIT许可。有关更多信息,请参阅LICENSE文件。