web-dev-qa-db-fra.com

notification locale iphone dans le simulateur

Je viens de télécharger xcode et d'essayer de faire un exemple de notification locale. La question est de savoir si la notification locale fonctionne dans le simulateur?

merci

38
user349302

Oui, les notifications locales fonctionnent avec le simulateur. Cependant, assurez-vous que vous implémentez application:didreceiveLocalNotification dans le délégué de votre application si vous souhaitez voir la notification lorsque votre application est au premier plan:

- (void)application:(UIApplication *)application
    didReceiveLocalNotification:(UILocalNotification *)notification
{
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"MyAlertView"
        message:notification.alertBody
        delegate:self cancelButtonTitle:@"OK"
        otherButtonTitles:nil];
    [alertView show];
    if (alertView) {
        [alertView release];
    }
}

Sinon, assurez-vous de planifier votre notification pour un certain temps dans le futur, puis fermez l'application, afin de voir l'exemple de travail Apple:

UILocalNotification *localNotif = [[UILocalNotification alloc] init];
if (localNotif == nil) return;
NSDate *fireTime = [[NSDate date] addTimeInterval:10]; // adds 10 secs
localNotif.fireDate = fireTime;
localNotif.alertBody = @"Alert!";
[[UIApplication sharedApplication] scheduleLocalNotification:localNotif];
[localNotif release];

Il est facile de penser que vous n'implémentez pas correctement le code de test et que vous ne gérez simplement pas l'événement pendant que l'application est en cours d'exécution.

67
bojolais

Un autre problème que vous pourriez trouver, pour tous ceux qui trébuchent sur cette question plus ancienne: iOS 8 a introduit de nouvelles autorisations de notification; et votre application doit les demander explicitement.

Dans votre AppDeligate.m:

- (BOOL)application:(UIApplication *)application 
          didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    //register local notifications
    if ([UIApplication instancesRespondToSelector:@selector(registerUserNotificationSettings:)]){
        [application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]];
    }

    //the rest of your normal code

    return YES;
}

Si vous ne le faites pas, votre notification ne se déclenchera jamais et vous obtiendrez un merveilleux message comme celui-ci dans vos journaux: "Attempting to schedule a local notification <UIConcreteLocalNotification: 0x7ae51b10>{... alert details ...} with an alert but haven't received permission from the user to display alerts "

20
mix3d

les notifications locales fonctionnent sur le simulateur, les notifications push ne le font pas

7
Aaron Saunders

Oui La notification locale fonctionne sur la notification locale. Cliquez ici pour Apple doc.

1
apoorv shah

Pour tester les notifications locales dans le simulateur d'iphone, procédez comme suit:

  1. Comme l'heure du simulateur est exactement celle de votre macbook, changez l'heure de votre mac en 1 minute avant l'heure souhaitée (lorsque vous vous attendez à ce que votre notification locale se déclenche)
  2. Redémarrez le simulateur (c'est gênant, mais il semble parfois que le simulateur d'iphone n'obtienne pas l'heure de mise à jour actuelle instantanément)
  3. Exécutez à nouveau le simulateur (peut-être en exécutant votre application à partir de xcode, auquel cas vous devez appuyer sur le bouton d'accueil pour envoyer votre application en arrière-plan) .Une fois l'heure atteinte, vous devriez recevoir la notification.

Ces étapes m'ont toujours aidé à obtenir des notifications locales réussies.

0
Munim Dibosh