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 手机