2011-07-23 15 views

cevap

4

Evet, ancak hemen yapmanız gerekmez.

CTCallCenter sınıfına sahip CoreTelephony çerçevesi adlı bir çerçeve var. Bu sınıftaki özelliklerden biri callEventHandler property. Bu, bir telefon görüşmesinin durum değiştiğinde tetiklenen bir bloktur. Örneğin: Bu gerçekleştirebileceğiniz tüm gerçekten var

CTCallCenter *callCenter = ...; // get a CallCenter somehow; most likely as a global object or something similar? 

[callCenter setCallEventHandler:^(CTCall *call) { 
    if ([[call callState] isEqual:CTCallStateConnected]) { 
    //this call has just connected 
    } else if ([[call callState] isEqual:CTCallStateDisconnected]) { 
    //this call has just ended (dropped/hung up/etc) 
    } 
}]; 

. Herhangi bir telefon numarasına erişiminiz yok. Bilginin yalnızca yararlı yararlı bir bilgisi, CTCall'daki bir tanımlayıcı özelliğidir, böylece bir CTCall nesnesini benzersiz olarak tanımlarsınız.

DİKKAT:

Bu olay işleyicisi değil uygulama ön planda olmadığı sürece çağrılan olduğunu! Uygulama arka plandayken aramalar alırsanız ve alırsanız, olay işleyici 'u uygulamanız tekrar etkin hale gelinceye kadar'u tetiklemeyecek, bu noktada (yukarıdaki belgelere göre) olay işleyicisi her çağrısı için bir kez çağrılır Uygulama arka plandayken durumu değiştiren.

+0

Uygulamam bir giden çağrıyı başlatıyor ve bağlantı kesme etkinliğine abone oluyorsa, olay işleyicimde kullanıcının uygulamayı benim uygulamasına geri döndürmesini isteyen bir yerel ileti gönderebilir miyim? Veya giden bir çağrı sona erdikten sonra bir uygulamaya odaklanmak için daha az hantal bir yol biliyor musunuz? – JeremyWeir

-1

Hayır. Geçerli SDK'dan itibaren, bu mümkün değildir. Apple, uygulamaların bu tür kancalara sahip olmasına izin vermez.

+0

-1 yanlış. CoreTelephony.framework göz atın. –

+0

Hmm. Bunu bilmiyordum. Yine de, uygulamanıza cevap olarak uygulamanızı "uyandırma" yapamayacağınızı düşünerek doğru muyum? Önalana (kullanıcı girişi ile) tekrar girene kadar beklemeniz gerekecek mi? –

+0

doğru. Bu sadece bir şeylerin olduğunu ve ona tepki verdiğini bilmenin bir yoludur, ancak sadece uygulamanız aktif olduğunda. –

1

Hayır, ancak bu olaylar gerçekleştiğinde uygulamaya geri çağırma alırsınız.

-(void)applicationWillResignActive:(UIApplication *)application{ 
     //our app is going to loose focus since thier is an incoming call 
     [self pauseApp]; 
    } 

    -(void)applicationDidBecomeActive:(UIApplication *)application{ 
      //the user declined the call and is returning to our app 
      [self resumeApp]; 
    } 
+2

Bu, mutlaka gelen bir çağrı olduğu anlamına gelmez. Diğer uygulama, bildirim veya ev düğmesi onu tetikleyecektir. –

İlgili konular