2009-10-07 58 views
6

我的應用程序的某些部分會更好地突出顯示給用戶,如果他們在電話上。有沒有辦法判斷用戶在使用手機時是否正在使用您的應用程序?

是否有打電話來查看我們是否在打電話?不幸的是,出於顯而易見的原因,「致電」在API文檔中檢查是一個可怕的詞。

+0

這是場景。 Bob從Jill接到電話。發生呼叫時Bob不使用我的應用程序。 Jill要求從我的應用程序中存儲的鮑勃的一些信息。 Bob在電話中按下主頁按鈕,然後運行我的應用程序。 在這一點上,我想檢測到鮑勃正在通過電話交談,或者如果鮑勃剛剛在不通電話的情況下運行應用程序。 我不在乎應用程序運行時進入的電話 – Michael 2009-10-07 20:33:49

+0

偉大的問題。我也想知道。 – Jordan 2009-10-07 21:48:12

回答

2

CoreTelephony Framework可以告訴你。

的CTCallCenter currentCalls方法返回一組的當前活動的蜂窩呼叫。

0

當iPhone收到呼叫時,應用程序退出。你可以註冊一個回調來妥善處理此事件,請參閱:

http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIApplicationDelegate_Protocol/Reference/Reference.html#//apple_ref/occ/intfm/UIApplicationDelegate/applicationWillTerminate:呼叫已完成

後,您的應用程序將重新啓動。

出現在通話過程中保留您的應用程序的狀態只是寫得好:)


Arggh!我剛剛讀了你的實際問題。

我找不到,也不知道任何API訪問電話應用程序。我唯一的建議是,Phone是一個像其他應用程序一樣的應用程序 - 它可以通過所有應用程序提供的http隧道發佈信息。

我想知道如果你能有一個「我的手機」按鈕,用戶可以按來達到同樣的效果?

2

當呼叫進入時,應用程序不會退出,它將轉換到非活動狀態。下面的方法應該是呼籲UIApplicationDelegate

- (void)applicationWillResignActive:(UIApplication *)application 

這種方法也被稱爲在其他情況下,當iPhone被鎖定,例如,你有沒有辦法確定,如果它是一個呼入電話引起它。

5

看看[[UIScreen mainScreen] bounds][[UIScreen mainScreen] applicationFrame]之間的尺寸差異。如果diff是20像素,並且您沒有隱藏狀態欄,則用戶可能不在通話中。如果差異爲40像素,則用戶可能正在通話,因爲通話過程中出現的發光綠色狀態欄大約是正常狀態欄的兩倍。

我以前沒有這樣做過,所以YMMV。祝你好運,讓我知道,如果它的工作!

+3

我以爲這是答案,但tethering做同樣的事情......:O( – Michael 2009-11-03 19:30:09

相關問題