Mon application autorise les notifications Push à distance à un utilisateur. Comment puis-je l'activer pour qu'il soit ouvert dans un contrôleur de vue spécifique lorsque l'utilisateur appuie sur la notification Push? Je souhaite que l'application s'ouvre et accède à un contrôleur de vue spécifique en fonction de la notification Push reçue.
Pour ce faire, vous devez définir une identifier
pour chaque ViewController
avec laquelle votre application peut être ouverte, puis vérifier la payload
dans l'argument launchOptions
de application:didFinishLaunchingWithOptions:
dans votre AppDelegate
. Voici comment procéder:
Dans votre PFPush
, utilisez setData
pour ajouter une clé à votre charge utile avec l'identifiant: notification.setData(["alert":"your notification string", "identifier":"firstController"])
Définissez la identifier
sur chaque ViewController
en la sélectionnant et en modifiant les valeurs suivantes
payload
avec la clé identifier
if let payload = launchOptions?[UIApplicationLaunchOptionsRemoteNotificationKey] as? NSDictionary, identifier = payload["identifier"] as? String {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier(identifier)
window?.rootViewController = vc
}
Dans AppDelegate, vous obtiendrez un rappel aux méthodes "didFinishLoading" ou "didReceivePushNotification" (selon que votre application est en arrière-plan ou au premier plan). Dans cette méthode, obtenez l'instance du contrôleur de vue la plus en haut, puis créez le contrôleur de vue que vous souhaitez afficher et présenter/Push à partir du contrôleur de vue le plus en haut.
UILocalNotification *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if (notification)
{
[self application:application didReceiveRemoteNotification:(NSDictionary*)notification];
}