2015-11-05 47 views
0

我正在使用this tutorial(使用parse.com和OpenTok)構建應用程序。當我發起呼叫時,下面的委託方法 - 會話:(OTSession *)會話streamCreated:(OTStream *)流委託方法永遠不會被調用。我已經四處搜尋,似乎其他人有這個錯誤,但似乎沒有人找到解決辦法。Parse.com OpenTok集成錯誤

在解析服務器上部署的雲代碼模塊似乎執行正常,沒有錯誤,並且不會出現問題。但是視頻流永遠不會被啓動。

的streamCreated方法是這樣的:

-(void)session:(OTSession *)session streamCreated:(OTStream *)stream { 
    NSLog(@"session: didReceiveStream:"); 
    NSLog(@"- connection.connectionId: %@", stream.connection.connectionId); 
    NSLog(@"- connection.creationTime: %@", stream.connection.creationTime); 
    NSLog(@"- session.sessionId: %@", stream.session.sessionId); 
    NSLog(@"- streamId: %@", stream.streamId); 
    NSLog(@"- creationTime %@", stream.creationTime); 
    NSLog(@"- name %@", stream.name); 
    NSLog(@"- hasAudio %@", (stream.hasAudio ? @"YES" : @"NO")); 
    NSLog(@"- hasVideo %@", (stream.hasVideo ? @"YES" : @"NO")); 
    if ((subscribeToSelf && [stream.connection.connectionId isEqualToString: _session.connection.connectionId]) 
     || 
     (!subscribeToSelf && ![stream.connection.connectionId isEqualToString: _session.connection.connectionId]) 
     ) { 
     if (!_subscriber) { 
      _subscriber = [[OTSubscriber alloc] initWithStream:stream delegate:self]; 
      _subscriber.subscribeToAudio = self.bAudio; 
      _subscriber.subscribeToVideo = self.bVideo; 
     } 
     NSLog(@"subscriber.session.sessionId: %@", _subscriber.session.sessionId); 
     NSLog(@"- stream.streamId: %@", _subscriber.stream.streamId); 
     NSLog(@"- subscribeToAudio %@", (_subscriber.subscribeToAudio ? @"YES" : @"NO")); 
     NSLog(@"- subscribeToVideo %@", (_subscriber.subscribeToVideo ? @"YES" : @"NO")); 
    } 
} 

沒有人有任何的想法呢?我是OpenTok的新手,希望得到任何建議。提前致謝。

有關完整的項目代碼,請參閱鏈接教程。除了實現OpenTok的API祕密和我的解析憑證之外,我沒有以任何方式修改代碼。我還在this dropbox page上託管了.h和.m文件。

回答

0

你永遠不會打電話[session publish:publisher error:&error];。如果沒有流發佈,則不會有streamCreated事件。

我沒有閱讀整個教程,但我確實看了一下DropBox鏈接的.m文件。從我讀過的教程部分,我發現了很多錯誤信息,並且解釋比他們應該更復雜。我建議直接進入OpenTok Tutorials並遵循iOS部分。

在如何解析(不包括在該教程)整合而言,你需要知道的最重要的事情是,解析只是服務於適當apiKeysessionId,並token負責;沒有其他的。 apiKey應該始終相同。如果客戶端需要能夠相互通信,則sessionId應該是相同的。最後,每個客戶端都應該得到一個獨特的token(這是您鏈接的博客帖子不正確的地方之一,並且整個會話不應只存儲一個publisherToken)。 Parse雲代碼模塊可以幫助您在需要時生成新的sessionId,並且可以幫助您爲每個客戶端生成新的token。有關更好解釋的示例,前段時間在官方博客上查看blog post I wrote。其中的一些信息是舊的,但仍然準確。

+0

我只是再次檢查,我確實在doPublish方法下調用它。爲什麼這仍然發生......? – Viper