ios 11 imessage扩展message.url不会打开safari
问题描述:
我要添加一个iMessage extension
目标到我的应用程序。该扩展应该发送具有url
属性的消息。当用户触摸消息时,我期望的行为是使用消息的url
属性打开浏览器。ios 11 imessage扩展message.url不会打开safari
我在messageView
一个按钮,执行此代码:
@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)
}
如果我触摸消息,它扩展了MessageViewController
然后我加入了这一点:
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)
}
}
而现在,当我触摸邮件时,它会打开我的主应用程序,但仍然不是我的浏览器。
我看到的another post(这里我不能评论,于是我开了这个帖子),这是不可能的Safari
打开,但我有一个news app这将插入的文章链接,并允许与该消息的点击打开文章在浏览器窗口中,而应用程序已安装。
那么,有人可以告诉我如何继续强制在浏览器窗口中打开链接?
非常感谢。
答
这是在消息中插入链接的技巧。它不允许创建具有url属性的对象,而只是直接插入将在Safari
中打开的链接。
activeConversation?.insertText("https://google.com", completionHandler: nil)
您可以使用'SFSafariViewController'。正如另一篇帖子所指出的,你不能将用户从消息扩展中踢出Safari。 – beyowulf
感谢您的回答。如果我没有在浏览器中打开窗口的新闻应用程序,我会在其他帖子中考虑答案。 – radar