1

次のコードは、デスクトップ ブラウザーでは正常に動作しますが、電話のギャップ/コルドバ アプリでは動作しません。私の出力には、接続と iOS がストリームを受信したと表示されますが、アプリの本文には何も表示されません。これは私のindex.jsファイルにあります:

var app = {
initialize: function() {
    this.bindEvents();
},

bindEvents: function() {
    document.addEventListener('deviceready', this.onDeviceReady, false);
},
onDeviceReady: function() {
    app.receivedEvent('deviceready');

////////////////////////////////
//////Start of my opentok code////////////

    var apiKey = '21692492';

    var sessionId = '2_MX4yMTY5MTQ5Mn5-RnJpIEZlYiAwNyAwODozMjozOSBQU1QgMjAxNH4wLjIwMzc2MDV-';

    var token = 'T1==cGFydG5lcl9pZD0yMTY5MTQ5MiZzaWc9ZWUxMTNjNjZiYjlkNWI4NTkwZTE2MDZiMjM0MzFkOWYyMzhiYzgxNjpzZXNzaW9uX2lkPTJfTVg0eU1UWTVNVFE1TW41LVJuSnBJRVpsWWlBd055QXdPRG96TWpvek9TQlFVMVFnTWpBeE5INHdMakl3TXpjMk1EVi0mY3JlYXRlX3RpbWU9MTM5MTc5MDgwNSZyb2xlPXB1Ymxpc2hlciZub25jZT0xMzkxNzkwODA1LjIzMzk0MTE4MzcyJmV4cGlyZV90aW1lPTEzOTQzODI4MDU=';


    function connectedHandler(event) {
        for (var i = 0; i < event.streams.length; i++) {
            var newDiv = $('<div />', {id:event.streams[i].streamId});
            $('body').append(newDiv);
            session.subscribe(event.streams[i], event.streams[i].streamId,{});
        }
    }


    var session = TB.initSession(sessionId);

    session.addEventListener('sessionConnected', connectedHandler);

    session.connect(apiKey, token);

//////End of my opentok code////////////
////////////////////////////////////////////////
},

receivedEvent: function(id) {
    var parentElement = document.getElementById(id);
    var listeningElement = parentElement.querySelector('.listening');
    var receivedElement = parentElement.querySelector('.received');

    listeningElement.setAttribute('style', 'display:none;');
    receivedElement.setAttribute('style', 'display:block;');

    console.log('Received Event: ' + id);
}
};

これは私が得る出力です:

2014-02-07 11:44:19.407 HelloCordova[2377:60b] iOS Connected to Session
2014-02-07 11:44:19.408 HelloCordova[2377:60b] object for session is {
connection =     {
    connectionId = "4B191468-46D5-4414-A46A-5C97376D6F2E";
    creationTime = 1391791459;
};
connectionCount = 0;
environment = production;
sessionConnectionStatus = OTSessionConnectionStatusConnected;
sessionId = "2_MX4yMTY5MTQ5Mn5-RnJpIEZlYiAwNyAwODozMjozOSBQU1QgMjAxNH4wLjIwMzc2MDV-";
streams =     (
);
}
2014-02-07 11:44:19.456 HelloCordova[2377:60b] iOS Received Stream

これが機能しない理由と、何を変更する必要があるかを誰かが知っていますか?

4

1 に答える 1

0

Cordova プラグインは、OpenTok JS 2.2 をモデルにしています。この新しいバージョンでは、いくつかの変更があります。まず、「addEventListener」は「on」に名前が変更されました。イベントを追加するには、次のようにします。

session.on({
  'sessionConnected': function(event){
    session.publish( publisher );
  },
  'streamCreated': function(event){
    var newDiv = $('<div />', {id:event.stream.streamId});
    $('body').append(newDiv);
    session.subscribe(event.stream, event.stream.streamId, {});
  }
})

次の変更点に注意してください:
* addEventListener は存在
しなくなりました * sessionConnected イベントでは、セッション内の既存のストリームの配列を取得しなくなりました。セッション内のすべてのストリームは、streamCreated イベントをトリガーします。
* streamCreated イベント コールバック パラメータには、ストリーム要素が 1 つしかありません。このイベントは、ストリームごとに 1 回トリガーされます

v2.2 で予定されている変更のリストは次のとおりです: http://labs.tokbox.com/javascript-2.2

参照用にいくつかの実用的なサンプル コードを追加しました: https://github.com/songz/cordova-plugin-opentok/blob/master/README.md#sample-code

于 2014-03-06T23:34:33.260 に答える