2013-10-15 29 views
0

我試圖獲取通話事件(呼叫接收,通話結束等) 我試圖運行CoreTelephonyDemo的示例代碼,但我沒有收到任何通話事件。 任何人都可以引導我相同。iPhone中的通話事件

我在applicationWillResignActive中試過這段代碼,但我沒有收到任何事件。我錯過了什麼或做錯了什麼?請指導。

- (void)applicationWillResignActive:(UIApplication *)application 
{ 
    CTCallCenter *callCenter1 = [[CTCallCenter alloc] init]; 
    callCenter1.callEventHandler=^(CTCall* call) 
    { 
     if (call.callState == CTCallStateDisconnected) 
     { 
      NSLog(@"Call has been disconnected"); 
     } 
     else if (call.callState == CTCallStateConnected) 
     { 
      NSLog(@"Call has just been connected"); 
     } 
     else if(call.callState == CTCallStateConnected) 
     { 
      NSLog(@"Call is incoming"); 
     } 
     else 
     { 
      NSLog(@"None of the conditions"); 
     } 
    }; 
} 
+2

您是否閱讀過有關限制?你在測試什麼場景? – Wain

回答

1

您可以檢測到呼叫事件。發生各種事件時,您的應用程序代理將接收到各種UIApplicationDelegate協議方法的調用。其中之一是- (void)applicationWillResignActive:(UIApplication *)應用程序方法,它被稱爲傳入呼叫或文本消息,但也可能因爲其他原因而被調用。

只有當您的應用在前臺運行時,才能檢測到呼叫。

如果您的應用將落入任何後臺運行類別(VOIP,AUDIO,位置跟蹤或附件),您可能可以在後臺使用CTCallCenter。但請注意,如果您錯過了使用後臺運行模式的功能,Apple會拒絕您的應用程序。

CTCallCenter將允許您檢測任何已啓動或正在進行的呼叫。

但是,您將無法檢測到有關該呼叫的任何詳細信息,CTCall識別呼叫只會告訴您此狀態。 CTCall的呼叫ID只會爲您提供呼叫的唯一標識符,但不會呼叫被叫號碼。