iOS 調(diào)用系統(tǒng)通訊錄,獲取聯(lián)系人信息;適配 iOS9;發(fā)送短信(群發(fā)/單發(fā) 指定信息)

一、 調(diào)用系統(tǒng)通訊錄,獲取聯(lián)系人信息

  • iOS9 之前的 <AddressBook/AddressBook.h> 和 <AddressBookUI/AddressBookUI.h> 框架

常用的一個(gè)代理方法

// Called after a property has been selected by the user.
- (void)peoplePickerNavigationController:(ABPeoplePickerNavigationController*)peoplePicker didSelectPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier NS_AVAILABLE_IOS(8_0);
  • iOS9 之后的 <Contacts/Contacts.h> 和 <ContactsUI/ContactsUI.h>框架

常用的兩個(gè)代理方法

- (void)contactPicker:(CNContactPickerViewController *)picker didSelectContactProperty:(CNContactProperty *)contactProperty;
- (void)contactPicker:(CNContactPickerViewController *)picker didSelectContact:(CNContact *)contact;

當(dāng)上面兩個(gè)代理方法都存在時(shí), 只會執(zhí)行后者。

  • 若只是獲取姓名/電話信息, 用前者。 獲取的是 contactProperty
// 通訊錄列表 - 點(diǎn)擊某個(gè)聯(lián)系人 - 詳情頁 - 點(diǎn)擊一個(gè)號碼, 返回
- (void)contactPicker:(CNContactPickerViewController *)picker didSelectContactProperty:(CNContactProperty *)contactProperty {

    /** 姓名 */
    NSString *personName = [NSString stringWithFormat:@"%@%@", contactProperty.contact.familyName, contactProperty.contact.givenName];
    /** 電話 */
    NSString *phoneNumber = [contactProperty.value stringValue];
}
  • 若要進(jìn)入詳情頁,撥打電話/編輯等,用后者。獲取的是: contact
- (void)contactPicker:(CNContactPickerViewController *)picker didSelectContact:(CNContact *)contact {
    
    // 選中聯(lián)系人后跳轉(zhuǎn)詳情頁, 跟從手機(jī)系統(tǒng)進(jìn)入一樣, 可以撥打電話、編輯聯(lián)系人.
    CNContactViewController *contactVC = [CNContactViewController viewControllerForContact:contact];
    [self.navigationController pushViewController:contactVC animated:YES];
    
    /**
     *  還可以通過viewControllerForNewContact新增聯(lián)系人
     *  注意:通過其他方式進(jìn)入詳情頁, 用 modal
     */
}

二、發(fā)信息


1. 導(dǎo)入 MessageUI 框架:  #import <MessageUI/MessageUI.h>
2. 服從協(xié)議:MFMessageComposeViewControllerDelegate
3. 配置方法,指定代理,并實(shí)現(xiàn)代理方法

/** 群發(fā)/單發(fā) 指定信息 */
- (void)sendContacts:(NSArray*)phoneNumbers message:(NSString *)message {
    Class messageClass = (NSClassFromString(@"MFMessageComposeViewController"));
    if(messageClass != nil){
        MFMessageComposeViewController *messageVC = [[MFMessageComposeViewController alloc]init];
        messageVC.messageComposeDelegate = self;
        messageVC.body = message;
        messageVC.recipients = phoneNumbers;
        [self presentViewController:messageVC animated:YES completion:nil];
    }else {
        //        Have error here ...
    }
    
}


/** 發(fā)送信息后的回調(diào)方法  **/
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result {
    
    [self dismissViewControllerAnimated:YES completion:^{}];
    
    switch (result) {
        case MessageComposeResultCancelled:
            
            break;
        case MessageComposeResultSent:
            
            break;
        case MessageComposeResultFailed:
            
            break;
            
        default:
            break;
    }
}

點(diǎn)此下載源碼

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 概述在iOS開發(fā)中UITableView可以說是使用最廣泛的控件,我們平時(shí)使用的軟件中到處都可以看到它的影子,類似...
    liudhkk閱讀 9,296評論 3 38
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,007評論 25 709
  • 使用場景 一些App通過手機(jī)號碼來推薦好友,如 微博、支付寶 首先客戶端會獲取通訊錄中的所有手機(jī)號然后將這些手機(jī)號...
    剛哥001閱讀 2,212評論 2 0
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,250評論 4 61
  • 怎么說呢 這一段時(shí)間 什么心情都有過 等著我 過成我想要的生活。
    吳baby閱讀 412評論 0 0

友情鏈接更多精彩內(nèi)容