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。
相關文章
相關標籤/搜索