7
votes

Comment accéder aux données de notification de push à distance sur ApplicationDidbecomomeactive?

Lors de la réception d'une notification de poussée à distance, l'application est en arrière-plan, l'application entre applicationsDecomomeactive. De là, comment puis-je accéder à la nsdiction des données de la notification?


0 commentaires

4 Réponses :


14
votes

Les données de notification sont livrées à votre application dans Application: Didreceiveremotenotification: . Si vous souhaitez le traiter dans ApplicationDidbecomeactive: Vous devez l'enregistrer dans Application: Didreceiveremotenotification: et lisez-le dans ApplicationDidbecomeactive . .


2 commentaires

Désolé de faire revivre cela, mais que se passe-t-il lorsque vous recevez la notification sur demande: Didreceiveremotenotification et votre demande sont au premier plan, ce qui signifie que l'applicationDecomomeActive ne sera pas appelée.


Dans Application: Didreceiveremotenotification: Vous pouvez interroger - [UIAUPPLICATION ApplicationState] Pour savoir si votre application est déjà au premier plan. S'il est alors, traitez simplement la notification immédiatement.



0
votes

Si votre application est dans L'état de l'état Lorsque la notification push est reçue et à tarauder, l'application sera invoquée avec Application: Didfinishlaunchingwithoption: et non Application: DidreceiveremotNotification : .

La charge utile de notification push peut être consultée dans Application: DidfinishlaunchingwithOptions: à partir de LaunchOptions Dictionnaire.


1 commentaires

Ceci n'est pas correct Application: DidfinishlaunchingwithOptions: n'est pas appelé lorsque l'application est en arrière-plan, cela ne s'appelle que lorsque l'application commence. Ce que vous dites est totalement oposite, il sera d'abord appelé application: Didreceiveremotenotification: puis ApplicationDidbecomeactive:



1
votes

J'utilise ce code pour gérer la poussée:

dans l'appdelegate xxx

J'espère que ce sera utile pour quelqu'un.

heureux codage.


0 commentaires

2
votes

Version SWIFT:

var dUserInfo: [NSObject : AnyObject]?

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

// code...

if let info = launchOptions?[UIApplicationLaunchOptionsRemoteNotificationKey] as? [NSObject : AnyObject] {
        dUserInfo = info
    }

    return true
}

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {
    dUserInfo = userInfo
}

func applicationDidBecomeActive(application: UIApplication) {
    // code...

    self.yourAction(dUserInfo)
}

func yourAction(userInfo: [NSObject : AnyObject]?) {
    if let info = userInfo?["aps"] as? Dictionary<String, AnyObject> {
    }
}


0 commentaires