2014-02-07 6 views
1

다음 코드는 데스크톱 브라우저에서 올바르게 작동하지만 내 전화 갭/코드바 응용 프로그램에서 작동하지 않습니다. 내 출력에는 connect와 iOS 스트림을 받았지만 내 앱 본문에는 아무 것도 나타나지 않는다고합니다. 이건 내하는 index.js 파일에 있습니다 :opentok 가입자 동영상이 내 cordova/phonegap 앱에 표시되지 않는 이유는 무엇입니까?

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 

사람은 알고 있나요 내가 변경할 필요가 뭐?

답변

0

코르도바 플러그인은 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 이벤트 콜백 매개 변수에는 스트림 요소가 하나만 있습니다. 난 당신이 참조하는 일부 작업 예제 코드를 추가 한 http://labs.tokbox.com/javascript-2.2

:이 이벤트는 모든 스트림 여기

에 대해 한 번 트리거됩니다 오는 2.2의 변경 사항 목록입니다 https://github.com/songz/cordova-plugin-opentok/blob/master/README.md#sample-code