【发布时间】:2017-09-22 15:21:30
【问题描述】:
我正在向我的应用程序添加一个iMessage extension 目标。该扩展应该发送一条具有url 属性的消息。当用户触摸消息时,我期望的行为是使用消息的url 属性打开浏览器。
我的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 插入文章链接并允许单击安装应用时在浏览器窗口中打开文章的消息。
那么,谁能告诉我如何继续在浏览器窗口中强制打开链接?
非常感谢。
【问题讨论】:
-
您可以使用
SFSafariViewController。正如另一篇文章指出的那样,您不能将用户从消息扩展中踢出到 Safari。 -
感谢您的回答。如果我没有在浏览器中打开窗口的新闻应用程序,我会考虑其他帖子中的答案。
标签: ios swift safari imessage-extension