【问题标题】:Is there a way to tell if your app is being used while the user is on the phone?有没有办法在用户打电话时判断您的应用程序是否正在使用?
【发布时间】:2010-12-04 18:33:44
【问题描述】:

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

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

【问题讨论】:

  • 这里是场景。鲍勃接到吉尔打来的电话。呼叫发生时,Bob 没有使用我的应用程序。 Jill 向 bob 索要一些存储在我的应用程序中的信息。 Bob 在打电话时按下主页按钮,然后运行我的应用程序。此时,我想检测 Bob 是否在打电话,或者 Bob 是否只是在运行应用程序而不在电话上。我不在乎应用运行时打来的电话
  • 好问题。我也想知道。

标签: iphone core-telephony


【解决方案1】:

当 iPhone 接到电话时,应用程序退出。您可以注册一个回调来优雅地处理此事件,请参阅:

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

调用结束后,您的应用程序将重新启动。

在通话期间似乎保留您的状态的应用程序写得很好:)


啊!我刚刚阅读了您的实际问题。

我找不到,也不知道有任何 API 可以访问电话应用程序。我唯一的建议是,Phone 是一个和其他应用程序一样的应用程序——它可以通过所有应用程序提供的 http 隧道发布信息。

我想知道您是否可以让用户按下“我在打电话”按钮来达到相同的效果?

【讨论】:

    【解决方案2】:

    来电时应用程序不会退出,它会转换到非活动状态。应在UIApplicationDelegate 上调用以下方法:

    - (void)applicationWillResignActive:(UIApplication *)application
    

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 我认为这是答案,但网络共享也有同样的作用...... :O(
      【解决方案4】:

      CoreTelephony 框架可以告诉你。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-15
        • 1970-01-01
        • 2013-12-12
        • 1970-01-01
        • 2010-12-30
        相关资源
        最近更新 更多