2012-06-08 39 views
22

Şu anki işleyişim olup olmadığını kontrol etme olanağı bulabilirsinizBunu görmek için CTCallCenter çağrı merkezini kontrol edebilirsiniz. Ancak, bu, bir etkinliğin dinlenmesiyle çalışır - uygulamanın etkin/askıya alınmış/devam ettirilmesine bağlı olarak olay farklı zamanlarda artırılabilir.iOS Telefon numarası

İhtiyacım olan şey, olayı dinlemekten çok ve arama bağlandığında, aramanın bağlı olup olmadığını sorduğumda kendime karar vermek istiyorum.

Kullanım durumu: Telefon görüşmesi yapıldığında - kullanıcı uygulamayı açacak uygulama simgesini tıklar ve her zaman açar. Şu anda sadece çağrı olup olmadığını kontrol etmek için hızlı bir fonksiyon çalıştırmak istiyorum.

Bu mümkün mü?

cevap

24

CTCallCenter nesnesinin geçerli aramaların NSSet numaralı currentCalls özelliği vardır. Bir çağrı varsa o zaman currentCalls özelliği olmalıdır! = Nil. Eğer aramaların herhangi aslında bağlıysa bilmek istiyorsanız

, o zaman Geçerli çağrılar arasında yineleme ve CTCallStateConnected olup olmadığını belirlemek için callState kontrol etmek gerekir.

+0

müthiş ... Ben teşekkür ihtiyacımız olan şey. Sizce bu soruya yardımcı olursanız lütfen soruları da yanıtlayın. – friend

+0

u hayatımı kurtardı –

6

Yanıt ThomasW için teşekkürler. Kodu da göndereceğimi düşündüm.

- (void)applicationWillEnterForeground:(UIApplication *)application 
{ 
    CTCallCenter *ctCallCenter = [[CTCallCenter alloc] init]; 
    if (ctCallCenter.currentCalls != nil) 
    { 
     NSArray* currentCalls = [ctCallCenter.currentCalls allObjects]; 
     for (CTCall *call in currentCalls) 
     { 
      if(call.callState == CTCallStateConnected) 
      { 
       // connected 
      } 
     } 
    } 
} 
+2

Bu numarayı kısa numaralandırmayı kullanarak çok fazla kısaltabilirsiniz: (for ctCallCenter.currentCalls) (CTCall * çağrısı) {...} '. 'Nil' seçeneğini kontrol etmenize veya seti bir diziye dönüştürmenize gerek yoktur. – omz

+0

kodunuzu önerebilir misiniz? Ben sadece bong's post olacak ve çok daha verimli ve etkili olacak cevabınızı cevaplamaktan mutluluk duyarım .. cheers omz. – Pavan

+0

tam olarak neye ihtiyacım vardı! upvoted! @AlBeebe: currentCalls bir sonraki satırda kullanılır. – rockstarberlin

27
#import <CoreTelephony/CTCallCenter.h> 
#import <CoreTelephony/CTCall.h> 

-(bool)isOnPhoneCall { 
    /* 

    Returns TRUE/YES if the user is currently on a phone call 

    */ 

    CTCallCenter *callCenter = [[[CTCallCenter alloc] init] autorelease]; 
    for (CTCall *call in callCenter.currentCalls) { 
     if (call.callState == CTCallStateConnected) { 
      return YES; 
     } 
    } 
    return NO; 
} 
+1

Bu, iOS 9.x için Xcode 7'de oluştururken çalışmaz gibi görünmüyor –

İlgili konular