iOS:如何获取所有者的电子邮件地址?

在iOS中,如何读取存储在iPhone中的所有者电子邮件地址? 在我的应用程序中,我想让用户select他想要与自定义服务关联的电子邮件地址。 在Android上,我会让他select他的GMail地址,但在iOS上,似乎没有select获得苹果电子邮件,对不对? 那么是否有可能检索所有存储的电子邮件地址,并让用户select其中的一个? 我真的需要一个电子邮件地址。 一个唯一的ID,设备ID或类似的将无法与我想达到的。

谢谢

为什么不出示地址簿,并让用户select和电子邮件地址?

将AddressBook和AddressBookUI框架添加到您的项目中。 在你的.h中导入它们并添加协议ABPeoplePickerNavigationControllerDelegate。

然后打电话给地址簿:

- (void) chooseContact:(id)sender { ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init]; picker.peoplePickerDelegate = self; [self presentModalViewController:picker animated:YES]; [picker release]; } 

您需要实现几个必需的委托方法来获取电子邮件地址并closures通讯簿:

 // call when the user cancel - (void) peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker { [self dismissModalViewControllerAnimated:YES]; } 

让用户input联系方式:

 - (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person { return YES; } 

然后用你select的电子邮件地址做你自己:

 - (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier { if (property == kABPersonEmailProperty) { //assumed you have a property email in your class self.email = (NSString *)ABRecordCopyValue(person, kABPersonEmailProperty); [self dismissModalViewControllerAnimated:YES]; } return NO; } 

没有你不能得到的电子邮件列表,我们用来发送电子邮件通过我们的应用程序的默认邮件应用程序只让你检查用户是否可以发送电子邮件或不是一个邮件帐户已configuration或不是一个邮件帐户已configuration

根据苹果的指导方针,你将不得不问问用户。 另外,苹果公司并不十分热衷于将私人信息,如电子邮件,强制性的。

您可以通过地址簿循环查找联系人中的所有者标签,但请注意,Apple将在即将到来的iOS版本中通知用户某应用正在访问通讯录,因此用户可能不允许您的应用访问该地址书。