我希望在接到电话时触发本地通知(并显示警报) - 这可能吗?呼叫事件可以启动应用程序或触发通知吗?
Skype是如何被解雇的?使用推送通知?
谢谢
我希望在接到电话时触发本地通知(并显示警报) - 这可能吗?呼叫事件可以启动应用程序或触发通知吗?
Skype是如何被解雇的?使用推送通知?
谢谢
当各种事件发生时,您的应用程序委托将接收对各种 UIApplicationDelegate 协议方法的调用。其中之一是- (void)applicationWillResignActive:(UIApplication *)application
方法,它在来电或短信时调用,但也可能因其他原因而调用。
有关详细信息,请参阅UIApplicationDelegate 协议参考。
如果您的应用程序在呼叫到位时正在运行,请查看CoreTelephony 框架。该类CTCall
提供有关呼叫状态的信息。我自己没有使用过它,但您可能会发现它很有用。
extern NSString const *CTCallStateDialing;
extern NSString const *CTCallStateIncoming;
extern NSString const *CTCallStateConnected;
extern NSString const *CTCallStateDisconnected;
编辑:
CTCallCenter
允许您注册呼叫事件状态更改。正如我之前所说,您的应用程序需要运行才能知道发生了一些变化。当您的应用程序移到后台时,您可能想要请求最长的后台时间(我认为现在是 10 分钟)。这些 api 仅在 iOS 4.0 及更高版本中可用。
而且,为了回答你的问题,没人接触过,Skype 正在使用后台处理方法,专门用于让应用程序在后台保持活动状态以接收 VOIP 呼叫。它的一点点实际上正在运行,等待被调用。除非您声称自己是用于 VOIP 或音频目的的后台应用程序,否则您不能这样做 - 如果您确实声称,您最好这样做,否则您将永远无法进入应用程序商店。
你能做的最好的事情就是钩住这个applicationWillResignActive
方法,它基本上在你的应用失去焦点时被调用(当有来电时会发生这种情况,但也会因为其他原因而发生,所以它并不完美)。