gpt4 book ai didi

ios - 如何在 Messages Extension 中发送 MSMessage?

转载 作者:搜寻专家 更新时间:2023-10-31 08:08:03 24 4
gpt4 key购买 nike

我想实现一个 imessage 应用程序,但是作为消息框架的新手,而 iMessage 应用程序又是一个新事物,资源不多。所以我正在关注 WWDC video并使用苹果提供 sample app寻求指导。

我有三个 View ,处理几乎所有功能的 MessageViewController,然后是 CreateViewControllerDetailsViewController

我只是想从 CreateViewController 创建一个 MSMessage 并在 DetailsViewController 中显示..然后添加到数据。

但是,我在尝试创建数据时遇到了崩溃。

@IBAction func createAction(_ sender: AnyObject) {
//present full screen for create list
self.delegate?.createViewControllerDidSelectAdd(self as! CreateViewControllerDelegate)
}

我试图传递的数据类型是结构中的字典:

struct data {
var title: String!
var date: Date!

var dictionary = ["title" : String(), "Array1" : [String](), "Array2" : [String]() ] as [String : Any]

}

事情是这样安排的;

MessagesViewController

class MessagesViewController: MSMessagesAppViewController, {

// MARK: Responsible for create list button

func composeMessage(for data: dataItem) {

let messageCaption = NSLocalizedString("Let's make", comment: "")

let dictionary = data.dictionary

func queryItems(dictionary: [String:String]) -> [URLQueryItem] {
return dictionary.map {
URLQueryItem(name: $0, value: $1)
}
}

var components = URLComponents()
components.queryItems = queryItems(dictionary: dictionary as! [String : String])

let layout = MSMessageTemplateLayout()
layout.image = UIImage(named: "messages-layout-1.png")!
layout.caption = messageCaption

let message = MSMessage()
message.url = components.url!
message.layout = layout
message.accessibilityLabel = messageCaption

guard let conversation = activeConversation else { fatalError("Expected Convo") }

conversation.insert(message) { error in
if let error = error {
print(error)
}
}

}

}


extension MessagesViewController: CreateViewControllerDelegate {

func createViewControllerDidSelectAdd(_ controller: CreateViewControllerDelegate) {
//CreatesNewDataItem
composeMessage(for: dataItem())
}

}

创建 View Controller

/**
A delegate protocol for the `CreateViewController` class.
*/
protocol CreateViewControllerDelegate : class {
func createViewControllerDidSelectAdd(_ controller: CreateViewControllerDelegate)

}

class CreateViewController: UIViewController {

static let storyboardIdentifier = "CreateViewController"

weak var delegate: CreateViewControllerDelegate?

@IBAction func create(_ sender: AnyObject) {
//present full screen for create list

self.delegate?.createViewControllerDidSelectAdd(self as! CreateListViewControllerDelegate)

}

}

有人会告诉我哪里出了问题以及我如何发送 MSMessage 吗?如果我能够发送消息,那么我应该能够接收和重新发送。

最佳答案

我看到一个问题,但无法自行调试:您正在将您的 components.queryItems 设置为您的字典 var 转换为 [String:String],但是从 data.dictionary 返回的字典不是 [String:String],而是 [String:Any]

特别是,dictionary["Array1"] 是一个字符串数组,而不是单个字符串。与字典 ["Array2"] 相同。 URLQueryItem 期望在它的 init() 中被赋予两个字符串,但是您试图将一个字符串和一个字符串数组放入(尽管我不确定您是否真的到达了您的 queryItems(dictionary: ) 方法。

当然,您的 dataItem.dictionary 将返回一个包含 4 个空值的字典。我不确定这就是您想要的。

关于ios - 如何在 Messages Extension 中发送 MSMessage?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39600081/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com