2017-06-08 5 views
0

J'ai aussi vu beaucoup de questions de débordement de pile liées à ma question, j'ai implémenté toutes les choses qu'ils ont mentionnées et ça ne marche toujours pas. Avant de signaler un doublon, veuillez passer en revue ma question complète et j'ai mis en œuvre tous les changements requis. J'essaie d'ouvrir l'application client de messagerie Outlook à partir de mon application. S'il vous plaît trouver le code ci-dessouscanOpenURL est en panne mais l'open fonctionne pour Outlook iOS

let url = URL(string: "ms-outlook://[email protected]&subject=Mobile%20App%20Feedback") 
    if UIApplication.shared.canOpenURL(url!) { 
     UIApplication.shared.open(url!) 
    } 
    else 
    { 
      AppDelegate.sharedDelegate().getRootViewController().showAlert(title: "Cannot send email", message: "There is no Outlook app installed on your device device.") 
    } 

J'ai également ajouté ms-outlook dans mon plist aussi.

<key>LSApplicationQueriesSchemes</key> 
<array> 
    <string>ms-outlook</string> 
</array> 

Je reçois l'erreur ci-dessous

"This app is not allowed to query for scheme ms-outlook" 

Je teste dans l'appareil réel aussi. Si je supprime le contrôle canOpenURL et ouvre directement l'url fonctionne bien. Je n'ai aucune idée de ce qui m'a manqué. Merci d'avance.

+1

double possible de [canOpenUrl - Cette application ne peut pas interroger pour le régime Instragram] (https://stackoverflow.com/questions/32870393/canopenurl-this-app-is-not-allowed-to- query-for-scheme-instragram) – DonMag

+0

Ou ... dans le code que vous avez posté, qu'est-ce que 'urlScheme!'? Si je remplace cela par '.canOpenURL (url!)' Cela fonctionne bien - j'obtiens un message d'erreur 'failed for URL:" ms-outlook: // ... 'et le' if' échoue (par opposition à ' – DonMag

+0

J'ai mis à jour ma question, erreur typo – Warrior

Répondre

0

Je suis sorti avec une autre option.

let scheme : String = "ms-outlook://[email protected]&subject=Mobile%20App%20Feedback" 

    if let url = URL(string: scheme) { 
     UIApplication.shared.open(url, options: [:], completionHandler: { 
      (success) in 
      if (success) 
      { 
       print("Open \(scheme): \(success)") 
      } 
      else 
      { 
       AppDelegate.sharedDelegate().getRootViewController().showAlert(title: "Cannot send email", message: "There is no Outlook app installed on your device.") 
      } 
     }) 
    }