2010-08-11 4 views
1

J'ai mis en œuvre le service de notification Apple Push en utilisant Urban Airship et j'ai reçu avec succès la notification dans mon application. Si je reçois la notification, la vue d'alerte s'affiche. Si je clique sur le bouton d'affichage dans la vue d'alerte, il démarre l'application. Généralement cela arrive dans APNS. Mais mon client veut, Si des mises à jour se sont produites dans le flux RSS et la vue d'alerte vient, Si nous cliquons sur la vue en vue d'alerte, il faut aller au flux particulier dans l'application, ne démarre pas l'application. SO c'est possible de faire ça? Est-il possible d'écrire les événements pour les boutons de vue d'alerte particulier dans mon application.Apple Push Notification Service utilisant Urban Airship dans iPhone

Voici mon exemple de code est,

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ 

     [[UIApplication sharedApplication] registerForRemoteNotificationTypes: UIRemoteNotificationTypeBadge               | UIRemoteNotificationTypeSound                   | UIRemoteNotificationTypeAlert]; 

     [window addSubview:viewcontrollers.view]; 

     [window makeKeyAndVisible]; 

     NSLog(@"remote notification2: %@",[launchOptions description]); 

     return YES; 

    } 

Dans cette méthode didFinishLaunchingWithOptions, je ne peux pas obtenir les valeurs du dictionnaire et obtenir toujours la valeur nulle. Est-il possible d'obtenir la valeur du dictionnaire dans cette méthode (Notification vient).

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

      NSString *message = [userInfo descriptionWithLocale:nil indent: 1]; 

      NSLog(@"The message string is %@",message); 

      UIAlertView *alert = [[UIAlertView alloc] initWithTitle: @"Remote Notification" message: message delegate: nil cancelButtonTitle: @"ok" otherButtonTitles: nil]; 
      [alert show]; 
      [alert release]; 
     } 

Dans cette méthode, je pourrais obtenir la valeur du dictionnaire. Mais cette méthode appelle uniquement, si une mise à jour se produit lors de l'exécution dans l'application.

S'il vous plaît me guider!

Merci

Répondre

4

Il est en effet possible de le faire. Dans votre méthode application:didReceiveRemoteNotification, vous recevrez un NSDictionary avec toutes les données de la notification push. Ce que vous voulez faire est d'envoyer un identifiant ou une URL dans la charge utile à Urban Airship. Quelque chose comme:

{ 
    "aps": { 
     "alert": "New RSS entry" 
    }, 
    "entry_id": "XYZ123" 
} 

Et puis vous pouvez écrire du code pour aller chercher l'entrée de flux appropriée dans votre application.

+0

+1, @robotadam, Than ks pour la réponse. Voir ma question mise à jour et s'il vous plaît mentionné Ce que j'ai mal fait. Merci. – Pugal

+0

Je ne suis pas sûr de savoir quelle est votre question maintenant - vous avez les données de la notification push, oui? Le reste semble être un crochet dans le reste de votre code. – robotadam

+0

@robotadam - Je pense qu'il dit cette application: didReceiveRemoteNotification ne se fait appeler que quand l'application est au premier plan lorsqu'une notification arrive. –

1

Lorsque l'application ne fonctionne pas ou a été interrompue par le système et l'application est lancée par la notification:

Dans ce cas, vous devez obtenir le dictionnaire de notification (qui lui-même est une valeur des launchOptions):

http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIApplicationDelegate_Protocol/Reference/Reference.html#//apple_ref/doc/uid/TP40006786-CH3-SW18

Je suppose que le code serait quelque chose comme ceci:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ 

    NSDictionary *remoteNotification = (NSDictionary *) [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]; 
    if (remoteNotification != nil) { 
      NSString *message = [remoteNotification descriptionWithLocale:nil indent: 1]; 
    }  
} 
Questions connexes