目标c - 向地址簿中的某个联系人发送短信/电子邮件

时间:2012-09-02 17:29:29

标签: iphone ios object abpeoplepickerview

我正在使用ABPeoplePickerNavigationController来显示地址簿用户,并在shouldContinueAfterSelectingPerson中返回YE以查看用户的电话&电子邮件。
但是,当我点击手机或电子邮件时,没有任何反应..我希望它发送短信或电子邮件 这是我需要自己实现的吗?

我也在shouldContinueAfterSelectingPerson中返回YES,不应该这样做吗?

2 个答案:

答案 0 :(得分:5)

我很遗憾地说你面前有很多工作要做。首先,一旦用户选择了联系人,您需要自己提取电话或电子邮件。如果有多个电话号码或电子邮件地址,您可能应该通过使用UIActionSheet或表提示用户使用哪个电话号码或电子邮件地址。使用电话号码,您可以创建一个电话URL并将其发送到共享应用程序,从而进行呼叫(这里有很多关于如何进行调用的示例)。

使用电子邮件地址,您需要使用MFMailComposeViewController创建电子邮件,然后通过委托为用户添加一个已知地址。还有一个姐妹类,MFMessageComposeViewController,用于发送短信。

我为我的公司做了同样的事情,我花了大约3天的时间对整个事情进行编码和测试(所有3个选项)。

编辑:一个人可以拥有多个电话号码和电子邮件地址。你有两个选择:

  • 使用您已经使用的委托方法,返回NO,但保存用户点击的“属性”和“标识符”。这将是一个电话号码,电子邮件地址等(它也可能是一个地址,所以你需要深入探讨。你可以找到如何在这里或其他地方获得这两个值的确切属性的例子。

    < / LI>
  • 您可以使用“peoplePickerNavigationController:shouldContinueAfterSelectingPerson:”来向用户显示该人的属性,而只是表明这是他们有兴趣联系的人。通过该人员记录,您可以找到他们拥有多少个电子邮件地址,如果只有一个,那么您的工作就完成了。如果不是,你必须要求该人告诉你哪一个。 [我就是这样做的]

答案 1 :(得分:1)

我同意David H在他的回答中所说的,你有很多工作要做。为了帮助您,this将向您解释如何发送短信。

这里还有一个小代码片段,可以让您了解如何从地址簿记录中获取电话号码:

ABAddressBookRef addressBook = ABAddressBookCreate();
ABRecordRef record = ABPersonCreate();
ABMutableMultiValueRef multi;
record = ABAddressBookGetPersonWithRecordID(addressBook, contactID);
multi = ABRecordCopyValue(record, kABPersonPhoneProperty);
int multiCount = ABMultiValueGetCount(multi);
for(CFIndex i=0; i<multiCount; i++)
{
    [tempArrayPhones addObject:[NSString stringWithFormat:@"%@", (NSString *)ABMultiValueCopyValueAtIndex(multi, i)]];
}

同样,这不是一个完整的代码,只是一个片段给你一个想法。