ios 11 imessage扩展名message.url未打开safari

ios 11 imessage扩展名message.url未打开safari,ios,swift,safari,imessage-extension,Ios,Swift,Safari,Imessage Extension,我正在向我的应用程序添加一个iMessage扩展名目标。扩展应该发送具有url属性的消息。当用户触摸消息时,我期望的行为是使用消息的url属性打开浏览器 我的messageView中有一个执行此代码的按钮: @IBAction func labelButton(_ sender: Any) { let layout = MSMessageTemplateLayout() layout.imageTitle = "iMessage Extension"

我正在向我的应用程序添加一个
iMessage扩展名
目标。扩展应该发送具有
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)
        }
}
现在,当我触摸信息时,它会打开我的主应用程序,但仍然不会打开我的浏览器

我在上看到(我无法发表评论,因此我打开了这篇文章)不可能在
Safari
中打开,但我有一个插件,可以插入文章链接,并允许在安装应用程序时单击消息在浏览器窗口中打开文章

那么,有人能告诉我如何在浏览器窗口中强制打开链接吗


非常感谢。

以下是在邮件中插入链接的技巧。它不允许创建具有url属性的对象,只允许直接插入将在
Safari
中打开的链接

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

下面是在消息中插入链接的技巧。它不允许创建具有url属性的对象,只允许直接插入将在
Safari
中打开的链接

activeConversation?.insertText("https://google.com", completionHandler: nil)
我已经发布了一个演示如何从iMessage扩展内部启动URL的文档。它只使用一个固定的URL,但启动代码是您所需要的

从我的

显然,要尝试的是
self.extensionContext.open
,它要求系统代表当前运行的应用程序扩展打开一个URL

那不行。但是,您可以迭代回响应器链,为open方法(实际上是iMessage实例)找到合适的处理程序,并使用该对象调用
open

这种方法适用于将打开本地应用程序的URL,如摄像头设置或web URL

主要

我已经发布了一个演示如何从iMessage扩展内部启动URL的文档。它只使用一个固定的URL,但启动代码是您所需要的

从我的

显然,要尝试的是
self.extensionContext.open
,它要求系统代表当前运行的应用程序扩展打开一个URL

那不行。但是,您可以迭代回响应器链,为open方法(实际上是iMessage实例)找到合适的处理程序,并使用该对象调用
open

这种方法适用于将打开本地应用程序的URL,如摄像头设置或web URL

主要


您可以使用
SFSafariViewController
。正如另一篇文章所指出的,你不能将用户从消息扩展踢到Safari。谢谢你的回答。如果我没有这个在浏览器中打开窗口的新闻应用程序,我会考虑其他帖子中的答案。你可以使用
SFSafariViewController
。正如另一篇文章所指出的,你不能将用户从消息扩展踢到Safari。谢谢你的回答。如果我没有这个在浏览器中打开窗口的新闻应用程序,我会考虑另一篇文章中的答案。