iOS发件人进入后台时GCKChannel断开连接

use*_*374 5 iphone ios google-cast chromecast

我注意到我的应用程序进入后台(或屏幕锁定)后GCKChannel将断开连接,并在我的应用程序返回前台后再次连接.

以下是通道didDisconnect的调用堆栈,它看起来像GCKCastSocket注册通知UIApplicationDidEnterBackgroundNotification.

#0  0x001cac58 in -[MyChannel didDisconnect]
#1  0x001feb72 in -[GCKDeviceManager castSocket:didDisconnectWithError:] at GCKDeviceManager.m:692
#2  0x001f8902 in -[GCKCastSocket doTeardownWithError:] at GCKCastSocket.m:187
#3  0x001f8508 in -[GCKCastSocket disconnect] at GCKCastSocket.m:133
#4  0x30b35e70 in __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ ()
Run Code Online (Sandbox Code Playgroud)

我正在尝试按照设计清单进行操作:https://developers.google.com/cast/docs/design_checklist#sender-control-lockscreen

这导致我的应用程序在用户锁定其iDevice时未从我的接收器应用程序获得更新.

虽然它不是iOS所必需的,但我认为在不解锁设备的情况下控制我的接收器应用程序是一项重要的可用性功能......

我的发件人应用程序挂钩远程控制事件,将信息推送到MPNowPlayingInfoCenter,还监视系统卷更改事件以创建最佳用户体验.

如果我不能继续在后台接收/发送消息到/接收器应用程序,锁定屏幕中的控件是无用的,并且将有过时的信息,我相信大多数用户不会保持他们的设备屏幕打开时他们正在听/看电视(Chromecast)......

有没有解决方法?

Ian*_*ber 2

是的,这是正确的。当应用程序后台运行时,通道将隐式断开连接。如果您正在管理锁定屏幕控件,则应该能够使用 initWithDevice:clientPackageName:ignoreAppStateNotifications 初始化程序来禁用ignoreAppStateNotificationsGCKDeviceManager 行为

如果您需要的话,您有责任在后台管理时断开连接 - 请参阅文档中的注释以了解更多信息。