【问题标题】:Using GCKMediaControlChannel's sendTextMessage method yields error使用 GCKMediaControlChannel 的 sendTextMessage 方法会产生错误
【发布时间】:2014-03-23 19:07:00
【问题描述】:

使用 google cast iOS SDK,GCKMediaControlChannel 的 sendTextMessage 方法很简单,很难误用,所以我猜这可能是 SDK 中的一个错误......希望有人能证明我错了,这样我就可以回去工作了!

代码如下:

NSDictionary *messageDict = @{
                            @"message": @"blah",
                            @"num":[NSNumber numberWithInt:2]
                            };
  NSError *error;
  NSData *msgData = [NSJSONSerialization dataWithJSONObject:messageDict
                                                      options:0
                                                        error:&error];
  NSString *message = @"" ;
  if (!msgData) {
    DDLogError(@"ERROR serializing message: %@", error);
    return NO ;
  } else {
    message = [[NSString alloc] initWithData:msgData encoding:NSUTF8StringEncoding];
    [self sendTextMessage:message] ;
  }

...接收方收到消息时会产生此错误[cast.receiver.mediaManager] Ignoring request, requestId is not an integer: undefined

乍一看,GCKMediaControlChannel 似乎直接从 GCKCastChannel 继承了它的 sendTextMessage 方法,未能实现特定于媒体频道的某些消息传递方面(特别是未能将消息包装在带有 @987654323 的媒体样式信封中@ 和mediaSessionID 属性)

有没有其他人遇到过这种情况?我错过了什么吗?有解决办法吗?

【问题讨论】:

    标签: ios google-cast chromecast


    【解决方案1】:

    我遵循ticket I created 上的建议,使用GCKCastChannel 的自定义命名空间向接收者媒体应用发送消息,而不是他专门的GCKMediaControlChannel 来解决此问题。工单响应确认“不要将 sendTextMessage 直接与 GCKMediaControlChannel 一起使用”

    【讨论】:

    • 我不知道您如何将工单中的响应解释为“GCKMediaControlChannel 有错误”,您错误地使用了媒体控制通道,因此错误实际上是在您的代码中,而不是在 SDK 中。
    • @AliNaddaf 我的代码遵循 API 为documented。如果 SDK 没有按照文档说明工作,则 SDK 有问题或文档有问题。不是试图开始一场对与错的辩论,如果我能帮助下一个开发人员因为坦率地遵循 API 文档而陷入困境,我会很高兴
    • 媒体控制通道是一个子类,定义了一个特定的命名空间。每个命名空间都为它可以处理的消息定义了一个规范;媒体控制通道有自己的规范和它处理的消息。如果您编写井字游戏 Channel 子类,您将为它可以处理的消息定义一个新名称空间和规范;您不能期望不同渠道对短信的相同解释。文档说它发送一条短信,但让它保持开放,该短信可以是什么,或者如何处理/解释它,因为这取决于子类。
    • 我了解它是如何工作的......但是我们是否可以同意 sendTextMessage 无法用于专用媒体频道并且文档中没有关于它的消息这一事实充其量是令人困惑的?无论哪种方式,我都改写了我的回答
    • 当你定义一个新的命名空间和一个新的通道时,你定义了一个协议。 “发送者”只是故事的一半,另一半是“接收者”:发送者将消息组合在一起并将其发送给接收者,接收者根据商定的协议解释消息。所以发件人是真的在发送一条短信,但如果与商定的协议不匹配,接收者会忽略或抱怨。 (由于评论大小限制,请参阅下一条评论中的其余部分)
    猜你喜欢
    • 2014-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多