Now, I want to learn how to add a contact to your iOS Phone AddressBook!
First download my last source code from :
https://sourceforge.net/p/dpfdelphiios/code/
and see AddressBookAdd demo,
I added AddAddressBook procedure to TDPFAddressBook component :
function TDPFAddressBook.AddAddressBook( FirstName: string; LatName: string; PhoneNumbers: array of TPhoneNumbers ): Boolean;
var
Person : ABRecordRef;
error : CFErrorRef;
addressBook : ABAddressBookRef;
phoneNumberMultiValue: ABMutableMultiValueRef;
venuePhoneNumbers : NSMutableArray;
I : Integer;
s : string;
begin
result := false;
addressBook := ABAddressBookCreateWithOptions( nil, &error );
Person := ABPersonCreate;
if not Assigned( Person ) then
exit;
// FirsName & LastName
result := ABRecordSetValue( Person, 0, PNSSTR( FirstName ), &error );
if not result then
exit;
result := ABRecordSetValue( Person, 1, PNSSTR( LatName ), &error );
if not result then
exit;
result := ABAddressBookAddRecord( addressBook, Person, &error );
if not result then
exit;
// Phone
phoneNumberMultiValue := ABMultiValueCreateMutable( kABMultiStringPropertyType );
for I := low( PhoneNumbers ) to high( PhoneNumbers ) do
begin
if PhoneNumbers[I].PhoneLabel = '' then
PhoneNumbers[I].PhoneLabel := kABPersonPhoneMainLabel;
ABMultiValueAddValueAndLabel( phoneNumberMultiValue, PNSSTR( PhoneNumbers[I].PhoneNumber ), CFSTR( PhoneNumbers[I].PhoneLabel ), 0 );
end;
result := ABRecordSetValue( person, 3, phoneNumberMultiValue, nil );
CFRelease( phoneNumberMultiValue );
if not result then
exit;
// Save to AddressBook
if ABAddressBookHasUnsavedChanges( addressBook ) then
result := ABAddressBookSave( addressBook, &error );
exit;
end;
for using this function, you can call like this:
procedure TFPeoplePicker.DPFAddressBook1RequestAccess( Sender: TObject; const Granted: Boolean );
var
p: array [0 .. 2] of TPhoneNumbers;
begin
P[0].PhoneNumber := '+98912xxxxx';
P[0].PhoneLabel := 'mobile';
P[1].PhoneNumber := '+982188xxxxx';
P[1].PhoneLabel := 'work';
P[2].PhoneNumber := '+982188xxxxx';
P[2].PhoneLabel := ''; // <-- contact’s primary number
if Granted then
DPFAddressBook1.AddAddressBook( 'Babak', 'Yaghoobi', p )
else
ShowMessage( 'Go to Setting->Privacy->Contacts and switch on this application' );
end;
Enjoy Delphi iOS Native Programming !

No comments:
Post a Comment