中易网

iOS8可以用cncontacts框架吗

答案:2  悬赏:30  
解决时间 2021-04-27 01:51
  • 提问者网友:霸道又专情♚
  • 2021-04-26 15:22
CNContacts框架只适用于iOS9吗?向下兼容吗
最佳答案
  • 二级知识专家网友:余生继续浪
  • 2021-04-26 15:37
第一步,导入Contacts框架,import Contacts ,这个是不带UI的框架,可以直接获取联系人

[objc] view plain copy
// 检查状态
let status: CNAuthorizationStatus = CNContactStore.authorizationStatusForEntityType(CNEntityType.Contacts)
switch status {
case .NotDetermined:
print("是否允许访问联系人,当应用第一次安装在设备上时将处于此状态")
case .Restricted:
print("不能够访问联系人数据,并且用户也不能在设置中改变这个状态")
case .Denied:
print("不允许应用访问联系人数据")
case .Authorized:
print("能够自由访问联系人")
}
第二步,如果没有获取授权就去获取
[objc] view plain copy
private func getAuth() {
CNContactStore().requestAccessForEntityType(CNEntityType.Contacts) { (status: Bool, error) in
if error != nil {
print("error = \(error)")
}
// 根据status的状态来判断是否授权成功
print("status = \(status)")
}
}

第三步、获取通讯录信息
// 获取通讯录信息
private func getContactMessage() {
let formatter = CNContactFormatter.descriptorForRequiredKeysForStyle(CNContactFormatterStyle.FullName)
// 这里的 Key 可以根据需要设置
let request = CNContactFetchRequest.init(keysToFetch: [formatter, CNContactIdentifierKey, CNContactPhoneNumbersKey, CNContactEmailAddressesKey, CNContactEmailAddressesKey, CNContactImageDataAvailableKey])

do {
try CNContactStore().enumerateContactsWithFetchRequest(request) {[weak self] (contact: CNContact, status:UnsafeMutablePointer) in
// 保存到数组
self!.dataSources.append(contact)
}
} catch let error {
print("获取信息 error = \(error)")
}
}

第四步、打印获取的信息
private func contactMessage() {
for contact in dataSources {
let number = contact.phoneNumbers
// 演示需要,只打印电话号码,这里是一个数组,可能不止一个号码
for obj in number {
let model = obj.value as! CNPhoneNumber
print("number = \(model.stringValue)")
}
}
}
全部回答
  • 1楼网友:木子香沫兮
  • 2021-04-26 16:41
应该不能吧。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息