我在搜索所以問這個問題之前,沒有答案滿足我的需要。如何阻止在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];
}
*/
}
感謝 納文
嗨@YllierDev,我正在尋找第一個,對於選擇的號碼我想完全拒絕短信。你能否給我更多關於如何掛鉤過程或任何解釋相同的鏈接的信息。你是對的,他們大多數不會透露那裏的調查結果:) – RVN 2012-04-28 07:42:46
我沒有任何imagent的經驗。您將不得不使用MobileSubstrate來覆蓋方法或函數。 http://iphonedevwiki.net/index.php/MobileSubstrate 如果你不知道如何編寫MobileSubstrate的調整,只需谷歌。那裏有很多小教程。 這可能是最好的做你的第一步傾銷標題。轉儲imagent的頭文件和關聯的私有框架。另外,你可能需要一些逆向知識。 – YllierDev 2012-04-28 14:46:03
謝謝,會嘗試。 – RVN 2012-04-30 08:25:57