智慧服务,成就美好体验 项目咨询

主页 > 服务与支持 > 开发平台 > 客户端SDK参考 > iOS Native SDK > 企业通讯录 搜索联系人

入门使用

搜索联系人

更新时间:2019-11-20

描述

用户可以查询所有部门里面联系人的详细信息。

已完成组件的初始化和登录。

业务流程

图1 搜索联系人详情流程 
  1. UI调用tsdk_search_contacts()搜索联系人信息。
    说明: 

    传入的参数TSDK_S_SEARCH_CONTACTS_PARAM即为搜索联系人请求参数,包括:

    • 必选参数:

      搜索关键字、当前需要查找的页面索引(从1开始)、是否精确查找,以及当前查询序号。建议应用程序设置的查询序号从0开始递增,最大值0xFFFFFFFD(0xFFFFFFFE为SDK内部保留值)。

    • 可选参数:

      部门ID,若填写则在指定部门下查询。

    代码示例:
    - (void)searchContactWithParam:(SearchParam *)searchParam 
    {    
        TSDK_S_SEARCH_CONTACTS_PARAM *tsdkSearchParam = (TSDK_S_SEARCH_CONTACTS_PARAM *)malloc(sizeof(TSDK_S_SEARCH_CONTACTS_PARAM));    
        memset(tsdkSearchParam, 0, sizeof(TSDK_S_SEARCH_CONTACTS_PARAM));    
        if (searchParam.acSearchItem.length > 0 && searchParam.acSearchItem != nil) 
        {        
            strcpy(tsdkSearchParam->search_keyword, [searchParam.acSearchItem UTF8String]);    
        }    
        tsdkSearchParam->page_index = searchParam.ulPageIndex;    
        tsdkSearchParam->is_exact_search = searchParam.ulExactSearch;        
        if (searchParam.acDepId.length > 0 && searchParam.acDepId != nil && ![searchParam.acDepId isEqualToString:@"-1"])    
        {        
            strcpy(tsdkSearchParam->department_id, [searchParam.acDepId UTF8String]);    
        }    
        tsdkSearchParam->seq_no = searchParam.ulSeqNo;        
        TSDK_RESULT result = tsdk_search_contacts(tsdkSearchParam);    
        DDLogInfo(@"tsdk_search_contacts result: %d",result);    
        free(tsdkSearchParam);
    }
     
  2. SDK收到服务器下发的查询联系人信息结果,上报TSDK_E_EADDR_EVT_SEARCH_CONTACTS_RESULT的事件,通知给UI所查询的联系人信息内容。
    说明: 

    查询到的联系人信息包括:UC帐号、姓名、工号、IP号码、部门名字、职务、邮箱、手机号码、座机号码、家庭电话、性别、邮编、地址、签名和硬终端等内容。

    代码示例:
    case TSDK_E_EADDR_EVT_SEARCH_CONTACTS_RESULT: 
    {               
        DDLogInfo(@"TSDK_E_EADDR_EVT_SEARCH_CONTACTS_RESULT");                
        BOOL result = notification.param1 == TSDK_SUCCESS;                
        if (!result) 
        {                    
            DDLogError(@"TSDK_E_EADDR_EVT_SEARCH_CONTACTS_RESULT,error:%@",[NSString stringWithUTF8String:(TSDK_CHAR *)notification.data]);                    
            return;                
        }                
        TSDK_S_SEARCH_CONTACTS_RESULT *searchContactorResult = (TSDK_S_SEARCH_CONTACTS_RESULT *)notification.data;                                
        if (searchContactorResult == NULL) 
        {                    
            DDLogWarn(@"handleSearchContact result is empty.");                    
            return;                
        }                
        int pageIndex = searchContactorResult->page;                
        int totalNum = searchContactorResult->total_num;                
        TSDK_S_CONTACTS_INFO *pstContactorInfo = searchContactorResult->contact_info;                                
    //查询配置自己软终端号                
        if (notification.param2 == 100) 
        {                    
            if (pstContactorInfo != NULL) 
            {                        
                ContactInfo *contactInfo = [ContactInfo contactInfoTransformFrom:pstContactorInfo[0]];                        
                [[ManagerService callService] configBussinessAccount:contactInfo.terminal token:nil];                                                
                [eSpaceDBService sharedInstance].localDataManager = [[ESpaceLocalDataManager alloc] initWithUserAccount:contactInfo.staffAccount];                    
            }                    
            return;                
        }                               
        NSMutableArray *contactArray = [[NSMutableArray alloc] init];                
    // 搜索到的联系人结果放入联系人数组,传递给界面使用                
        for (int i = 0; i< totalNum; i++) 
        {                                        
            int lastTotal = totalNum - PAGE_ITEM_SIZE*(pageIndex-1);                    
            int endIndex = (lastTotal < PAGE_ITEM_SIZE) ? lastTotal : PAGE_ITEM_SIZE ;                    
            if (i == endIndex) 
            {                        
                 NSDictionary *resultInfo = @{
                     TUP_CONTACT_EVENT_RESULT_KEY : [NSNumber numberWithBool:result],TUP_CONTACT_KEY:contactArray 
                 };                        
                 [self respondsContactDelegateWithType:CONTACT_E_SEARCH_CONTACT_RESULT result:resultInfo];                        
                 return;                    
            }                   
            ContactInfo *contactInfo = [ContactInfo contactInfoTransformFrom:pstContactorInfo[i]];                    
            DDLogInfo(@"contactInfo.personName: %@",contactInfo.personName);                    
            [contactArray addObject:contactInfo];                
        }                
        NSDictionary *resultInfo = @{
            TUP_CONTACT_EVENT_RESULT_KEY : [NSNumber numberWithBool:result],TUP_CONTACT_KEY:contactArray
        };                
        [self respondsContactDelegateWithType:CONTACT_E_SEARCH_CONTACT_RESULT result:resultInfo];            
    }                
    break;
     

注意事项

无。