Я хочу реализовать приложение imessage, но, будучи новичком в структуре сообщений и приложениями iMessage, является такой новой вещью, что ресурсов не так много. Поэтому я следую за WWDC video и используя Яблоки, предоставляя sample app для руководства.Как отправить MSMessage в расширение сообщений?
У меня есть три вида, MessageViewController
, который обрабатывает практически всю функциональность, а затем CreateViewController
и DetailsViewController
.
Я просто пытаюсь создать MSMessage
с CreateViewController
и отобразиться в 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'-структуру в function 'func composeMessage (для data: dataItem)' Мне удалось отправить строковое значение без использования структуры, как в этом видеоуроке https://www.youtube.com/watch?v=pe-J7OsQHhI – RileyDev
@RileyDev - Это youtube video помог! – kamyFC