如何阻止iPhone越狱+代码中传入的短信

时间:2012-04-12 11:51:07

标签: iphone sms jailbreak messages

在问这个问题之前我搜索过,没有满足我需要的答案。

所以这是我的要求,

我有这段代码用于检测传入的SMS,但它没有说明如何转储这些消息。我已经成功阻止了来电但是对于消息我不知道该怎么做。这里的任何帮助将非常感谢。

我可以使用任何私有API。

if ([notifyname isEqualToString:@"kCTSMSMessageReceivedNotification"])
{
    if ([[(NSDictionary *)userInfo allKeys]
         containsObject:@"kCTSMSMessage"]) // SMS Message
    {
        CTSMSMessage *message = (CTSMSMessage *)
        [(NSDictionary *)userInfo objectForKey:@"kCTSMSMessage"];
        NSString *address = CTSMSMessageCopyAddress(NULL, message);
        NSString *text = CTSMSMessageCopyText(NULL, message);
        //NSArray *lines = [text componentsSeparatedByString:@"\n"];
        printf(" %s %s\n", [address UTF8String],[text UTF8String]);
        //printf(" %s\n", [text cString]);
        fflush(stdout);

    }
}
else if ([notifyname isEqualToString:@"kCTMessageReceivedNotification"])//received SMS
{
    /*
     kCTMessageIdKey = "-2147483636″;
     kCTMessageTypeKey = 1;
     */

    NSDictionary *info = (NSDictionary *)userInfo;
    CFNumberRef msgID = (CFNumberRef)[info objectForKey:@"kCTMessageIdKey"];
    int result;
    CFNumberGetValue((CFNumberRef)msgID, kCFNumberSInt32Type, &result); 
    /*
     Class CTMessageCenter = NSClassFromString(@"CTMessageCenter");
     id mc = [CTMessageCenter sharedMessageCenter];
     id incMsg = [mc incomingMessageWithId: result];

     int msgType = (int)[incMsg messageType];

     if (msgType == 1) //experimentally detected number
     {
     id phonenumber = [incMsg sender];

     NSString *senderNumber = (NSString *)[phonenumber canonicalFormat];
     id incMsgPart = [[incMsg items] objectAtIndex:0];
     NSData *smsData = [incMsgPart data];
     NSString *smsText = [[NSString alloc] initWithData:smsData encoding:NSUTF8StringEncoding];
     }
     */
}

由于 纳温

1 个答案:

答案 0 :(得分:2)

你的问题不够明确。您是否希望将它们完全删除,以便它们甚至不在Message App(和数据库)中,或者您只是希望SpringBoard不通知用户传入的消息?

对于第一个,您将必须挂钩实际发送您正在您的代码片段中收听的通知的进程。我很确定你不得不修补imagent(/System/Library/PrivateFrameworks/IMCore.framework/imagent.app/imagent)。

对于第二个,你必须在SpringBoard中玩游戏。由于iOS 5.0 BulletinBoard正在处理对用户的通知,因此您可以在那里阻止它。 (你可能想看一下这是一个BulletinBoard插件的SMSBBPlugin)。

或者只是启动你选择的反汇编程序,看看像biteSMS这样的调整是如何做的;)

请记住,越狱调整开发有时需要进行大量的逆转和修补,大多数人都会将自己的研究成果留给自己。