ChromeCast 发件人发现逻辑

Posted

技术标签:

【中文标题】ChromeCast 发件人发现逻辑【英文标题】:ChromeCast Sender Discovery Logic 【发布时间】:2015-05-29 17:50:18 【问题描述】:

Google 提供的 ChromeCast sample ios Github project 在发现设备时会尝试重新连接到以前的设备。

问题在于,每次应用程序在后台和前台运行时,发现过程都会再次发生,并且无论其他应用程序是否已连接到 Chromecast,都会连接到前一个设备(请参见下面的代码)。这基本上破坏了另一个应用程序,而当前的应用程序接管了。

有没有办法确定另一个应用程序是否已连接,并且只有在没有连接时才尝试连接?

- (void)deviceDidComeOnline:(GCKDevice *)device 

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSString* lastDeviceID = [defaults objectForKey:@"lastDeviceID"];
    if (lastDeviceID != nil && [[device deviceID] isEqualToString:lastDeviceID])
    
        self.isReconnecting = YES;
        [self connectToDevice:device];
    

【问题讨论】:

【参考方案1】:

重连逻辑应该考虑之前的会话id;仅当当前会话 id(在 chromecast 上)与手机上的(持久)匹配时,才重新连接。我没有查看 iOS 应用程序以了解它是否在那里被强制执行,但基本上你可以连接然后尝试使用旧会话 ID 加入(调用 joinApplication),如果它成功,那么你很好,如果不是,那么你应该断开连接。这是一组描述此流程的diagrams。

【讨论】:

谢谢。这似乎按预期正常工作。

以上是关于ChromeCast 发件人发现逻辑的主要内容,如果未能解决你的问题,请参考以下文章

检测我是不是是唯一连接到 Chromecast 设备的 Chromecast 发件人应用

Chromecast API 发件人 - Android 手机

更改 Chromecast 发件人上的应用 ID

chromecast 发件人示例中的 Android 空指针

从一个发件人控制多个 Chromecast 接收器?

Android:使用 ChromeCast 发件人进行多项活动