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