iOS app跳转到通讯录 然后点击联系人 跳到消息界面 给用户发模版消息

首先说需求,我们做的一个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];
}

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值