Quantcast
Viewing latest article 1
Browse Latest Browse All 2

Answer by Aaron Wojnowski for Block calls and sms in Iphone iOS while application running

Below is some code that I've adapted from that website, and works for me on my non jailbroken device:

Firstly add "CoreTelephony.framework" to your project then import it into your view controller like so:

#import <CoreTelephony/CoreTelephonyDefines.h>

Next, add the following code:

extern NSString const *kCTSMSMessageReceivedNotification;extern NSString const *kCTSMSMessageReplaceReceivedNotification;extern NSString const *kCTSIMSupportSIMStatusNotInserted;extern NSString const *kCTSIMSupportSIMStatusReady;typedef struct __CTCall CTCall;extern NSString *CTCallCopyAddress(void*, CTCall *);void * CTSMSMessageSend(id server,id msg);typedef struct __CTSMSMessage CTSMSMessage;NSString *CTSMSMessageCopyAddress(void *, CTSMSMessage *);NSString *CTSMSMessageCopyText(void *, CTSMSMessage *);int CTSMSMessageGetRecordIdentifier(void * msg);NSString * CTSIMSupportGetSIMStatus();NSString * CTSIMSupportCopyMobileSubscriberIdentity();id CTSMSMessageCreate(void* unknow/*always 0*/,NSString* number,NSString* text);void * CTSMSMessageCreateReply(void* unknow/*always 0*/,void * forwardTo,NSString *text);id CTTelephonyCenterGetDefault(void);void CTTelephonyCenterAddObserver(id, id, CFNotificationCallback, NSString *, void *,int);void CTTelephonyCenterRemoveObserver(id,id,NSString*,void*);int CTSMSMessageGetUnreadCount(void);void * CTCallDisconnect(CTCall *call);static void callback(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo) {    NSString *notifyname = (__bridge NSString *)name;    if ([notifyname isEqualToString:@"kCTCallIdentificationChangeNotification"]) {        NSDictionary *info = (__bridge NSDictionary *)userInfo;        CTCall *call = (__bridge CTCall *)[info objectForKey:@"kCTCall"];        NSString *caller = CTCallCopyAddress(NULL, call);        NSLog(@"RECEIVED CALL: %@", caller);        CTCallDisconnect(call);    }}static void signalHandler(int sigraised) {    printf("\nInterrupted.\n");    exit(0);}

And in viewDidLoad or some other appropriate method, add the following:

id ct = CTTelephonyCenterGetDefault();CTTelephonyCenterAddObserver(ct, NULL, callback, NULL, NULL, CFNotificationSuspensionBehaviorHold);sig_t oldHandler = signal(SIGINT, signalHandler);if (oldHandler == SIG_ERR) {    printf("Could not establish new signal handler");    exit(1);}printf("Starting run loop and watching for notification.\n");CFRunLoopRun();

For now this code is merely a proof of concept and would have to be expanded upon for error handling and whatnot, but you should get the idea.


Viewing latest article 1
Browse Latest Browse All 2

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>