Плагин NativeScript вылетает во внешних проектах ng2 (не в демонстрации)

Рассматриваемый плагин: https://github.com/sean-perkins/nativescript-opentok/tree/delegate-exploration. Если вы установите npm и установите версию сборки 1.4.4, вы получите последнюю тестовую версию для этой ошибки.

У плагина две проблемы:

  1. Сначала новый стиль объявления конструктора для {N} не распознается, поэтому я должен вернуться к старому стилю объявления Class.alloc().initWith. Я считаю, что это может быть связано с №2.

  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.


person Sean Perkins    schedule 31.08.2016    source источник


Ответы (1)


Для всех, кто сталкивается с этой проблемой, убедитесь, что если ваш плагин имеет числовой ключ API или любое значение в этом отношении, ожидается, что это будет строка ... обязательно приведите его как строку с .toString(). Вся моя проблема была сосредоточена вокруг этой маленькой мелочи.

person Sean Perkins    schedule 31.08.2016