2010-07-23 16 views
10

Kullanıcının arka planda bulunan bir uygulamadan arandığını algılamanın mümkün olup olmadığını bilmek istiyorum. Ya da, çağrı benim uygulamadan başlatılmışsa, arama bittiğinde bir bildirim alırsınız.iOS4'teki arama durumunun algılanması

Veya daha da fazlası - hangi uygulamanın ön planda olduğunu tespit etme olanağı var mı?
Bunun mümkün olduğuna inanmıyorum ama denemek zorundaydım ... ;-)

Herhangi bir bilgi takdir edilecektir.

Teşekkür ederiz.

+0

Başka bir uygulamada * telefon * araması mı demek istiyorsunuz? Skype'ta yapılan bir aramada arka planda çalışıyor mu? – progrmr

+0

Lütfen bkz. Http://stackoverflow.com/questions/3319805/detecting-call-state-in-ios4 –

cevap

20

CTCallCenter'da, çağrı olayları gerçekleştiğinde aranacak bir bloğu iletebileceğiniz bir yöntem, callEventHandler vardır. Bu satırda, CTCall nesnesini geçirirsiniz ve callState'u edinebilirsiniz. Böylece, bir çağrı başlatıldığında veya bittiğinde bir bildirim alabilirsiniz ve uygun şekilde işleyebilirsiniz. Hangi uygulamanın aramayı başlattığını göremezsiniz, ancak aramayı yaptığınızda bir ivar ayarlarsanız, bunun çağrıyı yapan uygulamanız olduğunu söyleyebilirsiniz. Örneğin

:

CTCallCenter *callCenter = [[CTCallCenter alloc] init]; 
callCenter.callEventHandler=^(CTCall* call){ 
    if (call.callState == CTCallStateDisconnected) 
    { 
     //handle disconnect 
    } 
}; 

DÜZENLEME: Sorunuzu okuma Yeniden, size doğru asılı iken bu olayları istiyorsun? Bunun mümkün olduğunu düşünmüyorum. docs itibaren

:

bir çağrı olay gerçekleştiğinde Başvurunuz aktifse, sistem hemen işleyicisi olay gönderir. Ancak, uygulamanız askıya alınırken arama etkinlikleri de gerçekleştirilebilir. Askıya alınırken, uygulamanız arama etkinlikleri almaz. Uygulamanız etkin durumu devam ettirdiğinde, uygulamanız askıya alınmışken yapılan çağrıda kaç durum değişikliği olursa olsun, durum değiştirilen her çağrı için tek bir çağrı olayı alır. İşleyicinize gönderilen tekli arama olayı, uygulamanızın etkin duruma dönmesiyle, o andaki çağrı durumunu açıklar.

+0

Teşekkür ederiz. Çekirdek Telefonun hedefime hizmet edebileceğini düşünüyor. Uygulamamı arka plandan öne getirebilir miyim biliyor musunuz? –

+1

Hayır, ön plana kendiniz gidemezsiniz. Ve, aldığınız etkinliklerle sınırlı olacaksınız. Yapabileceğiniz en iyi şey, durum geçiş bildirimlerini dinlemek ve işleri uygun şekilde ele almaktır. Krş http://developer.apple.com/iphone/library/documentation/iphone/conceptual/iphoneosprogrammingguide/BackgroundExecution/BackgroundExecution.html – Don

+0

Teşekkür ederiz. Birkaç iOS3 projesinde takıldım ve tüm iOS4 yeniliklerini öğrenmek için zamanım yok ... –

8

iseniz Uygulama arka planda çalışırken ve, bir telefon görüşmesi alındığında sizin AVAudioSession kesildi belirten AVAudioSessionDelegate üzerine geri aramalar alacak gidiş bir AVAudioSession sahiptir. AFAIK, aldığınız tüm bilgiler.

+0

Teşekkür ederim. BTW, telefon görüşmesi sırasında sesler/müzik çalamam anlamına mı geliyor? Uygulamam önde olsa bile (ve telefon uygulaması arka planda)? –

+2

Uygulamamda (arka planda) bir telefon görüşmesi sırasında ses çalma ile ilgili bir sorun yaşadım. Ara verilip verilmediğini takip etmek için AVAudioSessionDelegate geri aramalarını kullandım ve kesintiye uğrarsa uygulama ses çalmayı durdurur. – progrmr

İlgili konular