сообщение прочитано или нет iphone - PullRequest
1 голос
/ 06 октября 2010

как я могу определить, что полученные смс прочитаны или нет пользователем, я использую заголовок CTMessageCenter, также, пожалуйста, помогите мне ..

, а также скажите мне, как я могу непрерывно помещать свое приложение в фоновый режим ....

Ответы [ 2 ]

1 голос
/ 26 ноября 2010

Я думаю, что нет способа, с помощью которого мы можем найти, что сообщение читается или нет в не джейлбрейке ...

0 голосов
/ 13 апреля 2012

Да, вы можете прочитать входящее сообщение и отправить его. На вашем main.m напишите этот код и используйте три файла: CoreTelephony.h, CTMessage.h, CTMessageCenter.h Одна проблема, связанная с этим, заключается в том, что вы не можете отправить свое приложение в магазин приложений.

static void callback(CFNotificationCenterRef center, void *observer, NSString* name, const void *object, NSDictionary* info) {
    fprintf(stderr, "Notification intercepted: %s\n", [name UTF8String]);
    if([name isEqualToString:@"kCTMessageReceivedNotification"] && info)
    {
        NSNumber* messageType = [info valueForKey:@"kCTMessageTypeKey"];
        if([messageType isEqualToNumber:[NSNumber numberWithInt:1]])
        {
            NSNumber* messageID = [info valueForKey:@"kCTMessageIdKey"];
            CTMessageCenter* mc = [CTMessageCenter sharedMessageCenter];
            CTMessage* msg = [mc incomingMessageWithId:[messageID intValue]];
            NSObject<CTMessageAddress>* phonenumber = [msg sender];

            NSString *senderNumber = (NSString*)[phonenumber canonicalFormat];
            NSString *sender = (NSString*)[phonenumber encodedString];
            CTMessagePart* msgPart = [[msg items] objectAtIndex:0]; //for single-part msgs
            NSData *smsData = [msgPart data];
            NSString *smsText = [[NSString alloc] initWithData:smsData encoding:NSUTF8StringEncoding];
            fprintf(stderr, "SMS Message from %s / %s: \"%s\"\n",[senderNumber UTF8String],[sender UTF8String],[smsText UTF8String]);
        }
    }
    return;
}


int main(int argc, char **argv)
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

    id ct = CTTelephonyCenterGetDefault();
    CTTelephonyCenterAddObserver(ct, NULL, callback, NULL, NULL, CFNotificationSuspensionBehaviorHold);

    // Start the run loop. Now we'll receive notifications.
    [[NSRunLoop currentRunLoop] run];
    NSLog(@"you are in main thread");
    [pool drain];
    printf("Unexpectedly back from CFRunLoopRun()!\n");
    [pool release];
}
...