【问题标题】:iOS: showing an alert when getting a call?iOS:接到电话时显示警报?
【发布时间】:2011-07-20 16:32:51
【问题描述】:

我希望在接到电话时触发本地通知(并显示警报) - 这可能吗?呼叫事件可以启动应用程序或触发通知吗?

Skype 是如何被解雇的?有推送通知?

谢谢

【问题讨论】:

  • Skype 使用推送通知。

标签: iphone ios notifications call uilocalnotification


【解决方案1】:

当各种事件发生时,您的应用程序委托将接收对各种 UIApplicationDelegate 协议方法的调用。其中之一是 - (void)applicationWillResignActive:(UIApplication *)application 方法,用于来电或短信,但也可以用于其他原因。

请参阅UIApplicationDelegate protocol reference 了解更多信息。

【讨论】:

  • 看起来这个 CoreTelephony 引入了在 iOS 4.0+ 中执行此操作的功能,只要应用程序正在运行。 developer.apple.com/library/ios/#documentation/…
  • 谢谢乔。我已更新我的答案以删除错误部分。
  • 没问题,一旦提问者选择了答案,我就可以再次 +1 雅,因为我尚未测试该框架。
【解决方案2】:

而且,为了回答您的问题中没人触及的部分,Skype 正在使用后台处理方法,专门用于让应用程序在后台保持活动状态以接收 VOIP 呼叫。它的一点点实际上正在运行,等待被调用。除非您声称自己是用于 VOIP 或音频目的的后台应用程序,否则您不能这样做 - 如果您确实声称,您最好这样做,否则您将永远无法进入应用商店。

【讨论】:

    【解决方案3】:

    如果您的应用程序在调用时正在运行,请查看CoreTelephony FrameworkCTCall 类提供有关呼叫状态的信息。我自己没有使用过,但您可能会发现它很有用。

    extern NSString const *CTCallStateDialing;
    extern NSString const *CTCallStateIncoming;
    extern NSString const *CTCallStateConnected;
    extern NSString const *CTCallStateDisconnected;
    

    编辑:

    CTCallCenter 允许您注册呼叫事件状态更改。正如我之前所说,您的应用程序需要运行才能知道发生了一些变化。当您的应用程序移至后台时,您可能需要请求最长后台时间(我认为现在是 10 分钟)。这些 api 仅适用于 iOS 4.0 及更高版本。

    【讨论】:

    • 是否可以在来电屏幕上显示类似 Truecaller 的叠加层?
    【解决方案4】:

    您能做的最好的事情是挂钩applicationWillResignActive 方法,该方法基本上会在您的应用失去焦点时被调用(当有来电时会发生这种情况,但也会因其他原因而发生,所以它并不完美)。

    见:http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIApplicationDelegate_Protocol/Reference/Reference.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-23
      • 2023-03-13
      • 2020-01-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多