IOS获取来电去电系统通知达到来电归属地效果(一)

本文介绍了如何在iOS中利用CoreTelephony框架获取来电和去电通知,通过监听电话状态来实现实时显示来电归属地。首先,针对来电号码不在通讯录的情况,需要创建临时联系人;若号码已存在,则更新联系人标签为归属地信息。通过注册和取消观察者,以及使用私有API来处理电话状态变化。最后,展示了如何处理不同电话状态的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里的实现原理是获取到来电系统通知,然后根据本地通话的电话号码,把对应电话的联系人.

情况一   来电号码未在通讯录联系人中, 这时候要先在通讯录添加一个临时的联系人(就是新建一个联系人,并保存对应的RecordID)

情况二  已在通讯录的联系人

然后 把对应本次通话的电话标签修改成归属地字符



原文地址    http://blog.csdn.net/leewolf130/article/details/38921921


好了 ,先看看怎么获取系统电话通知

需要的类



//创建电话对象

代码一: 

#import <Foundation/Foundation.h>

@import CoreTelephony;


// private API

typedef NS_ENUM(short, CTCallStatus) {

    kCTCallStatusConnected = 1, //已接通

    kCTCallStatusCallOut = 3, //拨出去

    kCTCallStatusCallIn = 4, //打进来

    kCTCallStatusHungUp = 5 //挂断

};


@interface WCCall : NSObject


@property (nonatomic,assign) CTCallStatus callStatus;

@property (nonatomic,copy) NSString *phoneNumber;

@property (nonatomic,retain) CTCall *internalCall;


@end




代码二: 

#import "WCCall.h"


@implementation WCCall


@end




//监听电话通知

代码三:

#import <Foundation/Foundation.h>

#import "WCCall.h"


@interface WCCallCenter : NSObject


// 监听来电事件

@property (nonatomic,strong) void (^callEventHandler)(WCCall *call);


// 挂断电话

- (void)disconnectCall:(WCCall *)call;


@end



代码四:

#import "WCCallCenter.h"

#import "WCUtil.h"


// encrypted string's

#define ENCSTR_kCTCallStatusChangeNotification  [@"n0AHD2SfoSA0LKE1p0AbLJ5aMH5iqTyznJAuqTyiot==" wcDecryptString]

#define ENCSTR_kCTCall                          [@"n0AHD2SfoN==" wcDecryptString]

#define ENCSTR_kCTCallStatus                    [@"n0AHD2SfoSA0LKE1pj==" wcDecryptString]

#define ENCSTR_CTTelephonyCenterGetDefault      [@"D1EHMJkypTuioayQMJ50MKWUMKERMJMuqJk0" wcDecryptString]

#define ENCSTR_CTTelephonyCenterAddObserver     [@"D1EHMJkypTuioayQMJ50MKWOMTECLaAypaMypt==" wcDecryptString]

#define ENCSTR_CTTelephonyCenterRemoveObserver  [@"D1EHMJkypTuioayQMJ50MKWFMJ1iqzICLaAypaMypt==" wcDecryptString]

#define ENCSTR_CTCallCopyAddress                [@"D1EQLJkfD29jrHSxMUWyp3Z=" wcDecryptString]

#define ENCSTR_CTCallDisconnect                 [@"D1EQLJkfETymL29hozIwqN==" wcDecryptString]


//这里需要对字符串 NSString 进行拓展方法

//#import <dlfcn.h> 引用 这个框架


/**

- (NSString *)wcRot13

{

    const char *source = [selfcStringUsingEncoding:NSASCIIStringEncoding];

   

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值