アプリを使用している間、すべての着信と SMS をブロックしたい。少なくともジェイルブレイクされたiPhoneで動作するはずです。通話はブロックするが、SMS はブロックしないコードがあります - どうすれば修正できますか?
importCoreTelephony/CoreTelephonyDefines.h>
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); }
ビューでdidload:
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();