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

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

CTCall的基本使用spa

(1)初始化callorm

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);class

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。
相关文章
相关标签/搜索