0
votes

Ouverture d'une URL dans mon application WebView à partir d'une notification qui ne fonctionne pas lorsque l'application provient de fermé

J'ai une application WebView iOS qui reçoit des notifications et je passe une URL de sorte que lorsque l'utilisateur clique sur la notification, il ouvrira la notification WebView à cette URL.

Lorsque l'application est au premier plan et l'arrière-plan, cela fonctionne bien. . Si l'utilisateur obtient la notification lorsque l'application est fermée et que l'application ne s'exécute pas actuellement, l'application s'ouvre mais ne va pas sur cette URL p>

dans mon Didreceiveremotenotification code> Je détecte les différents états du App mais je pensais que .Background travaillerait la même chose que ne pas courir mais je suppose que ça ne le fait pas. Comment puis-je obtenir la notification pour ouvrir l'URL provenant du moment où l'application est fermée? P>

Appdelegate.swift strong> p>

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    UNUserNotificationCenter.current().delegate = self
    ConnectionManager.sharedInstance.observeReachability()
    // Override point for customization after application launch.
    FirebaseApp.configure()
    registerForPushNotifications()

    if launchOptions != nil {
        // opened from a push notification when the app is closed
        let userInfo = launchOptions?[.remoteNotification] as? [AnyHashable : Any]
        if userInfo != nil {
            if let object = userInfo?["aps"] as? [String : AnyObject] {
                let url = object["url"]
                viewController?.loadRequestnotification(for: url as! String)
            }
        }
    }
    return true
}


8 commentaires

Appdelegate.php ??? Vous développez une application iOS en PHP !!!


L'application a été tuée état, lorsque la notification apparaît alors votre application dans l'initialisation et commence à partir de l'état de l'application du déjeuner, de sorte que le contrôleur ne s'initialise pas avant. Il ne sera jamais redirigé vers WebView Controller. Tout d'abord, vous devez identifier votre racine racineviewController, puis rediriger vers WebViewController. alors c'est du travail


À ce moment-là, vérifiez quefinishlaunchingwithoptions -> Lancer des lancements, il devrait y avoir un dictionnaire avec des informations.Le débogage de cela plus profond. Quand ce dictionnaire contient ce dictionnaire contient cette URL, redirige vers la mentalité respective.


Avez-vous vérifié que ViewController n'est pas nil ? Vous pouvez faire un chèque et s'il est, stockez l'URL dans une variable et transmettez-la sur ViewController.DiDset


Lorsque l'application est fermée, vous recevez une notification dans Application (_: DidLaunch Option: _)


@spael lol désolé signifie écrire rapidement


Je suis un peu plus éloigné. J'ai édité ma question avec une mise à jour si vous pouvez jeter un coup d'oeil.


Lorsqu'il ne fonctionne pas, essayez d'impression d'un objet ViewController puisqu'il s'agit d'un objet facultatif et voyez s'il est nul ou non.Si c'est nul puis allouez-le puis appuyez sur cette vue de vue. Si alors rien ne fonctionne, veuillez expliquer en détail ce qui se passe exactement.


3 Réponses :


1
votes
  • Didreceiveremotenotification ne sera pas appelé tandis que l'application est fermée.

    Essayez ce code lorsque votre application est fermée pour obtenir des données de notification. XXX


8 commentaires

Jetez un coup d'œil à ma question. Je l'ai édité. Je suis plus éloigné de votre réponse, mais la View ne ouvre toujours pas l'URL. Il ouvre juste l'application


Obtenez-vous URL pour webview en notification? Et vous devez définir le contrôleur root (ViewController -That contient WEBView) pour l'ouvrir.


Je suppose que lanceursOptions contiendra les données de la notification lors de sa pression?


Vous faites quelque chose de mal avec ViewController? .LoaderReQuestNotification (pour: URL As! String)


Vous ne pouvez pas démarrer ViewController comme ceci, vous devez plutôt la définir en tant que contrôleur root.


Non, j'utilise aussi que dans mon didreceiveremotenotification pour quand une notification est enfoncée lorsque l'application est en arrière-plan ou au premier plan et cela fonctionne bien.


J'ai édité la réponse. Vous devez définir un contrôleur racine là-bas.Vérifiez dans Google Comment définir le contrôleur racine


Laissez-nous Continuer cette discussion en chat .



0
votes

Il y a un scénario comme votre application ne fonctionne pas et que l'utilisateur clique sur la notification de votre application puis en suivant la façon dont vous pouvez l'obtenir.

Voici le code que vous pouvez l'obtenir xxx

Votre application peut avoir reçu une notification et son centre de notification, mais l'utilisateur ne peut cliquer sur aucune notification, mais ils ouvriront votre application comme normalement, vous pouvez suivre une manière, vous pouvez Obtenez toute la notification reçue par votre application. xxx


0 commentaires

0
votes

Ceci est la fonction qui a appelé lorsque l'application reçoit une notification. J'ai utilisé cela dans mon application de conversation.

func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
    completionHandler(UNAuthorizationOptions.alert.rawValue | UIUserNotificationType.sound.rawValue | UIUserNotificationType.badge.rawValue)
}


0 commentaires