Каковы возможные причины ошибки 14000 «Не удалось начать обмен сообщениями» в SDK SendBird для iOS?

Я пытаюсь использовать SDK SendBird для реализации простой функции обмена мгновенными сообщениями в своем приложении для iOS.

Я прочитал руководства «Быстрый старт», «Аутентификация» и «Канал обмена сообщениями — основные» и попытался настроить канал обмена сообщениями 1-1, как они описаны.

В application:didFinishLaunchingWithOptions я включил SendBird.initAppId("MyAppID").

В моем начальном контроллере представления я вхожу в систему пользователя. Я использую имя пользователя из своего приложения в качестве его идентификатора пользователя и объединяю его имя и фамилию, чтобы использовать его в качестве псевдонима в SendBird:

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.
    if let emailAddress = KCSUser.activeUser().email,
        firstName = KCSUser.activeUser().givenName,
        lastName = KCSUser.activeUser().surname {

        let nickname = firstName.lowercaseString + lastName.lowercaseString
        SendBird.loginWithUserId(emailAddress, andUserName: nickname)
    }
}

Наконец, в реальном контроллере представления чата я пытаюсь запустить канал обмена сообщениями с другим пользователем:

override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.
    guard let targetId = session?.parent?.user?.email else {
        return
    }

    // I logged in once with this id, so according to the SendBird docs, the
    // user should exist.
    SendBird.startMessagingWithUserId(targetId)

    SendBird.setEventHandlerConnectBlock({ (channel) in
        NSLog("%@", channel)
    }, errorBlock: { (errorCode) in
        NSLog("%D", errorCode)
    }, channelLeftBlock: { (channel) in

    }, messageReceivedBlock: { (message) in

    }, systemMessageReceivedBlock: { (systemMessage) in

    }, broadcastMessageReceivedBlock: { (broadcastMessage) in

    }, fileReceivedBlock: { (fileLink) in

    }, messagingStartedBlock: { (messagingChannel) in
        SendBird.joinChannel(messagingChannel.getUrl())

        // SendBirdChannelInfo is a custom struct for some use within the app
        let channelInfo = SendBirdChannelInfo(
            channelId: messagingChannel.getId(),
            url: messagingChannel.getUrl()
        )

        // self.session is a custom data model for use with our database.
        self.session?.sendBirdChannelInfo = channelInfo

        SendBird.queryMessageListInChannel(messagingChannel.getUrl()).prevWithMessageTs(
            Int64.max, andLimit: 30, resultBlock: { (queryResult) in

            var maxMessageTs = Int64.min

            for model in queryResult {
                if maxMessageTs <= (model as! SendBirdMessageModel).getMessageTimestamp() {
                    maxMessageTs = (model as! SendBirdMessageModel).getMessageTimestamp()
                }
            }

            SendBird.connectWithMessageTs(maxMessageTs)
        }, endBlock: { (error) in
            if let fetchMessagesError = error {
                NSLog(fetchMessagesError.localizedDescription)
            }
        })
    }, messagingUpdatedBlock: { (messagingChannel) in

    }, messagingEndedBlock: { (messagingChannel) in

    }, allMessagingEndedBlock: { 

    }, messagingHiddenBlock: { (messagingChannel) in

    }, allMessagingHiddenBlock: { 

    }, readReceivedBlock: { (readStatus) in

    }, typeStartReceivedBlock: { (typeStatus) in

    }, typeEndReceivedBlock: { (typeStatus) in

    }, allDataReceivedBlock: { (unsignedInt, thirtyTwoBitInt) in

    }, messageDeliveryBlock: { (sent, message, data, messageId) in

    }, mutedMessagesReceivedBlock: { (message) in

    }) { (fileLink) in

    }
}

За исключением строк, которые я прокомментировал, этот код взят непосредственно из руководства SendBird. Однако при его запуске я получаю код ошибки 14000 и регистрируется сообщение «Не удалось начать обмен сообщениями».

Какова истинная причина ошибки? Я пропустил шаг во время входа пользователя или инициализации SDK, или есть еще один шаг в создании канала? Или это что-то совсем другое?


person ConfusedByCode    schedule 13.05.2016    source источник
comment
Вы когда-нибудь входили в систему с targetId?   -  person Jebeom Gyeong    schedule 14.05.2016
comment
Когда я задал этот вопрос, да, я вошел в систему с targetId. Однако ни один из пользователей не вошел в систему с токеном. Я решил попробовать войти в систему пользователей с помощью токенов, хотя у меня была политика пользователя без доступа к токену, установленная на чтение и запись, и тогда пользователи могли отправлять и получать сообщения.   -  person ConfusedByCode    schedule 16.05.2016


Ответы (1)


Пожалуйста, попробуйте наш новый SDK вместо старого SDK, поддержка которого скоро будет прекращена!

https://docs.sendbird.com/ios

Спасибо!

person Jin Ku    schedule 20.02.2017