2

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

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

谢谢

4

4 回答 4

2

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

有关详细信息,请参阅UIApplicationDelegate 协议参考

于 2011-03-22T17:13:24.560 回答
1

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

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

编辑:

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

于 2011-03-22T17:27:59.717 回答
1

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

于 2011-03-22T17:42:13.707 回答
-1

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

请参阅:http: //developer.apple.com/library/ios/#documentation/UIKit/Reference/UIApplicationDelegate_Protocol/Reference/Reference.html

于 2011-03-22T17:19:42.497 回答