我目前正在尝试编写一个应用程序来拦截文本消息并根据该消息的内容做出反应。
我试图挂钩_receivedMessage:(struct __CKSMSRecord *)message replace:(BOOL)replace
CKSMSService 类中的方法但这似乎根本没有被调用。
有人可以告诉我我必须连接什么函数/类吗?我需要在文本消息显示并存储到数据库之前拦截它。我使用的是 IOS 5.0.1。
非常感谢任何帮助。
此代码片段应拦截 SMS 消息 - 您可以将其扩展为其他类型的通知。也适用于 iOS 5.0.1。但不适用于 iMessage。与 CoreTelephony 框架链接(那里有一堆私有标头,您可以对它们进行类转储)
#include <dlfcn.h>
#define CORETELPATH "/System/Library/PrivateFrameworks/CoreTelephony.framework/CoreTelephony"
id(*CTTelephonyCenterGetDefault)();
void (*CTTelephonyCenterAddObserver) (id,id,CFNotificationCallback,NSString*,void*,int);
static void telephonyEventCallback(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo)
{
NSString *notifyname=(NSString *)name;
if ([notifyname isEqualToString:@"kCTMessageReceivedNotification"])//received SMS
{
NSLog(@" SMS Notification Received :kCTMessageReceivedNotification");
// Do blocking here.
}
}
-(void) registerCallback {
void *handle = dlopen(CORETELPATH, RTLD_LAZY);
CTTelephonyCenterGetDefault = dlsym(handle, "CTTelephonyCenterGetDefault");
CTTelephonyCenterAddObserver = dlsym(handle,"CTTelephonyCenterAddObserver");
dlclose(handle);
id ct = CTTelephonyCenterGetDefault();
CTTelephonyCenterAddObserver(
ct,
NULL,
telephonyEventCallback,
NULL,
NULL,
CFNotificationSuspensionBehaviorDeliverImmediately);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)