检测来电

3
我需要确定何时有一个电话呼入。我知道当用户接听电话时,将调用applicationWillTerminate,当弹出窗口显示有关通话的确认消息时,将调用applicationWillResignActive,但是:
-applicationWillTerminate也会在应用程序由用户请求退出或电池即将耗尽时调用
-当UIViewAlert被显示时,也会调用applicationWillResignActive。
谢谢

请查看https://dev59.com/anA75IYBdhLWcg3wZ4Fr。 - Nikolay Mamaev
3个回答

5
简而言之,不,您无法确定应用程序中是否有来电或其他类型的干扰。

我本来就有这个担心。不管怎样还是谢谢你。 - Mihai Damian
看起来 CoreTelephony 可能有一种方法:https://dev59.com/BWMl5IYBdhLWcg3winkW - Hari Honor

3

我发现了一篇关于处理呼入电话的文章,包括终止、恢复和保留状态。

这可能会对你有所帮助。

http://www.tomwhitson.co.uk/blog/2009/04/handling-interuptions-to-your-app/

(void)applicationWillResignActive:(UIApplication *)application{
        //our app is going to loose focus since thier is an incoming call
        [self pauseGame];
}

(void)applicationDidBecomeActive:(UIApplication *)application{
        //the user declined the call and is returning to our app
        [self resumeGame];
}

(void)applicationWillTerminate:(UIApplication*)application{
        //the user answered the call (or quit the app) so save the
        //game as we are shutting down
        [self saveGameState];
}

5
这对许多情况都很有用,但是您不能百分之百确定ApplicationWillResignActive被调用是由于来电的结果。 - Mihai Damian

3

我知道这个问题很老了,但是如果有人像我一样遇到了这个问题,这里有一个音频会话代理来检测音频是否会被打断(主要是由电话呼叫引起的)。

对于任何正在播放音频的应用程序,这种方法都适用于检测iPhone电话的呼入。

这里是苹果文档的链接:处理音频中断


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接