2011-12-30 42 views
12

Tôi hiện đang cố viết một ứng dụng chặn tin nhắn văn bản và phản ứng tùy thuộc vào nội dung của tin nhắn đó. Tôi đã cố gắng để móc vào phương pháp _receivedMessage:(struct __CKSMSRecord *)message replace:(BOOL)replace trong lớp CKSMSService nhưng điều này dường như không được gọi là ở tất cả.IOS Jailbreak Làm cách nào để chặn tin nhắn SMS/tin nhắn văn bản

Có thể ai đó vui lòng cho tôi biết chức năng/lớp học mà tôi phải kết nối? Tôi cần phải đánh chặn tin nhắn văn bản trước khi nó được hiển thị và lưu vào cơ sở dữ liệu. Tôi đang ở trên iOS 5.0.1.

Bất kỳ trợ giúp nào thực sự được đánh giá cao.

+0

Nếu bạn quan tâm đến câu hỏi này tại sao không hỗ trợ đề xuất Khu vực 51 cho [trang web Exchange Exchange bị phá vỡ do nhà tù] (http://area51.stackexchange.com/proposals/18154/ios-jailbreaking-development?referrer=EuWVi6IpN0_KzzEhC7I -Qw2) – rjstelling

Trả lời

10

Đoạn mã này sẽ chặn tin nhắn SMS- Bạn có thể mở rộng nó cho các loại thông báo khác. Sẽ hoạt động trên iOS 5.0.1. Tuy nhiên, không hoạt động với iMessages. Liên kết với khung CoreTelephony (có bó tiêu đề tin có mà bạn muốn thể lớp-dump)

#include <dlfcn.h> 

#define CORETELPATH "/System/Library/PrivateFrameworks/CoreTelephony.framework/CoreTelephony" 
id(*CTTelephonyCenterGetDefault)(); 

void (*CTTelephonyCenterAddObserver) (id,id,CFNotificationCallback,NSString*,void*,int); 


static void telephonyEventCallback(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo) 
{ 
    NSString *notifyname=(NSString *)name; 
    if ([notifyname isEqualToString:@"kCTMessageReceivedNotification"])//received SMS 
    { 
     NSLog(@" SMS Notification Received :kCTMessageReceivedNotification"); 
     // Do blocking here. 
    } 
} 

-(void) registerCallback { 

void *handle = dlopen(CORETELPATH, RTLD_LAZY); 
    CTTelephonyCenterGetDefault = dlsym(handle, "CTTelephonyCenterGetDefault"); 
    CTTelephonyCenterAddObserver = dlsym(handle,"CTTelephonyCenterAddObserver"); 
    dlclose(handle); 
    id ct = CTTelephonyCenterGetDefault(); 

    CTTelephonyCenterAddObserver(
           ct, 
           NULL, 
           telephonyEventCallback, 
           NULL, 
           NULL, 
           CFNotificationSuspensionBehaviorDeliverImmediately); 
} 
+0

Làm thế nào để bạn thấy các tiêu đề riêng tư và loại bỏ chúng? – brianestey

+0

Xin chào @rajagp, bạn có biết cách chặn tin nhắn sau khi nhận được thông báo không? – RVN

+0

Có cách nào khác để làm điều đó không. Tôi đang sử dụng tập tin tiêu đề Coretelephony.h. Tôi có thể thực hiện thông báo sms bằng cách sử dụng tiêu đề này không. –

1

Mặc dù các poster đã chấp nhận rajagp's answer, tôi khá chắc chắn rằng nó không làm những gì các câu hỏi thực sự hỏi , trên iOS 5. Đối với iOS 5, tôi không còn thấy thông báo nội dung nữa, mặc dù tôi được thông báo rằng có một tin nhắn mới.

Vì vậy, những gì tôi đã làm là xử lý thông báo của rajagp cho kCTMessageReceivedNotification và bên trong nó, use the code posted here to actually get the content of the text message, từ cơ sở dữ liệu SMS.

0

Điều này vẫn hoạt động trên iOS 7, nhưng tôi thấy rằng bạn cần một chút chậm trễ sau khi nhận được thông báo kCTMessageReceivedNotification. Khác bạn sẽ bỏ lỡ các tin nhắn SMS vừa nhận được. Tôi sử dụng độ trễ 0,1 giây, với [self performSelector .. afterDelay: 0.1];

Các vấn đề liên quan