先导入这两个头文件,库文件不用导可以

#import <CoreTelephony/CTCallCenter.h>

#import <CoreTelephony/CTCall.h>

//申明电话类属性,必须申明成成品属性,不然没效果;

@property(nonatomic,strong)CTCallCenter *callCenter;

//如下两个方法中监听:

- (void)applicationWillResignActive:(UIApplication *)application {

// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.

// Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.

self.callCenter = [[CTCallCenter alloc] init];

self.callCenter.callEventHandler=^(CTCall* call)

{

if (call.callState == CTCallStateDisconnected)

{

NSLog(@"-applicationWillResignActive----挂断");   //挂断

//            self.viewController.signalStatus=YES;

}

else if (call.callState == CTCallStateConnected)

{

NSLog(@"--applicationWillResignActive---连通了"); //联通了

}

else if(call.callState == CTCallStateIncoming)

{

NSLog(@"applicationWillResignActive Call is incoming");

//self.viewController.signalStatus=NO;

}

else if (call.callState ==CTCallStateDialing)

{

NSLog(@"--applicationWillResignActive----拨号");  //拨号

}

else

{

NSLog(@"applicationWillResignActive Nothing is done?");

}

};

NSLog(@"applicationWillResignActive:%@",application);

}

- (void)applicationDidBecomeActive:(UIApplication *)application {

// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.

self.callCenter = [[CTCallCenter alloc] init];

self.callCenter.callEventHandler=^(CTCall* call)

{

if (call.callState == CTCallStateDisconnected)

{

NSLog(@"-applicationDidBecomeActive----挂断");   //挂断

//            self.viewController.signalStatus=YES;

}

else if (call.callState == CTCallStateConnected)

{

NSLog(@"--applicationDidBecomeActive---连通了"); //联通了

}

else if(call.callState == CTCallStateIncoming)

{

NSLog(@"applicationDidBecomeActive Call is incoming");

//self.viewController.signalStatus=NO;

}

else if (call.callState ==CTCallStateDialing)

{

NSLog(@"--applicationDidBecomeActive----拨号");  //拨号

}

else

{

NSLog(@"applicationDidBecomeActive Nothing is done?");

}

};

NSLog(@"applicationDidBecomeActive:%@",application);

}

//结合上面的打印顺序,app方法的调用顺序如下:

//来电时> applicationDidBecomeActive Call is incoming > applicationWillResignActive:

//挂断>  applicationWillResignActive----挂断 > applicationDidBecomeActive:<UIApplication: 0x137609010>

//机主接听>  --applicationWillResignActive---连通了

//通话结束> -applicationWillResignActive----挂断 > applicationDidBecomeActive:<UIApplication: 0x137609010>

ios应用来电监听的更多相关文章

  1. Android来电监听和去电监听

    我觉得写文章就得写得有用一些的,必须要有自己的思想,关于来电去电监听将按照下面三个问题展开 1.监听来电去电有什么用? 2.怎么监听,来电去电监听方式一样吗? 3.实战,有什么需要特别注意地方? 监听 ...

  2. Service之来电监听(失败的案例)

    Service:服务,可以理解成一个运行再后台没有界面的Activity,集成于Seriver,是四大组件之一 Service的继承关系:Service-->ContextWrapper--&g ...

  3. IOS开发:监听来电状态的改变。

    #import <CoreTelephony/CTCallCenter.h> #import <CoreTelephony/CTCall.h> @property(nonato ...

  4. android 呼入电话的监听(来电监听)转

    需要权限: <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 方式一:通过广 ...

  5. 类似吸顶功能解决ios不能实时监听onscroll的触发问题

    问题:近期项目需要一个类似西东功能,当页面向上滚动160px后div固定在顶部 解决方法:首先,想到的是window.onscroll方法 .fixed{position:fixed;-webkit- ...

  6. iOS 键盘的监听 调整view的位置

    iOS在处理键盘的出现和消失时需要监听UIKeyboardWillChangeFrameNotifications/UIKeyboardDidHideNotifications - (void)vie ...

  7. iOS地图 -- 区域监听的实现和小练习

    区域监听用到的方法 [self.mgr startMonitoringForRegion:region]; --> 开启区域监听,没有返回值,在代理方法中得到信息并且处理信息 注:该方法只有用户 ...

  8. 【iOS】通知监听

    下例为:监听文本框  accountField  内容的改变, 当发生改变时, 调用textChange方法(多次).监听结束需要移除通知. - (void)viewDidLoad { [super ...

  9. iOS: 使用KVO监听控制器中数组的变化

    一.介绍: KVO是一种能动态监听到属性值的改变的方式,使用场景非常广泛,这里我只讲如何监听控制器ViewController中数组的变化. 二.了解: 首先我们应该知道KVO是不能直接监听控制器Vi ...

随机推荐

  1. as3+java+mysql(mybatis) 数据自动工具(一)

    在页游中,大部分的开发模式都是:客户端(as3)+ 服务端(java)+ 数据库(mysql). 在这3个部分会有一个相同的部分就是数据结构.比如一个用户数据,在客户端使用类 UserVO(as3) ...

  2. 搭建hdfs服务器集群的搭建+trash

    完全分布式搭建需要三台机器:node1.node2和node3 搭建时间之前首先要保持时间一致:date ntpdateyum install ntpdatentpdate -u ntp.sjtu.e ...

  3. NOIP2001 数的划分

    题二 数的划分(20分) 问题描述 将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序). 例如:n=7,k=3,下面三种分法被认为是相同的. 1,1,5; 1,5,1; 5,1,1; 问 ...

  4. iLearning D3.js 2.0 released

    There are some great changes in 2.0 version. Console in tutorial: In previous version, there will be ...

  5. HW5.16

    public class Solution { public static void main(String[] args) { for(int i = 2000; i <= 2010; i++ ...

  6. HW4.4

    public class Solution { public static void main(String[] args) { final double KILOMETERS_PER_MILE = ...

  7. 有关gcc的扩展__attribute__((unused))

    ================================ Author: taoyuetao Email: tao_yuetao@yahoo.com.cn Blog: taoyuetao.cu ...

  8. PowerDesigner建数据库模型增加自定义扩展属性

    PowerDesigner自7.x新增加一个特性,就是允许用户通过扩展模型的方式扩展模型的属性,但到底怎用一直搞不清楚.今天和同事商量准备直接在程序的Metadata信息实现上直接使用pdm时,我们需 ...

  9. windows批量创建用户

    一.建立用户的命令行语法: 建立用户:net  user  用户名  密码  /add           (如:net user test 123 /add)  提升权限:net  localgro ...

  10. 使用sqlite3 有关tableview删除cell的问题

    在root页面,想要删除tableviewcell,是有一定顺序的 首先要删除 数据库sqlite3 中的数据,然后删除数组中的数据,最后删除cell 一般我们知道,删除cell要在删除数组数据之后, ...