CTCall简介(后续会继续补充)

使用CTCall需要导入CoreTelephony.framework框架。

CTCall的基本使用

(1)初始化call

CFStringRef number = CFSTR("15555555555");
CTCallRef call = CTCallDial(number);// 创建并拨号
...
CTCallHold(call);// 保持通话
...
CTCallResume(call);// 恢复通话
...
CTCallDisconnect(call);// 结束通话

注意:传给
CTCallDial方法的参数,必须是规范化的电话号码。如:+1 (555) 555-5555 规范化后为 15555555555。
那么如何获取规范化的号码呢:你可以使用 CPPhoneNumberCopyNormalized方法来规范化一个电话号码。

(2)获取通话记录使用 _CTCallCopyAllCalls 方法获取所有的通话记录,这个列表中的每个元素都是CTCall。CFArrayRef calls = _CTCallCopyAllCalls();NSLog(@"Calls: %@", calls);

CFRelease(calls);



(3)补充CPPhoneNumber
上文提到过,在创建CTCall的时候,传进去的参数必须是规范化的电话号码。那么用于处理电话号码的东东就是CPPhoneNumber啦。现在来介绍下CPPhoneNumber的功能和使用。
CPPhoneNumber的功能使用最多的就是规范化电话号码和比较两个电话号码。
  <1>规范化电话号码:CPPhoneNumberCopyNormalized 该方法返回一个规范化的号码copy
extern "C" char *CPPhoneNumberCopyNormalized(const char* number);
  char *pn = CPPhoneNumberCopyNormalized("+1 (555) 555-5555");
  printf("%s\n", pn); // 15555555555
  free(pn);
   <2>比较两个号码:CPPhoneNumbersEqual 该方法会把传进来的两个号码自动格式化后,再进行比较,相同为真,不同为假。国家代码这个参数,在两个电话号码里面有不包含国家代码的时候,需要额外提供一个。
  extern "C" CFStringRef CPPhoneNumberCopyHomeCountryCode();
  extern "C" BOOL CPPhoneNumbersEqual(const char* number1, const char* number2, CFStringRef country);
  BOOL equal = CPPhoneNumbersEqual("+49302270", "0302270", CPPhoneNumberCopyHomeCountryCode()); // 如果连个号码都是+49(德国)的,那么这两个号码相同,返回yes。
 
 
posted @ 2015-08-31 12:21  AppLiu  阅读(459)  评论(0编辑  收藏  举报