iOS 保存联系人到手机通讯录(CNMutableContact\CNContactViewController)

这篇博客介绍了在iOS 9及以上版本中,如何利用CNMutableContact和CNContactViewController将App内的个人信息保存到手机通讯录。详细讲解了CNMutableContact的属性和用法,包括姓名、电话、邮件等关键信息的设置,并提供了实现步骤,包括获取通讯录权限、创建联系人对象和展示联系人视图控制器。
摘要由CSDN通过智能技术生成

前言

产品需求,将App内的个人信息,保存到手机通讯录,故了解到iOS9以后可以使用CNMutableContact和CNContactViewController,其中CNMutableContact是隶属于Contacts的Framework,CNContactViewController是隶属于ContactsUI的Framework,这里这两个Framework不作详解,有兴趣自己可以看看,这里只记录个人信息怎么保存到手机通讯录。

了解相应的Class

  • CNMutableContact类,该类是一个可变的联系人对象,可以写入电话、邮箱等信息。
  • CNContactViewController类,CNContactViewController类可以直接显示一个联系人界面,这个界面显示的可以是一个新的联系人、不存在的联系人和现有的联系人,初始化该类必须使用一个初始值viewControllerForNewContact:即,一个CNMutableContact对象。
  • CNLabeledValue类,官方定义是一个线程安全的类,定义了一个不可变的值对象,结合接触属性值标签,譬如一个联系人的电话号码加上一个标签:家里、工作、或者iPhone。即设置联系人属性时需要使用该类设置一个标签和一个值。

CNMutableContact详解

枚举属性

  • contactType,该参数是一个枚举值,该枚举值有两个定义,分别是CNContactTypePersonCNContactTypeOrganization
    CNContactTypePerson表示人
    CNContactTypeOrganization表示组织或者机构

字符串属性

  • namePrefix联系人
  • namePrefix称谓(姓名前)
  • givenName名字
  • middleName中间名
  • familyName姓氏
  • previousFamilyName婚前姓姓
  • nameSuffix称谓(姓名后)
  • nickname昵称
  • organizationName公司
  • departmentName部门
  • jobTitle职位
  • phoneticGivenName名字拼音或音标
  • phoneti
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
iOS 系统中,可以使用`WKWebView`的 `shouldPreviewElement` 方法和 `WKPreviewActionItem` 来实现将手机保存手机通讯录的功能。 具体步骤如下: 1. 在 `WKWebView` 的代理方法 `webView(_:shouldPreviewElement:): WKPreviewElementInfo?` 中判断是否是电话号码,并返回一个 `WKPreviewElementInfo` 对象。 ```swift func webView(_ webView: WKWebView, shouldPreviewElement elementInfo: WKPreviewElementInfo) -> WKPreviewElementInfo? { if let phoneNumber = elementInfo.linkURL?.absoluteString, phoneNumber.isPhoneNumber { return elementInfo } else { return nil } } ``` 2. 在 `WKWebView` 的代理方法 `webView(_:previewingViewControllerForElement:defaultActions:) -> UIViewController?` 中创建一个 `UIViewController` 对象,并添加一个保存电话号码到通讯录的操作。 ```swift func webView(_ webView: WKWebView, previewingViewControllerForElement elementInfo: WKPreviewElementInfo, defaultActions previewActions: [WKPreviewActionItem]) -> UIViewController? { let phoneNumber = elementInfo.linkURL!.absoluteString let alertController = UIAlertController(title: "是否保存\(phoneNumber)到通讯录?", message: nil, preferredStyle: .actionSheet) let saveAction = WKPreviewActionItem(title: "保存通讯录", style: .default) { (action, viewController) in // 保存电话号码到通讯录 let contact = CNMutableContact() contact.phoneNumbers.append(CNLabeledValue(label: CNLabelPhoneNumberMain, value: CNPhoneNumber(stringValue: phoneNumber))) let contactController = CNContactViewController(forUnknownContact: contact) contactController.allowsActions = false contactController.allowsEditing = true viewController.navigationController?.pushViewController(contactController, animated: true) } alertController.addAction(saveAction) let cancelAction = WKPreviewActionItem(title: "取消", style: .cancel) { (action, viewController) in // 取消操作 viewController.dismiss(animated: true, completion: nil) } alertController.addAction(cancelAction) return alertController } ``` 其中,`phoneNumber.isPhoneNumber` 是一个自定义的字符串扩展方法,用于判断是否是电话号码。`CNContactViewController` 是 iOS 系统提供的用于显示和编辑联系人信息的控制器。 最后,在 `Info.plist` 文件中添加以下权限请求: ```xml <key>NSContactsUsageDescription</key> <string>需要访问通讯录保存电话号码</string> ``` 这样就可以实现在 iOS 系统中点击手机号码保存手机通讯录的功能了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值