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中添加NSLocationWhenInUseUsageDescription
或NSLocationAlwaysUsageDescription
请查看演示以获取更多信息。
我建议您添加一个UIViewController+Proposer.swift
文件(演示),以在首次提案之前或在提案失败时显示本地化警告。
安装
大胆地将Proposer.swift
拖到您的iOS项目中。但建议使用Carthage(或CocoaPods)。
Carthage
github "nixzhu/Proposer"
CocoaPods
pod 'Proposer'
联系
NIX @nixzhu
许可协议
提案者提供MIT许可。有关更多信息,请参阅LICENSE文件。