使用Swift在iMessage中发送多条消息

时间:2018-04-14 01:29:08

标签: ios swift send imessage-extension msmessage

我正在为iMessage编写应用程序,并希望在用户点击imessage应用程序屏幕时自动发送消息。

消息由位置地址的地图组成。

最初,我曾尝试使用message.url来包含maps.apple.com网址,这样当接收方点击收到的消息时,它会打开地图。

但这似乎不起作用。所以我试图分别发送地址:首先是图像然后是地址。接收器然后可以点击地址并打开地图。

我有以下代码:

    if let image = createImageForMessage(), let conversation = activeConversation {

        let layout = MSMessageTemplateLayout()
        layout.image = image

        let message = MSMessage()
        message.layout = layout

        //conversation.insert(message, completionHandler: nil)
        //conversation.insertText("We are at:\n" + addressLabel, completionHandler: nil)

        conversation.send(message, completionHandler: nil)
        conversation.sendText("We are at:\n" + addressLabel, completionHandler: nil)

    }

理想情况下,我希望它只需要初始点击,但使用“send”和“sendText”只发送第一个“发送”指令,“sendText”被忽略。

如果我使用了注释掉的“insert”和“insertText”,那么两条指令都会被执行但我必须点击“发送”才能发送它。

我试过了:

        conversation.insert(message, completionHandler: nil)
        conversation.sendText("We are at:\n" + addressLabel, completionHandler: nil)

但那没用。只发送了文本。图像根本没有显示出来。

有人知道如何只用一次点击发送这两封邮件吗?

或者,是否有人知道我是否可以将两个消息组合成一个消息?

2 个答案:

答案 0 :(得分:0)

在进一步了解之后,好像在macOS上使用了url var on消息,但似乎忽略了。看起来您也可以将一些逻辑放入一些委托方法来打开视图控制器,您可以在其中放置可以打开的URL,尽管我不确定这是否意味着您发送的每个人这些消息需要安装扩展程序(我假设您希望避免该要求)。可以在此处找到一个有趣的网站(通过示例项目获得一些额外的详细信息):https://medium.com/swift-programming/learn-how-to-build-an-imessage-app-with-swift-7b106ce9b033

所有这一切都说我确实有一个"解决方案"虽然我不能说我推荐它(我不是使用延迟的解决方案的粉丝)。但是,这将成功发送您构建的消息,然后发送包含文本的消息。它似乎与您在插入消息然后插入文本和用户单击发送时看到的行为几乎完全相同。因此,尽管我不喜欢延迟实现这一目标,但最终结果似乎是正确的。

        conversation.send(message, completionHandler: { _ in
            DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 2.0, execute: {
                conversation.sendText("http://www.google.com", completionHandler: nil)
            })
        })

我希望这会有所帮助。

答案 1 :(得分:0)

通过查看$xml = '<Request Version="1.0" encoding="utf-8"> <d>2</d> <a>AF-TVOD</a> <l>esp</l> </Request>'; $funcion = "GetHotels"; 的文档,您似乎无法同时拥有两条待处理的消息。

我会尝试:

MSConversation