带有 Parse 的 iMessage 扩展

Posted

技术标签:

【中文标题】带有 Parse 的 iMessage 扩展【英文标题】:iMessage Extension with Parse 【发布时间】:2016-10-08 04:13:31 【问题描述】:

我正在尝试为我的应用构建 iMessage 扩展,但需要 Parse 来提取数据。我遇到的问题是,当我将 appDelegate 文件标记为以扩展为目标时出现错误:

'sharedApplication is unavailable.' Use view controller based solutions where appropriate instead

我猜这个问题是因为 Parse 从不初始化。有没有人遇到过这种情况或知道如何解决它?

这是我在 appDelegate 上的解析初始化:

Parse.enableLocalDatastore()

    let parseConfiguration = ParseClientConfiguration(block:  (ParseMutableClientConfiguration) -> Void in
        ParseMutableClientConfiguration.applicationId = "e81dbc81e92cedd3fbd2e11a175c39d454ca2938df"
        ParseMutableClientConfiguration.clientKey = "431a68273c2a3a60d9cx43f5e9f1b32ad15350de2"
        ParseMutableClientConfiguration.server = "http://ec2-47-xx-xx-21.us-west-2.compute.amazonaws.com:80/parse"
    )

    Parse.initialize(with: parseConfiguration)

【问题讨论】:

你能发布你的解析初始化代码和你尝试从你的扩展访问你的应用程序委托的代码吗?错误是因为无法从您的扩展程序访问 sharedApplication...当人们使用扩展程序时,您的主应用程序可能/可能不会运行,因此无法访问 appDelegate。 我添加了解析初始化,我不确定如何从扩展访问 appDelegate 你不能。将在一分钟内发布答案。 为您添加了一个答案,其中包含指向另一个 SO 答案中一个很好的解释的链接。我不使用 Parse,但使用 Firebase 成功完成了同样的事情,所以如果您有任何问题,请告诉我。 【参考方案1】:

您的 iMessage 扩展程序无法访问您的主应用程序中可用的 appDelegate 实例,与here 讨论的相同问题。

要实现相同的行为,请将您共享的相同初始化代码放入 iMessage 扩展的初始 MSMessagesAppViewController 的 viewDidLoad() 方法中,或者在您首次尝试访问 Parse 之前,将调用您知道的任何其他地方。

【讨论】:

以上是关于带有 Parse 的 iMessage 扩展的主要内容,如果未能解决你的问题,请参考以下文章

App Store 中的 iMessage 应用程序无效

需要在 iMessage Extension 中的 insertText 方法上调用 didStartSending

需要在 iMessage Extension 中的 insertText 方法上调用 didStartSending

iMessage 扩展和 CoreData

如何在模拟器中配置 iMessages 扩展

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