Как сделать приложение 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!)

        ...
    }
}
Другие вопросы по тегам