Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用GCKMediaControlChannel';s sendTextMessage方法产生错误_Ios_Google Cast_Chromecast - Fatal编程技术网

Ios 使用GCKMediaControlChannel';s sendTextMessage方法产生错误

Ios 使用GCKMediaControlChannel';s sendTextMessage方法产生错误,ios,google-cast,chromecast,Ios,Google Cast,Chromecast,有了google cast iOS SDK,GCKMediaControlChannel的sendTextMessage方法非常简单,很难被误用,所以我猜这可能是SDK中的一个bug。。。希望有人能证明我错了,这样我就可以回去工作了 代码如下: NSDictionary *messageDict = @{ @"message": @"blah", @"num":[NSNumber nu

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

代码如下:

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]忽略请求,requestId不是整数:未定义

乍一看,GCKMediaControlChannel似乎直接从GCKCastChannel继承了sendTextMessage方法,未能实现特定于媒体频道的某些消息传递方面(尤其是未能使用
requestId
mediaSessionID
属性将消息封装在媒体样式信封中)


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

我按照上的建议,使用自定义命名空间,使用
GCKCastChannel
而不是专用的
GCKMediaControlChannel
向接收方媒体应用发送消息,以解决此问题。票证响应确认“不要将sendTextMessage直接用于GCKMediaControlChannel”

我不知道您是如何将票证中的响应解释为“GCKMediaControlChannel有缺陷的”,您错误地使用了媒体控制通道,因此该缺陷实际上在您的代码中,而不是SDK中。@AliNaddaf我的代码是按照API操作的。如果SDK没有按照文档说明的那样工作,那么可能是SDK有缺陷,也可能是文档有缺陷。我不想开始一场对错的辩论,如果我帮助下一个开发人员直截了当地遵循API文档,我会很高兴。媒体控制通道是一个子类,定义了一个特定的名称空间。每个名称空间为它可以处理的消息定义一个规范;媒体控制频道有自己的规范和处理的消息。如果您编写一个TicTacToe通道子类,您将为它可以处理的消息定义一个新的名称空间和规范;你不能期望通过不同的渠道对短信进行相同的解读。文档中说它发送了一条文本消息,但没有说明该文本消息可以是什么,或者如何处理/解释,因为这取决于子类。我理解它是如何工作的……但我们能否同意,sendTextMessage无法与专用媒体频道一起使用这一事实&文档中没有关于它的任何文字充其量是令人困惑的?无论哪种方式,我都会重新表述我的响应当你定义一个新的名称空间和一个新的通道时,你就定义了一个协议。“发送者”只是故事的一半,另一半是“接收者”:发送者将一条消息放在一起发送给接收者,接收者根据约定的协议解释消息。因此,发送方确实发送了一条短信,但如果不符合约定的协议,接收方将忽略或投诉。(由于注释大小限制,请参见下一条注释中的其余部分)