ChromeCast 发件人发现逻辑

ChromeCast Sender Discovery Logic

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];
    }
}

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