首先说需求,我们做的一个OA系统,然后要往公司里面添加人员,现在从app中跳转到联系人界面,然后点击联系人跳转到消息界面,发送指定消息内容。完毕
首先我们是要获取通讯录访问权限 plist文件中添加 Privacy - Contacts Usage Description -请求访问通讯录
然后引入框架
#import <ContactsUI/ContactsUI.h>
#import <Contacts/Contacts.h>
#import <MessageUI/MessageUI.h>
#import <MessageUI/MFMessageComposeViewController.h>
然后遵守代理 <CNContactPickerDelegate,MFMessageComposeViewControllerDelegate>
然后就是你的调通讯录的点击事件了
- (void)click {
前面要判断授权状态
//这个会跳转到通讯录
CNContactPickerViewController * contactVc = [CNContactPickerViewController new];
contactVc.delegate = self;
[self presentViewController:contactVc animated:YES completion:nil];
}
下面这个代码为点击联系人 然后获取联系人信息 进行跳转到发送消息界面
#pragma mark -CNContactPickerDelegate-
- (void)contactPicker:(CNContactPickerViewController *)picker didSelectContact:(CNContact *)contact {
// NSLog(@"选中某一个联系人时调用---------------------------------");
// [self printContactInfo:contact];
NSMutableArray *phoneNumbers = [NSMutableArray array];
for (CNLabeledValue *labeledValue in contact.phoneNumbers){
CNPhoneNumber *phoneValue = labeledValue.value;
NSString * phoneNumber = phoneValue.stringValue;
NSLog(@"number: %@",phoneNumber);
NSString *phoneNum = [self phoneNumberFormat:phoneNumber];
[phoneNumbers addObject:phoneNum];
}
//
Class messageClass = (NSClassFromString(@"MFMessageComposeViewController"));
if (messageClass) {
if ([MFMessageComposeViewController canSendText]){
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self displaySMSComposerSheetWithPhoneString:phoneNumbers];
});
}else{
}
}
}
- (void)displaySMSComposerSheetWithPhoneString:(NSArray *)phoneNumbers{
self.picker = [[MFMessageComposeViewController alloc] init];
if ([MFMessageComposeViewController canSendText]) {
_picker.messageComposeDelegate = self;
_picker.recipients = @[@"18511460628"];
_picker.body = @"加入我们";
//下面的代码为发消息界面添加一个取消按钮 不然会返回不回来
UINavigationItem *navigationItem = [[[_picker viewControllers]lastObject]navigationItem];
[navigationItem setTitle:@"新信息"];
UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];
[button setFrame:CGRectMake(0, 0, 40, 20)];
//取消按
[button setTitle:@"取消" forState:UIControlStateNormal];
button.titleLabel.font = [UIFont systemFontOfSize:17.0];
[button addTarget:self action:@selector(msgBackFun) forControlEvents:UIControlEventTouchUpInside];
navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button];
[self presentViewController:_picker animated:YES completion:nil];
}
}
然后为消息点击发送以后 跳回到app界面
//通讯录手机号转换纯数字
- (NSString *)phoneNumberFormat:(NSString *)phoneNum{
NSRegularExpression *regular = [NSRegularExpression regularExpressionWithPattern:@"[^\\d]" options:0 error:NULL];
phoneNum = [regular stringByReplacingMatchesInString:phoneNum options:0 range:NSMakeRange(0, [phoneNum length]) withTemplate:@""];
return phoneNum;
}
//短信界面返回
- (void)msgBackFun {
[self.picker dismissViewControllerAnimated:YES completion:nil];
}