iphone通讯录的备份与恢复

最近在做iOS系统通讯录备份到服务器,并且可以从服务器中下载备份文件恢复到手机的功能,部分实现细节记录如下。

将iphone系统通讯录生成.vcf文件

ABAddressBookRef addressBook = ABAddressBookCreate();
CFArrayRef contacts = ABAddressBookCopyArrayOfAllPeople(addressBook);
CFDataRef vcards = (CFDataRef)ABPersonCreateVCardRepresentationWithPeople(contacts);
NSString *vcardString = [[NSString alloc] initWithData:(__bridge NSData *)vcards encoding:NSUTF8StringEncoding];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *folderPath = [paths objectAtIndex:0];
NSString *filePath = [folderPath stringByAppendingPathComponent:@"contacts.vcf"];
[vcardString writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:nil];

运行后系统沙盒Document目录下会生成contacts.vcf文件,上传至服务器即可。

通讯录恢复:

从服务器下载contents.vcf文件,用系统通讯录程序打开即可恢复至手机。或者代码解析.vcf文件更新通讯录即可。

 NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);
 NSString *plistPath = [paths objectAtIndex:0];
 NSString *filePath =[plistPath stringByAppendingPathComponent:@"contacts.vcf"];
 CFDataRef vCardData = (CFDataRef)[filePath dataUsingEncoding:NSUTF8StringEncoding];
 ABAddressBookRef book = ABAddressBookCreate();
 ABRecordRef defaultSource = ABAddressBookCopyDefaultSource(book);
 CFArrayRef vCardPeople = ABPersonCreatePeopleInSourceWithVCardRepresentation(defaultSource, vCardData);
 for (CFIndex index = 0; index < CFArrayGetCount(vCardPeople); index++) {
     ABRecordRef person = CFArrayGetValueAtIndex(vCardPeople, index);
     ABAddressBookAddRecord(book, person, NULL);
     CFRelease(person);
 }
 CFRelease(vCardPeople);
 CFRelease(defaultSource);
 ABAddressBookSave(book, NULL);
 CFRelease(book);

注意:ABPersonCreateVCardRepresentationWithPeople只适用ios5.0以上系统。

有什么问题可以留言问我哟??

时间: 2024-08-10 10:35:40

iphone通讯录的备份与恢复的相关文章

iphone通讯录恢复

iphone丢失后如何恢通讯录? 今天一朋友丢失了iphone5,但目前没有钱购买新的iphone,但通讯录很重要,是否能恢复这些数据呢? 答案是如果你曾经在ituns或者icloud备份过这个数据,你就可以恢复,并且不需要iphone手机. 下面我们讲一下如何利用iphone数据恢复软件(来自http://www.freeiphonedatarecovery.com)寻回你的通讯录 1,首先我们下载安装iphone data recovery这款软件,你可以从上面网站上直接下载,运行这个软件,

【转】iPhone通讯录AddressBook.framework和AddressBookUI.framework的应用

通讯录中联系人相关的应用iPhone提供了两个框架:AddressBook.framework和AddressBookUI.framework,使用这两个框架我们可以在程序中访问并显示iPhone数据库中的联系人信息. 1.AddressBookUI显示部分 AddressBookUI中提供了和联系人显示信息相关的一些Controller,有四个: ABPeoplePickerNavigationController:显示整个通讯录并可以选择一个联系人的信息 ABPersonViewContro

访问iPhone通讯录的问题

每个APP只显示一次上图的提示,即使卸载APP也不显示.如果想再次显示提示,可进入 设置-->通用-->还原-->还原位置与隐私,即可. 而且在ios6中文环境下,访问通讯录会出现错误提示,XXX 想访问您的日历: 这个bug是无法修改的,可以在提示框中再添加一个提示:可以在plist添加NSContactsUsageDescription,设置一个你想显示的值.

js版iphone通讯录分组列表效果

<!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>groupList demo</title> <script type='text/javascript' src='http://cdn.staticfile.org/jquery

IOS通讯录的隐藏标签【电话】的特殊功能

这功能比较适合有强迫症,爱折腾的人哈!! 规范了通讯录标签,以后可以轻松的知道别人是用短号还是亲情网给你打电话. 如果是长号还可以显示归属地. 也许从IOS8(不太清楚)开始自带了号码归属地显示功能,但是却被隐藏起来了. 先看我保存的一个通讯录,电话是隐藏标签,短号和亲情网是IOS自带的自定义标签. 打这个号码的3个电话,效果: [电话]这个特殊标签在此界面是被隐藏的. 再看来电效果: [电话]的来电归属地功能已经有了. 再到最近通话里看,是同样的效果. 接下来就是如何实现批量修改电话标签以及新

UITableView全面解析

本文转自:http://www.cocoachina.com/ios/20140922/9710.html 在iOS开发中UITableView可以说是使用最广泛的控件,我们平时使用的软件中到处都可以看到它的影子,类似于微信.QQ.新浪微博等软件基本上随处都是UITableView.当然它的广泛使用自然离不开它强大的功能,今天这篇文章将针对UITableView重点展开讨论.今天的主要内容包括: 1.基本介绍 2.数据源 3.代理 4.性能优化 5.UITableViewCell 6.常用操作

IOS开发系列--UITableView使用全面解析

--UIKit之UITableView 概述 在iOS开发中UITableView可以说是使用最广泛的控件,我们平时使用的软件中到处都可以看到它的影子,类似于微信.QQ.新浪微博等软件基本上随处都是UITableView.当然它的广泛使用自然离不开它强大的功能,今天这篇文章将针对UITableView重点展开讨论.今天的主要内容包括: 基本介绍 数据源 代理 性能优化 UITableViewCell 常用操作 UITableViewController MVC模式 基本介绍 UITableVie

iOS开发系列--UITableView全面解析

概述 在iOS开发中UITableView可以说是使用最广泛的控件,我们平时使用的软件中到处都可以看到它的影子,类似于微信.QQ.新浪微博等软件基本上随处都是UITableView.当然它的广泛使用自然离不开它强大的功能,今天这篇文章将针对UITableView重点展开讨论.今天的主要内容包括: 基本介绍 数据源 代理 性能优化 UITableViewCell 常用操作 UITableViewController MVC模式 基本介绍 UITableView有两种风格:UITableViewSt

iOS开发之UITableView全面解析

在iOS开发中UITableView可以说是使用最广泛的控件,我们平时使用的软件中到处都可以看到它的影子,类似于微信.QQ.新浪微博等软件基本上随处都是UITableView.当然它的广泛使用自然离不开它强大的功能,今天这篇文章将针对UITableView重点展开讨论.今天的主要内容包括: 1.基本介绍 2.数据源 3.代理 4.性能优化 5.UITableViewCell 6.常用操作 7.UITableViewController 8.MVC模式   基本介绍 UITableView有两种风