2012-12-27 9 views
5

मैं एड्रेसबुक में एक नया संपर्क बनाना चाहता हूं। समस्या तब प्रकट होती है जब आप अधिक यूआरएल (कुछ सामाजिक नेटवर्क पर वेब पते) स्टोर करना चाहते हैं। मेरा कोड आईओएस 6 के सिम्युलेटर में पूरी तरह से काम करता है। लेकिन आईओएस 6 के साथ असली आईफोन में, यूआरएल को छोड़कर सभी मूल्यों को स्टोर करता है। मुझे कुछ दिनों की तलाश है और समाधान नहीं मिल रहा है, अगर कोई मदद कर सकता है तो मैं बहुत आभारी रहूंगा।मल्टी वैल्यू यूआरएल एड्रेसबुक आईफोन

मेरे कोड:

-(void) addContactToAddressBook:(ABAddressBookRef) iPhoneAddressBook 
{ 

    CFErrorRef error = NULL; 

    ABRecordRef newPerson = ABPersonCreate(); 

    //Name and phone number 
    ABRecordSetValue(newPerson, kABPersonFirstNameProperty, (__bridge CFStringRef)_nameField.text, &error); 
    ABMutableMultiValueRef multiPhone = ABMultiValueCreateMutable(kABMultiStringPropertyType); 
    ABMultiValueAddValueAndLabel(multiPhone, (__bridge CFStringRef)_phoneField.text, kABPersonPhoneMainLabel, NULL); 
    ABRecordSetValue(newPerson, kABPersonPhoneProperty, multiPhone,nil); 

    //Email value 
    ABMutableMultiValueRef emailMultiValue = ABMultiValueCreateMutable(kABMultiStringPropertyType); 
    ABMultiValueAddValueAndLabel(emailMultiValue, (__bridge CFStringRef)_emailField.text, kABWorkLabel, NULL); 
    ABRecordSetValue(newPerson, kABPersonEmailProperty, emailMultiValue, nil); 
    CFRelease(emailMultiValue); 

    //URL values 
    ABMutableMultiValueRef urlMultiValue = ABMultiValueCreateMutable(kABMultiStringPropertyType); 
    ABMultiValueAddValueAndLabel(urlMultiValue, (__bridge CFStringRef)_FacebookField.text, (CFStringRef)@"Facebook", NULL); 
    ABMultiValueAddValueAndLabel(urlMultiValue, (__bridge CFStringRef)_twitterField.text, (CFStringRef)@"Twitter", NULL); 
    ABMultiValueAddValueAndLabel(urlMultiValue, (__bridge CFStringRef)_linkedinField.text, (CFStringRef)@"Linkedin", NULL); 
    ABMultiValueAddValueAndLabel(urlMultiValue, (__bridge CFStringRef)_googleField.text, (CFStringRef)@"Google+", NULL); 
    ABRecordSetValue(newPerson, kABPersonURLProperty, urlMultiValue, nil); 
    CFRelease(urlMultiValue); 

    ABAddressBookAddRecord(iPhoneAddressBook, newPerson, &error); 

    ABAddressBookSave(iPhoneAddressBook, &error); 
    if (error != NULL) 
    { 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Contact not saved" delegate:nil cancelButtonTitle:@"Cancel" otherButtonTitles:nil, nil]; 
     [alert show]; 
    }else{ 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Contact saved" message:@"Your contact was successfully saved" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil]; 
     [alert show]; 
    } 
} 

धन्यवाद!

+0

क्या कोई मेरी मदद कर सकता है? मुझे कोई समाधान नहीं मिल रहा है .... धन्यवाद। – Joan

उत्तर

0

सेब की साइट पर प्रलेखन के अनुसार (पृष्ठ के मध्य में गोपनीयता पर स्क्रॉल करें), पता पुस्तिका तक पहुंच प्रोग्रामेटिक रूप से पहुंचने से पहले दी जानी चाहिए। यहां मैं क्या कर रहा हूं।

-(void)requestPermission 
{ 
     ABAddressBookRef iPhoneAddressBook = ABAddressBookCreateWithOptions(NULL, NULL); 

     if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusNotDetermined) { 
      ABAddressBookRequestAccessWithCompletion(iPhoneAddressBook, ^(bool granted, CFErrorRef error) { 
       if (granted) { 
        // First time access has been granted, add the contact 
        [self addContactToAddressBook:iPhoneAddressBook]; 
       } else { 
        // User denied access 
        // Display an alert telling user the contact could not be added 
       } 
      }); 
     } 
     else if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusAuthorized) { 
      // The user has previously given access, add the contact 
      [self addContactToAddressBook:iPhoneAddressBook]; 
     } 
     else { 
      // The user has previously denied access 
      // Send an alert telling user to change privacy setting in settings app 
     } 

    } 

-(void)addContactToAddressBook:(ABAddressBookRef)iPhoneAddressBook 
{ 
    CFErrorRef error = NULL; 
    ABRecordRef newPerson = ABPersonCreate(); 

    //Name and phone number 
    ABRecordSetValue(newPerson, kABPersonFirstNameProperty, (__bridge CFStringRef)_nameField.text, &error); 
    ABMutableMultiValueRef multiPhone = ABMultiValueCreateMutable(kABMultiStringPropertyType); 
    ABMultiValueAddValueAndLabel(multiPhone, (__bridge CFStringRef)_phoneField.text, kABPersonPhoneMainLabel, NULL); 
    ABRecordSetValue(newPerson, kABPersonPhoneProperty, multiPhone,nil); 
    CFRelease(multiPhone); 

    //Email value 
    ABMutableMultiValueRef emailMultiValue = ABMultiValueCreateMutable(kABMultiStringPropertyType); 
    ABMultiValueAddValueAndLabel(emailMultiValue, (__bridge CFStringRef)_emailField.text, kABWorkLabel, NULL); 
    ABRecordSetValue(newPerson, kABPersonEmailProperty, emailMultiValue, nil); 
    CFRelease(emailMultiValue); 

    //URL values 
    ABMutableMultiValueRef urlMultiValue = ABMultiValueCreateMutable(kABMultiStringPropertyType); 
    ABMultiValueAddValueAndLabel(urlMultiValue, (__bridge CFStringRef)_FacebookField.text, (CFStringRef)@"Facebook", NULL); 
    ABMultiValueAddValueAndLabel(urlMultiValue, (__bridge CFStringRef)_twitterField.text, (CFStringRef)@"Twitter", NULL); 
    ABMultiValueAddValueAndLabel(urlMultiValue, (__bridge CFStringRef)_linkedinField.text, (CFStringRef)@"Linkedin", NULL); 
    ABMultiValueAddValueAndLabel(urlMultiValue, (__bridge CFStringRef)_googleField.text, (CFStringRef)@"Google+", NULL); 
    ABRecordSetValue(newPerson, kABPersonURLProperty, urlMultiValue, nil); 
    CFRelease(urlMultiValue); 

    // ... 
    // Set other properties 
    // ... 
    ABAddressBookAddRecord(iPhoneAddressBook, newPerson, &error); 

    ABAddressBookSave(iPhoneAddressBook, &error); 
    CFRelease(newPerson); 
    CFRelease(iPhoneAddressBook); 
    if (error != NULL) 
    { 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Contact not saved" delegate:nil cancelButtonTitle:@"Cancel" otherButtonTitles:nil, nil]; 
     [alert show]; 
    }else{ 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Contact saved" message:@"Your contact was successfully saved" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil]; 
     [alert show]; 
    } 
} 
संबंधित मुद्दे