2012-04-12 81 views
4

我在搜索所以問這個問題之前,沒有答案滿足我的需要。如何阻止在iPhone越獄傳入的短信+代碼

所以這是我的要求,

我有這樣的一段代碼,用於檢測傳入的短信,但它並沒有說如何轉儲這些消息。我已成功阻止來電,但對於消息我不確定如何執行此操作。任何幫助在這裏將非常感激。

我確定使用任何私有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]; 
    } 
    */ 
} 

感謝 納文

回答

2

你的問題不夠清楚。你是否希望它們完全被丟棄,這樣它們甚至不會進入消息應用程序(和數據庫),或者你只是想讓SpringBoard不通知用戶傳入消息?

對於第一個,您將不得不掛鉤實際發送您在代碼sniplet中收聽的通知的進程。我很確定你必須修改imagent(/System/Library/PrivateFrameworks/IMCore.framework/imagent.app/imagent)。

對於第二個,你將不得不在SpringBoard中玩耍。由於iOS 5.0 BulletinBoard正在處理通知給用戶,所以你可以在那裏阻止它。 (你可能想看看SMSBBPlugin這是一個BulletinBoard插件)。

或者只是火了你選擇的反彙編,看看怎麼樣biteSMS調整正在這樣做;)

請記住,越獄的調整發展有時需要大量的扭轉和修修補補的,大多數人會保持巨大的部分他們的發現本身。

+0

嗨@YllierDev,我正在尋找第一個,對於選擇的號碼我想完全拒絕短信。你能否給我更多關於如何掛鉤過程或任何解釋相同的鏈接的信息。你是對的,他們大多數不會透露那裏的調查結果:) – RVN 2012-04-28 07:42:46

+0

我沒有任何imagent的經驗。您將不得不使用MobileSubstrate來覆蓋方法或函數。 http://iphonedevwiki.net/index.php/MobileSubstrate 如果你不知道如何編寫MobileSubstrate的調整,只需谷歌。那裏有很多小教程。 這可能是最好的做你的第一步傾銷標題。轉儲imagent的頭文件和關聯的私有框架。另外,你可能需要一些逆向知識。 – YllierDev 2012-04-28 14:46:03

+0

謝謝,會嘗試。 – RVN 2012-04-30 08:25:57