2012-02-23 120 views
13

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

谢谢

回答

9

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

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

然后调用ADRESS书:

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

你实现几个必要的委托方法来获得一个电子邮件地址,并关闭通讯簿:

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

让用户联系方式请输入:

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

然后做你所选择的电子邮件地址你:

- (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; 
} 
1

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

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

1

nope您无法获取电子邮件列表,我们用来通过我们的应用程序发送电子邮件的默认邮件应用程序只允许您检查用户是否可以发送电子邮件,不管它是否检查是否已安装一个邮件帐户配置与否

相关问题