2016-12-09 1 views
1

Contexte: Mon iOS App utilise les notifications locales I Calendrier des notifications locales puis je reçois un appel de retour via didRecieveLocalNotifications lorsque le feu de notifications.iOS notification locale - Callback quand en arrière-plan

Cela fonctionne bien lorsque l'application est en avant-plan cependant lorsque l'application va dans l'arrière-plan Je reçois la notification iOS mais aucun rappel.

Ma question: Comment obtenir un rappel d'iOS lorsque l'application est en arrière-plan?

Voici l'appel de code retour -

- (void)application:(UIApplication *)application didReceiveLocalNotification: (UILocalNotification *)notification 
{ 

    //call your method that you want to do something in your app 
    NSLog (@"Received Notification"); 
    [UIApplication sharedApplication].applicationIconBadgeNumber = 1; 
    [myRootController HandleLocalNotifications:notification]; 

} 
+0

Quel "rappel" obtenez-vous au premier plan? ? Montrez votre code, s'il vous plaît, afin que nous sachions de quoi vous parlez. – matt

+0

Mis à jour pour afficher le code de rappel – OneGuyInDc

+0

Très bien, merci. Vois ma réponse. – matt

Répondre

3

Vous décrivez application:didReceiveLocalNotification:. Ceci est obsolète dans iOS 10. Vous devriez mettre à jour le framework UserNotification.

Maintenant alors.

Si votre application est au premier plan, l'utilisateur ne reçoit aucune alerte. Au lieu de cela, vous obtenez application:didReceiveLocalNotification:.

Si votre application est et non, l'utilisateur reçoit une alerte. Par conséquent, vous faites pas obtenir application:didReceiveLocalNotification: car la notification a été déclenchée. Mais vous faire l'obtenir si le utilisateur a reçu la notification et a convoqué votre application en appuyant sur l'alerte de notification. Si l'utilisateur le fait, vous obtiendrez application:didReceiveLocalNotification: même en arrière-plan. Si votre application a été interrompue en arrière-plan, cependant, vous obtiendrez application:didFinishLaunchingWithOptions: (et vous pouvez consulter le options pour savoir que vous êtes lancé en raison de la notification). Si votre application était en arrière-plan ou ne fonctionnait pas, et que l'utilisateur ne saisit pas appuyez sur la notification et invoquez votre application, vous n'obtiendrez rien du tout et n'auras aucun moyen de savoir que la notification a été déclenchée. C'est parce que les notifications ne sont pas pour votre avantage mais sont un moyen d'envoyer un message à l'utilisateur . (Il semble, d'après votre question, que vous utilisiez abusivement les notifications locales comme moyen d'envoyer un message à vous-même.Ce n'est pas ce qu'ils sont.)

+0

Aha - Merci, je le comprends maintenant. Suivi - disons que votre application doit faire quelque chose à midi tous les jours tant qu'elle est en premier plan ou en arrière-plan. Quelle est la meilleure façon d'accomplir cela? – OneGuyInDc

+0

Ce n'est pas ce que vous avez demandé. Si ma réponse était juste et t'a aidé, j'espère que tu l'accepteras. Si vous avez une question différente, j'espère que vous poserez une nouvelle question - sauf ne la posez pas, car elle a été posée et répondue plusieurs fois sur Stack Overflow. – matt

+0

Merci - réponse acceptée. Pouvez-vous me montrer la réponse à mon suivi?La plupart des réponses suggèrent d'utiliser UILocalNotification pour cela et donc ma question originale – OneGuyInDc