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

16
在iOS中,我该如何读取存储在iPhone中的所有者电子邮件地址?在我的应用程序中,我想让用户选择要与自定义服务相关联的电子邮件地址。在Android上,我会让他选择他的GMail地址,但在iOS上,似乎没有选项可以获取苹果ID电子邮件,对吗?那么是否有可能检索所有存储的电子邮件地址并让用户选择其中一个?我真的需要一个电子邮件地址。唯一的 ID、设备 ID 或类似的内容不适用于我想要实现的功能。

谢谢

3个回答

10

为什么不展示地址簿并让用户选择电子邮件地址?

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

然后调用地址簿:

- (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
根据苹果的指南,您需要询问用户。此外,苹果不太热衷于将私人信息(如电子邮件)设为强制性。
您可以循环遍历通讯录并查找联系人中的所有者标签,但请注意,苹果将在即将发布的iOS版本中通知用户应用正在访问通讯录,因此用户可能不允许您的应用程序访问通讯录。

由于我的应用程序纯粹用于内部研究(永远不会进入应用商店),而且我已经要求用户允许访问联系人 - 请您能否再详细说明一下如何检索“所有者标记”?我找不到它。在扫描联系人时,我怎么知道哪个被标记为“我的名片”? - Motti Shneor

1

不可以获取电子邮件列表,我们使用的默认邮件应用程序只能让您检查用户是否可以发送电子邮件,它会检查至少一个邮件帐户是否已配置。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接