Parse.com OpenTok集成错误
我正在使用本教程构建应用程序(使用parse.com和OpenTok)。 当我发起呼叫时,下面的委托方法 - 会话:(OTSession *)会话streamCreated:(OTStream *)流委托方法永远不会被调用。 我已经四处搜寻,似乎其他人有这个错误,但似乎没有人找到解决办法。
部署在解析服务器上的云代码模块似乎没有错误地执行正常,并且没有问题。 但是视频流永远不会被启动。
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秘密和我的解析凭证之外,我没有以任何方式修改代码。 我还在这个保管箱页面上托管了.h和.m文件。
你永远不会打电话[session publish:publisher error:&error];
。 如果没有流发布,则不会有streamCreated事件。
我没有阅读整个教程,但我确实看了一下DropBox链接的.m文件。 从我读过的教程部分,我发现了很多错误信息,并且解释比他们应该更复杂。 我建议直接进入OpenTok教程并遵循iOS部分。
关于如何整合Parse(本教程未涉及),您需要知道的最重要的事情是Parse只负责提供适当的apiKey
, sessionId
和token
; 没有其他的。 apiKey
应该始终是相同的。 如果客户端需要能够相互通信, sessionId
应该是相同的。 最后,每个客户端都应该得到一个唯一的token
(这是您链接的博客文章不正确的地方之一,并且您不应该为整个会话存储一个publisherToken
)。 Parse云代码模块可以帮助您在需要时生成新的sessionId
,并为每个客户端创建新的token
。 有关更好解释的示例,请参阅我前一段时间在官方博客上撰写的博客文章。 其中的一些信息是旧的,但仍然准确。