我想实现一个imessage应用程序,但是对于消息框架和iMessage应用程序来说,这是一个新事物,并没有太多的资源。因此,我正在关注WWDC video并使用Apples提供sample app作为指南。如何在消息扩展中发送MSMessage?
我有三个视图,MessageViewController
几乎处理所有的功能,然后CreateViewController
和DetailsViewController
。
我只是试图从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())
}
}
CreateViewController
/**
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
?如果我能够发送消息,我应该能够接收并重新发送。
可能是什么问题正在通过结构'dataItem'在函数'func composeMessage(for data:dataItem)'我设法发送一个字符串值,而不使用像这个视频教程中的结构https://www.youtube.com/watch?v=pe-J7OsQHhI – RileyDev
@RileyDev - 那个YouTube的视频帮助! – kamyFC