ios开发:获取手机通讯录、发送短信
2013-10-12 09:57
417 查看
//发送短信 bodyofmessage 为短信文本内容,recipients可为空
- (void)sendSMS:(NSString *)bodyOfMessage recipientList:(NSArray *)recipients
{
MFMessageComposeViewController *controller = [[MFMessageComposeViewController
alloc] init];
if([MFMessageComposeViewController
canSendText])
{
controller.body = bodyOfMessage;
controller.recipients = recipients;
controller.messageComposeDelegate =
self;
[self
presentViewController:controller animated:YES
completion:nil];//:controller animated:YES];
}
}
// 处理发送完的响应结果
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result
{
[self
dismissViewControllerAnimated:YES
completion:nil];
if (result ==
MessageComposeResultCancelled)
{
NSLog(@"Message cancelled");
}
else
if (result == MessageComposeResultSent)
{
NSLog(@"Message sent");
}
else
{
NSLog(@"Message failed") ;
}
}
//获取手机号码数组
-(NSArray *)getPhoneNumber{
NSMutableArray *array=[[NSMutableArray
alloc]initWithObjects:nil,
nil];
ABAddressBookRef addressBook =
nil;//ABAddressBookCreateWithOptions(nil, nil);
if ([UIDevice
currentDevice].systemVersion.floatValue>=6.0) {
addressBook=ABAddressBookCreateWithOptions(NULL,
NULL);
dispatch_semaphore_t sema=dispatch_semaphore_create(0);
ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted,
CFErrorRef error)
{
dispatch_semaphore_signal(sema);
});
dispatch_semaphore_wait(sema,
DISPATCH_TIME_FOREVER);
//dispatch_release(sema);
}
else
{
addressBook=ABAddressBookCreateWithOptions(NULL,
NULL);
}
CFArrayRef results =
ABAddressBookCopyArrayOfAllPeople(addressBook);
for(int i =
0; i < CFArrayGetCount(results); i++)
{
ABRecordRef person =
CFArrayGetValueAtIndex(results, i);
//读取firstname
//读取电话多值
ABMultiValueRef phone =
ABRecordCopyValue(person,
kABPersonPhoneProperty);
for (int k =
0; k<ABMultiValueGetCount(phone); k++)
{
//获取电话Label
// NSString * personPhoneLabel = (__bridge NSString*)ABAddressBookCopyLocalizedLabel(ABMultiValueCopyLabelAtIndex(phone, k));
//获取該Label下的电话值
NSString * personPhone = (__bridge
NSString*)ABMultiValueCopyValueAtIndex(phone, k);
NSLog(@"%@",personPhone);
[array addObject:personPhone];
}
}
return array;
CFRelease(results);
CFRelease(addressBook);
}
- (void)sendSMS:(NSString *)bodyOfMessage recipientList:(NSArray *)recipients
{
MFMessageComposeViewController *controller = [[MFMessageComposeViewController
alloc] init];
if([MFMessageComposeViewController
canSendText])
{
controller.body = bodyOfMessage;
controller.recipients = recipients;
controller.messageComposeDelegate =
self;
[self
presentViewController:controller animated:YES
completion:nil];//:controller animated:YES];
}
}
// 处理发送完的响应结果
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result
{
[self
dismissViewControllerAnimated:YES
completion:nil];
if (result ==
MessageComposeResultCancelled)
{
NSLog(@"Message cancelled");
}
else
if (result == MessageComposeResultSent)
{
NSLog(@"Message sent");
}
else
{
NSLog(@"Message failed") ;
}
}
//获取手机号码数组
-(NSArray *)getPhoneNumber{
NSMutableArray *array=[[NSMutableArray
alloc]initWithObjects:nil,
nil];
ABAddressBookRef addressBook =
nil;//ABAddressBookCreateWithOptions(nil, nil);
if ([UIDevice
currentDevice].systemVersion.floatValue>=6.0) {
addressBook=ABAddressBookCreateWithOptions(NULL,
NULL);
dispatch_semaphore_t sema=dispatch_semaphore_create(0);
ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted,
CFErrorRef error)
{
dispatch_semaphore_signal(sema);
});
dispatch_semaphore_wait(sema,
DISPATCH_TIME_FOREVER);
//dispatch_release(sema);
}
else
{
addressBook=ABAddressBookCreateWithOptions(NULL,
NULL);
}
CFArrayRef results =
ABAddressBookCopyArrayOfAllPeople(addressBook);
for(int i =
0; i < CFArrayGetCount(results); i++)
{
ABRecordRef person =
CFArrayGetValueAtIndex(results, i);
//读取firstname
//读取电话多值
ABMultiValueRef phone =
ABRecordCopyValue(person,
kABPersonPhoneProperty);
for (int k =
0; k<ABMultiValueGetCount(phone); k++)
{
//获取电话Label
// NSString * personPhoneLabel = (__bridge NSString*)ABAddressBookCopyLocalizedLabel(ABMultiValueCopyLabelAtIndex(phone, k));
//获取該Label下的电话值
NSString * personPhone = (__bridge
NSString*)ABMultiValueCopyValueAtIndex(phone, k);
NSLog(@"%@",personPhone);
[array addObject:personPhone];
}
}
return array;
CFRelease(results);
CFRelease(addressBook);
}
相关文章推荐
- IOS程序开发之跳转短信发送界面实现发送短信功能
- ios开发 短信的发送(SMS)的发送
- 【Android 开发教程】获取发送短信后的反馈
- iOS开发获取手机通讯录中的电话号码和姓名
- iOS开发中调用网址、拨打电话、发送短信、发送邮件
- IOS越狱开发之短信--发送内容修改
- iOS开发获取手机通讯录中的电话号码和姓名
- IOS开发 获取手机通讯录
- iOS开发之发送短信
- IOS开发之_短信发送与拨打电话
- IOS程序开发之跳转短信发送界面实现发送短信功能
- IOS程序开发中-跳转到 发送短信界面 实现发短信
- IOS开发 短信发送
- iOS 开发 SMSSDK-免费短信获取的实现方法
- iOS开发 MFMessageComposeViewController(发送短信)的使用
- iOS开发之调用系统发短信接口发送指定短信
- iOS开发中实现邮件和短信发送的简单示例
- iOS获取系统短信,发送指定短信内容
- iOS开发跳转到发送短信界面并实现发短信
- iOS开发-发送邮件及短信