0

有问题的插件是:https ://github.com/sean-perkins/nativescript-opentok/tree/delegate-exploration 。如果您 npm install 并将构建版本设置为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;
    }

根据 {N} 文档,类 ( TNSOTSession) 扩展NSObject并实现了 for 的协议OTSessionDelegate,该协议应维护选择器实例:

“被覆盖的方法将从它们实现的基类或协议中推断出它们的签名。”

参考:https ://docs.nativescript.org/runtimes/ios/how-to/ObjC-Subclassing

如果您需要查看 OpenTok 的 iOS API 文档,请参考:https ://www.tokbox.com/developer/sdks/ios/reference/Classes/OTSession.html 。

感谢任何可以帮助我在这个问题上取得进展的人。该演示完美运行。该问题在 {N} + Angular 2 测试项目中发现。

4

1 回答 1

1

对于遇到此问题的任何人,请确保如果您的插件具有数字 API 密钥或任何与此相关的值,则应为字符串...确保将其转换为带有.toString(). 我的整个问题都集中在一个小细节上。

于 2016-08-31T20:56:35.853 回答