Как сделать приложение iMessage, которое показывает только текущее сообщение?
Я делаю игру IMessage. Я хочу, чтобы показывался только текущий сеанс iMessage, а все предыдущие были свернуты. Для пошаговой игры я не хочу, чтобы пользователи возвращались назад и видели все предыдущие ходы.
Как это можно сделать с iOS 10 и Swift?
1 ответ
Решение
Вы хотите использовать один сеанс MSSession для всех сообщений в разговоре.
1. Переменная сеанса (объявлена в основном классе)
class MessagesViewController: MSMessagesAppViewController {
var session: MSSession?
...
}
2. Настройка сеанса (когда приложение становится активным)
override func willBecomeActive(with conversation: MSConversation) {
if let selected = conversation.selectedMessage {
session = selected.session
}
}
3. Используйте сеанс (при построении MSMessage)
if session == nil {
session = MSSession()
}
let message = MSMessage(session: session!)
Пример полного кода
class MessagesViewController: MSMessagesAppViewController {
var session: MSSession?
override func willBecomeActive(with conversation: MSConversation) {
if let selected = conversation.selectedMessage {
session = selected.session
}
}
func buildMessage() {
if session == nil {
session = MSSession()
}
let message = MSMessage(session: session!)
...
}
}