Contacts, NSDocumentDirectory
#import <Contacts/Contacts.h>
– (IBAction)btnCreatevcfFileClicked:(id)sender
{
NSString *vcard = @”BEGIN:VCARDnVERSION:3.0n”;
// Name
vcard = [vcard stringByAppendingFormat:@”N:%@;%@;%@;%@;%@n”,
@”lastname”, //lastname
@”firstname”, //firstname
@”middlename”, //middlename
@”prefix”, //prefix
@”suffix” //suffix
];
vcard = [vcard stringByAppendingFormat:@”FN:%@n”,@”compositeName”]; //compositeName
vcard = [vcard stringByAppendingFormat:@”NICKNAME:%@n”,@”nickname”]; //nickname
vcard = [vcard stringByAppendingFormat:@”X-PHONETIC-FIRST-NAME:%@n”,@”firstnamephonetic”]; //firstnamephonetic
vcard = [vcard stringByAppendingFormat:@”X-PHONETIC-LAST-NAME:%@n”,@”lastnamephonetic”]; //lastnamephonetic
// Work
vcard = [vcard stringByAppendingFormat:@”ORG:%@;%@n”,@”organization”,@”department”]; //organization, department
vcard = [vcard stringByAppendingFormat:@”TITLE:%@n”,@”jobtitle”]; //jobtitle
vcard = [self emailToVcardFieldEmail:@”email1@gmail.com” label:@”HOME” emailCounter:1 vCard:vcard]; //email, emailLabel
vcard = [self emailToVcardFieldEmail:@”email2@gmail.com” label:@”WORK” emailCounter:2 vCard:vcard]; //email, emailLabel
// Tel
vcard = [self phoneToVcardFieldPhoneNo:@”1111111111″ label:@”MOBILE” phoneCounter:1 vCard:vcard]; //phone no, phoneLabel
vcard = [self phoneToVcardFieldPhoneNo:@”2222222222″ label:@”MAIL” phoneCounter:2 vCard:vcard]; //phone no, phoneLabel
vcard = [self phoneToVcardFieldPhoneNo:@”3333333333″ label:@”IPHONE” phoneCounter:3 vCard:vcard]; //phone no, phoneLabel
vcard = [self phoneToVcardFieldPhoneNo:@”4444444444″ label:@”WORKFAX” phoneCounter:4 vCard:vcard]; //phone no, phoneLabel
// Adress
NSDictionary *address1 = [[NSDictionary alloc]initWithObjectsAndKeys:
@”St Jhons”, @”Street”,
@”San Fransisco”, @”City”,
@”California”, @”State”,
@”27105″, @”ZIP”,
@”USA”, @”Country”,
@”1″, @”CountryCode”, nil];
vcard = [self addressToVcardFieldAddress:address1 label:@”HOME” AddressCounter:1 vCard:vcard];
NSDictionary *address2 = [[NSDictionary alloc]initWithObjectsAndKeys:
@”St Jhons”, @”Street”,
@”San Fransisco”, @”City”,
@”California”, @”State”,
@”27105″, @”ZIP”,
@”USA”, @”Country”,
@”1″, @”CountryCode”, nil];
vcard = [self addressToVcardFieldAddress:address2 label:@”WORK” AddressCounter:2 vCard:vcard];
// url
vcard = [self urlToVcardFieldURL:@”www.apple.com” label:@”HOME” URLCounter:1 vCard:vcard]; //url, urlLabel
vcard = [self urlToVcardFieldURL:@”www.google.com” label:@”WORK” URLCounter:2 vCard:vcard]; //url, urlLabel
// IM SMS
NSDictionary *im = [[NSDictionary alloc]initWithObjectsAndKeys:
@”Apple Service”, @”service”,
@”Apple User Name”, @”username”, nil];
vcard = [self imToVcardFieldIm:im label:@”HOME” IMCounter:1 vCard:vcard]; //sms, smsLabel
// birthday
NSDate *birthday = @”1/1/2011″; //birthday
if (birthday)
{
NSString *bday = [NSString stringWithFormat:@”%@”,birthday];
NSArray *bdayArr = [bday componentsSeparatedByString:@” “];
bday = [bdayArr objectAtIndex:0];
vcard = [vcard stringByAppendingFormat:@”BDAY;value=date:%@n”,bday];
}
// Photo
NSData *imageData = UIImageJPEGRepresentation([UIImage imageNamed:@”Own_Selected”], 0.0);//imageData;
if (imageData)
{
vcard = [vcard stringByAppendingFormat:@”PHOTO;BASE64:%@n”,[imageData base64Encoding]];
}
// end
vcard = [vcard stringByAppendingString:@”END:VCARD”];
NSLog(@”%@”,vcard);
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents directory
NSLog(@”%@”,documentsDirectory);
NSError *error;
BOOL succeed = [vcard writeToFile:[documentsDirectory stringByAppendingPathComponent:@”contact.vcf”]
atomically:YES encoding:NSUTF8StringEncoding error:&error];
if (!succeed){
// Handle error here
NSLog(@”Error”);
}
}
– (NSString *)emailToVcardFieldEmail:(NSString *)email label:(NSString *)label emailCounter:(NSInteger)counter vCard:(NSString*)vcard
{
// label = Home
// label = WORK
NSString *labelLower = [label lowercaseString];
if ([labelLower isEqualToString:@”_$!<home>!$_”]) vcard = [NSString stringWithFormat:@”EMAIL;type=INTERNET;type=HOME:%@n”,email];
else if ([labelLower isEqualToString:@”_$!<work>!$_”]) vcard = [NSString stringWithFormat:@”EMAIL;type=INTERNET;type=WORK:%@n”,email];
else
{
vcard = [vcard stringByAppendingFormat:@”item%d.EMAIL;type=INTERNET:%@nitem%d.X-ABLabel:%@n”,counter,email,counter,label];
}
return vcard;
}
– (NSString *)phoneToVcardFieldPhoneNo:(NSString *)phone label:(NSString *)label phoneCounter:(NSInteger)counter vCard:(NSString*)vcard
{
//MOBILE
//IPHONE
//HOME
//WORK
//MAIN
//HOMEFAX
//WORKFAX
//PAGER
NSString *labelLower = [label lowercaseString];
if ([labelLower isEqualToString:@”_$!<mobile>!$_”]) vcard = [NSString stringWithFormat:@”TEL;type=CELL:%@n”,phone];
else if ([labelLower isEqualToString:@”_$!<iphone!$_”]) vcard = [NSString stringWithFormat:@”TEL;type=IPHONE:%@n”,phone];
else if ([labelLower isEqualToString:@”_$!<home>!$_”]) vcard = [NSString stringWithFormat:@”TEL;type=HOME:%@n”,phone];
else if ([labelLower isEqualToString:@”_$!<work>!$_”]) vcard = [NSString stringWithFormat:@”TEL;type=WORK:%@n”,phone];
else if ([labelLower isEqualToString:@”_$!<main>!$_”]) vcard = [NSString stringWithFormat:@”TEL;type=MAIN:%@n”,phone];
else if ([labelLower isEqualToString:@”_$!<homefax>!$_”]) vcard = [NSString stringWithFormat:@”TEL;type=HOME;type=FAX:%@n”,phone];
else if ([labelLower isEqualToString:@”_$!<workfax>!$_”]) vcard = [NSString stringWithFormat:@”TEL;type=WORK;type=FAX:%@n”,phone];
else if ([labelLower isEqualToString:@”_$!<pager>!$_”]) vcard = [NSString stringWithFormat:@”TEL;type=PAGER:%@n”,phone];
else
{
// if not showing phone number in outlook express in window use below code
// vcard = [vcard stringByAppendingFormat:@”TEL;TYPE=%@,VOICE:%@n”,label,phone];
vcard = [vcard stringByAppendingFormat:@”item%d.TEL:%@nitem%d.X-ABLabel:%@n”,counter,phone,counter,label];
}
return vcard;
}
– (NSString *)addressToVcardFieldAddress:(NSDictionary *)address label:(NSString *)label AddressCounter:(NSInteger)counter vCard:(NSString*)vcard
{
//WORK
//HOME
NSString *labelField = @””;
NSString *labelLower = [label lowercaseString];
NSString *type = @”HOME”;
//
if([labelLower isEqualToString:@”_$!<work>!$_”]) type = @”WORK”;
else if([labelLower isEqualToString:@”_$!<home>!$_”]) {}
else if( label && [label length] > 0 )
{
labelField = [NSString stringWithFormat:@”item%d.X-ABLabel:%@n”,counter,label];
}
//
NSString *street = [address objectForKey:@”Street”] ? [address objectForKey:@”Street”] : @””;
if ([street rangeOfString:@”n”].location != NSNotFound)
{
NSArray *arr = [street componentsSeparatedByString:@”n”];
street = [arr componentsJoinedByString:@”n”];
}
NSString *City = [address objectForKey:@”City”] ? [address objectForKey:@”City”] : @””;
NSString *State = [address objectForKey:@”State”] ? [address objectForKey:@”State”] : @””;
NSString *ZIP = [address objectForKey:@”ZIP”] ? [address objectForKey:@”ZIP”] : @””;
NSString *Country = [address objectForKey:@”Country”] ? [address objectForKey:@”Country”] : @””;
NSString *CountryCode = [address objectForKey:@”CountryCode”] ? [address objectForKey:@”CountryCode”] : @””;
//
vcard = [vcard stringByAppendingFormat:@”item%d.ADR;type=%@:;;%@;%@;%@;%@;%@n%@item%d.X-ABADR:%@n”,
counter,
type,
street,
City,
State,
ZIP,
Country,
labelField,
counter,
CountryCode
];
//
return vcard;
}
– (NSString *)urlToVcardFieldURL:(NSString *)url label:(NSString *)label URLCounter:(NSInteger)counter vCard:(NSString*)vcard
{
//HOME
//WORK
NSString *labelLower = [label lowercaseString];
if ([labelLower isEqualToString:@”_$!<home>!$_”]) vcard = [NSString stringWithFormat:@”URL;type=HOME:%@n”,url];
else if ([labelLower isEqualToString:@”_$!<work>!$_”]) vcard = [NSString stringWithFormat:@”URL;type=WORK:%@n”,url];
else
{
vcard = [vcard stringByAppendingFormat:@”item%d.URL:%@nitem%d.X-ABLabel:%@n”,counter,url,counter,label];
}
return vcard;
}
– (NSString *)imToVcardFieldIm:(NSDictionary *)im label:(NSString *)label IMCounter:(NSInteger)counter vCard:(NSString*)vcard
{
//HOME
//WORK
NSString *labelLower = [label lowercaseString];
NSString *service = [im objectForKey:@”service”] ? [im objectForKey:@”service”] : @””;
service = [service uppercaseString];
NSString *username = [im objectForKey:@”username”] ? [im objectForKey:@”username”] : @””;
//
if ([labelLower isEqualToString:@”_$!<home>!$_”] || [labelLower isEqualToString:@”_$!<work>!$_”])
{
NSString *type = [labelLower isEqualToString:@”_$!<home>!$_”] ? @”HOME” : @”WORK”;
vcard = [NSString stringWithFormat:@”X-%@;type=%@:%@n”,service,type,username];
}
else
{
vcard = [vcard stringByAppendingFormat:@”item%d.X-%@:%@nitem%d.X-ABLabel:%@n”,counter,service,username,counter,label];
}
return vcard;
}