2017-09-22 2 views
0

J'ajoute une cible iMessage extension à mon application. L'extension est censée envoyer un message avec un attribut url. Le comportement que j'attends lorsqu'un utilisateur touche le message est d'ouvrir le navigateur en utilisant l'attribut url du message.ios 11 imessage extension message.url n'ouvre pas le safari

J'ai un bouton dans mon messageView qui exécute ce code:

@IBAction func labelButton(_ sender: Any) { 
     let layout = MSMessageTemplateLayout() 
     layout.imageTitle = "iMessage Extension" 
     layout.caption = "Hello world!" 
     layout.subcaption = "Test sub" 
     guard let url: URL = URL(string: "https://google.com") else { return } 

     let message = MSMessage() 
     message.layout = layout 
     message.summaryText = "Sent Hello World message" 
     message.url = url 

     activeConversation?.insert(message, completionHandler: nil) 
    } 

Si je touche le message, il élargit le MessageViewController

Je puis ajouté ceci:

override func didSelect(_ message: MSMessage, conversation: MSConversation) { 

     if let message = conversation.selectedMessage { 
      // message selected 

      // Eg. open your app: 
      self.extensionContext?.open(message.url!, completionHandler: nil) 
     } 
} 

Et maintenant, quand je touche le message, il ouvre mon application principale mais toujours pas mon navigateur.

Je l'ai vu sur another post (où je ne peux pas commenter, donc j'ai ouvert ce post) qu'il est impossible d'ouvrir en Safari mais j'ai un news app qui insère des liens vers des articles et permet en un clic sur le message pour ouvrir la article dans une fenêtre de navigateur, alors que l'application est installée. Donc, quelqu'un peut s'il vous plaît dire comment je peux procéder à forcer l'ouverture du lien dans une fenêtre de navigateur?

Merci beaucoup.

+0

Vous pouvez utiliser un 'SFSafariViewController'. Comme le signale l'autre poste, vous ne pouvez pas expulser les utilisateurs vers Safari à partir d'une extension de messages. – beyowulf

+0

Merci pour votre réponse. J'aurais considéré la réponse dans l'autre poste si je n'avais pas cette application de nouvelles qui ouvre une fenêtre dans le navigateur. – radar

Répondre

0

Voici une astuce pour insérer un lien dans un message. Il ne permet pas de créer un objet qui possède un attribut url mais juste d'insérer directement un lien qui s'ouvrira en Safari.

activeConversation?.insertText("https://google.com", completionHandler: nil)