2010-10-06 13 views
1

Comment puis-je détecter que le SMS reçu est lu ou non par l'utilisateur, je l'utilise aussi plaidoyers en-tête CTMessageCenter me aider ..message lu ou non iphone

et aussi me dire comment puis-je mettre mon application en arrière-plan en continu ....

+2

Ceci est deux questions. Ils devraient être demandés séparément. De plus, vous ne fournissez pas assez d'informations. Enfin, il n'y a aucun moyen de détecter si un utilisateur a lu un SMS ou non. À l'avenir, s'il vous plaît se référer à http://stackoverflow.com/questions/how-to-ask – Jasarien

Répondre

1

je pense qu'il n'y a pas de méthode dont on peut retrouver ce message est lu ou non non jailbreak ...

0

ya vous pouvez lire votre message entrant et envoyer votre also.In principale. m écrivez ce code et utilisez trois fichiers: CoreTelephony.h, CTMessage.h, CTMessageCenter.h Un problème avec ceci utilisant cette manière que vous ne pouvez pas soumettre votre application sur App Store.

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]; 
} 
+0

merci pour la réponse. Mais est-ce possible en utilisant un cadre public. – Sukeshj

+1

Non privé et vous ne pouvez pas télécharger votre application sur appstore, ils vont rejeter this.Apple ne permet pas d'accéder à des informations privées dans les applications –