關於iPhone上電話與短信相關功能,做一個簡單總結:
使用公開SDK能實現的功能:
(1)獲取和操作通訊錄。使用函數 ABAddressBookRequestAccessWithCompletion 、ABAddressBookCopyArrayOfAllPeople等,需要用戶點擊按鈕確認。
(2)獲取電話狀態 使用類CTCallCenter可以得到通話狀態(呼入、呼出、掛斷,運營商等,無法得到呼入呼出電話號碼),前後台時事件略有不同
(3)獲取運營商及網絡信息
使用類CTCarrier CTTelephonyNetworkInfo
(4)撥打電話
[[UIApplication sharedApplication] openURL:@"tel://88888]
(5)調用發送短信的界面
方法一
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms://10086"]]; 只能設定發送號碼
方法二 使用 MFMessageComposeViewController 可以設定號碼和內容,但不能自定義界面, 必須由用戶點擊確認發送,不能後台發送
使用
需要使用非公開SDK或者越獄才能實現的功能
之所以將非公開SDK和越獄區分開,是因為概念有些差異。有些私有API即使不越獄,在有證書的情況下,也是可以在真機上運行的。而有些功能,必須在越獄的情況下,才能有權限執行,沒有越獄的情況下,有證書也無法運行。
(1)獲取電話號碼
CTSettingCopyMyPhoneNumber 私有API,不需要越獄
(2) 獲取通話記錄和短信內容
通話記錄 讀取數據庫/private/var/root/Library/CallHistory/call_history.db 需要越獄
(3) 獲取收到短信事件
CTTelephonyCenterAddObserver 監聽事件 私有API,不需要越獄
還有其他N多功能,越獄後都能實現 :)