2012-12-23 1 views
0

J'aime montrer la dernière notification Push sur une étiquette dans mon principal StoryBoard j'utiliser ce code pour afficher le message d'alerte dans mon AppDelegate.m:Est-il possible d'afficher la dernière notification push dans une étiquette dans StoryBoard?

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { 

    NSDictionary *test =(NSDictionary *)[userInfo objectForKey:@"aps"]; 
    NSString *alertString =(NSString *) [test objectForKey:@"alert"]; 
    NSLog(@"String recieved: %@",alertString); 


    UIApplicationState state = [[UIApplication sharedApplication] applicationState]; 

    if (state == UIApplicationStateActive) { 
     UIAlertView *alertmessage=[[UIAlertView alloc]initWithTitle:@"Geier" 
                  message:alertString             delegate:self 
                cancelButtonTitle:@"OK" 
                otherButtonTitles:nil]; 


     [alertmessage show]; 

     AudioServicesPlaySystemSound(1002); 


    } 

} 

j'ai essayé dans mon fichier ViewController.m mais latestpush.text = @"%@",alertString; ça ne marche pas.

Quelqu'un peut-il m'aider?

Merci :)

Répondre

1

Vous devez rendre le texte à la disposition du contrôleur de vue.

Vous pouvez le faire en envoyant une coutume NSNotification avec le message d'alerte, à l'intérieur application:didReceiveRemoteNotification:

[[NSNotificationCenter defaultCenter] 
     postNotificationName:@"PushAlertNotification" 
     object:self 
     userInfo:@{@"alertString":alertString}]; 

Dans la méthode viewDidLoad de votre contrôleur de vue, inscrivez-vous à titre d'observateur:

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(updateStoryboard:) 
             name:@"PushAlertNotification" 
             object:nil]; 

et créer la updateStoryboard: méthode dans le contrôleur de vue:

- (void) updateStoryboard:(NSNotification *) notification { 
    self.latestpush.text = notification.userInfo[@"alertString"]; 
} 

Une solution alternative consiste à créer une propriété dans votre AppDelegate qui prend en compte le ViewController en tant qu'observateur. AppDelegate.h (changez ViewController en fonction du type réel de votre VC)

AppDelegate.h

@property (nonatomic, weak) ViewController *observer;

l'intérieur de la créer ViewController une méthode qui accepte la NSString et ont cette méthode mettre à jour votre Storyboard.

ViewController.m

-(void)updateStoryboard(NSString *alertString) { 
    self.latestpush.text = alertString; 
} 

également, dans votre méthode viewDidLoad de ViewContoller, vous inscrire auprès du appDelegate:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    AppDelegate *delegate = (AppDelegate *)[UIApplication sharedApplication].delegate; 
    delegate.observer = self; 
} 

Appel updateStoryboard dans votre méthode application:didReceiveRemoteNotification::

[self.observer updateStoryboard:alertString];

+0

@j_Shapiro B D'autres méthodes ne fonctionneront pas pour moi :(mais je l'ai fait exactement comment vous l'avez dit. –

+0

Donnez-moi plus d'informations pour continuer ... comment ne fonctionnent-ils pas? AlertString est-il nul avant de créer la notification? Quelles erreurs voyez-vous? –

+0

Il n'y a pas d'erreur lorsque le Push est entré, mais l'étiquette n'est pas remplie avec le message Push. –

Questions connexes