在程式中如果需要監聽電話狀態,可以引入CoreTelephony框架,這個框架包含了電話相關的API,可以實現監測來電,查看運營商信息等功能。下麵就是具體的實現監測來電的代碼。一定要把center寫成一個單獨的屬性,並且是強引用(strong),否則如果在viewDidLoad方法里創建center ...
在程式中如果需要監聽電話狀態,可以引入CoreTelephony框架,這個框架包含了電話相關的API,可以實現監測來電,查看運營商信息等功能。下麵就是具體的實現監測來電的代碼。一定要把center寫成一個單獨的屬性,並且是強引用(strong),否則如果在viewDidLoad
方法里創建center,viewDidLoad
方法調用完後center就銷毀了,就無法檢測到來電了。
一個通話最初的狀態為呼入(CTCallStateIncoming)和呼出(CTCallStateDialing),當接通後狀態轉變為接通 (CTCallStateConnected),而當通話終止時狀態轉變為掛斷(CTCallStateDisconnected)
CTCallCenter *center = [[CTCallCenter alloc]init]; center_ = center; center.callEventHandler = ^(CTCall *call){ NSLog(@"call:%@",call.description); if ([call.callState isEqualToString:@"CTCallStateDialing"]) { //正在呼叫狀態 } if ([call.callState isEqualToString:@"CTCallStateDisconnected"]) { //斷開連接狀態 } };