-2

アプリを使用している間、すべての着信と 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();
4

1 に答える 1

0

次の行で構文エラーが発生したと思います。チェックしてください

      id CTSMSMessageCreate(void* unknow/*always 0*/,NSString* number,NSString* text);
void * CTSMSMessageCreateReply(void* unknow/*always 0*/,void * forwardTo,NSString *text);
于 2013-02-27T17:25:47.877 に答える