有没有办法从容器应用程序中打开 iMessage 扩展程序?

Posted

技术标签:

【中文标题】有没有办法从容器应用程序中打开 iMessage 扩展程序?【英文标题】:Is there are way to open an iMessage extension from within the container app? 【发布时间】:2016-08-10 16:58:04 【问题描述】:

到目前为止,我遇到的情况是,您可以使用 openURL: 方法从扩展程序启动嵌入应用程序,但有没有办法实现相反的效果?

我很想知道是否可以在我的容器应用中做一些事情来创建一个 MSMessage 实例并启动我的 iMessage 应用扩展。这可行吗?

【问题讨论】:

【参考方案1】:

如果其他人有兴趣,从 Xcode 8.0 beta 6 开始,MFMessageComposeViewController 声明了一个类型为 MSMessage 的属性消息,它允许您从跳板应用程序中创建交互式消息,以便首先使用它来实现我想要的.但是,它不允许您打开容器应用程序。

这是我的代码:

let message = MSMessage()
message.url = // Your message url
message.layout = MSMessageTemplateLayout()
message.summaryText = // Summary text

let messageViewControler = MFMessageComposeViewController()
messageViewControler.message = message

show(messageViewControler, sender: self)

【讨论】:

你能分享一下例子吗?我正在使用 MSMESSAGE,但它无法打开我的父应用程序深层链接 @grzegorz 你有代码 sn-p 来显示你是如何完成这个的吗? 这很简单。您基本上创建并呈现一个带有您的应用程序扩展可以读取的 url 的视图控制器。我已将代码添加到我的答案中。 @grzegorz 使用上面代码中的方法,我会弹出消息,但无法选择 iMessage 应用商店。你以前见过这个问题吗?? @illis69 不确定我有。我注意到在常规 iMessage 中指定收件人之前,它是不可点击的。【参考方案2】:

很遗憾,目前这是不可能的。你可以在这个线程中阅读它:https://forums.developer.apple.com/thread/50375

【讨论】:

感谢您的链接!正如我的回答中所述,我决定使用 MSMessage 来执行此操作,但解决方案远非理想。

以上是关于有没有办法从容器应用程序中打开 iMessage 扩展程序?的主要内容,如果未能解决你的问题,请参考以下文章

iMessage 扩展:从不同的目标获取 bundle nil

自定义扩展文件未在 iMessage 中打开

自定义扩展文件未在iMessage中打开

为 iMessage 动态加载贴纸

类似于 iMessage 的拆分视图控制器中的弹出视图控制器?

iMessage 扩展和 CoreData