有没有办法判断用户在手机上是否正在使用您的应用程序?

时间:2009-10-07 20:23:30

标签: iphone core-telephony

如果用户正在通话,我的应用程序的某些部分会更好地突出显示。

是否有电话要检查我们是否在打电话?不幸的是,出于显而易见的原因,“调用”在API文档中检查是一个可怕的词。

4 个答案:

答案 0 :(得分:5)

查看[[UIScreen mainScreen] bounds][[UIScreen mainScreen] applicationFrame]之间的大小差异。如果diff是20像素并且您没有隐藏状态栏,那么用户可能不在通话中。如果差异为40像素,则您的用户可能正在通话,因为呼叫期间出现的发光绿色状态栏大约是正常状态栏的两倍。

我之前没有这样做,所以YMMV。祝你好运,让我知道它是否有效!

答案 1 :(得分:2)

当呼叫进入时,应用程序不会退出,它会转换为非活动状态。应在UIApplicationDelegate上调用以下方法:

- (void)applicationWillResignActive:(UIApplication *)application

在其他情况下也会调用此方法,例如iPhone被锁定时,您无法确定是否是导致它的来电。

答案 2 :(得分:2)

CoreTelephony框架可以告诉你。

CTCallCenter currentCalls方法返回一组当前活动的蜂窝呼叫。

答案 3 :(得分: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隧道发布信息。

我想知道你是否可以按下“我在电话上”按钮,用户可以按下以获得相同的结果?