Рассматриваемый плагин: https://github.com/sean-perkins/nativescript-opentok/tree/delegate-exploration. Если вы установите npm и установите версию сборки 1.4.4
, вы получите последнюю тестовую версию для этой ошибки.
У плагина две проблемы:
Сначала новый стиль объявления конструктора для {N} не распознается, поэтому я должен вернуться к старому стилю объявления
Class.alloc().initWith
. Я считаю, что это может быть связано с №2.После обновления конструктора та же строка кода завершится ошибкой:
[__NSCFNumber length]: unrecognized selector sent to instance 0xb00000002b879aa2
.
Рассматриваемый код:
public static initWithApiKeySessionIdToken(apiKey: string, sessionId: string, token:string): TNSOTSession {
let instance = <TNSOTSession>TNSOTSession.new();
instance.events = new Observable();
instance.session = OTSession.alloc().initWithApiKeySessionIdDelegate(apiKey, sessionId, instance);
let errorRef = new interop.Reference();
instance.session.connectWithTokenError(token, errorRef);
if(errorRef.value) {
console.log(errorRef.value);
}
return instance;
}
Класс (TNSOTSession
) расширяет NSObject
и реализует протокол для OTSessionDelegate
, который должен поддерживать экземпляры селектора в соответствии с документами {N}:
«Переопределенные методы будут выводить свои сигнатуры из базового класса или протоколов, которые они реализуют».
Ссылка: https://docs.nativescript.org/runtimes/ios/how-to/ObjC-Subclassing
Если вам нужно просмотреть документацию по API iOS для OpenTok, обратитесь к: https://www.tokbox.com/developer/sdks/ios/reference/Classes/OTSession.html.
Спасибо всем, кто может помочь мне продвинуться в этом вопросе. Демо работает отлично. Проблема обнаружена в тестовом проекте {N} + Angular 2.