2014-02-25 27 views
5

我注意到我的应用程序进入后台(或锁定屏幕)后,我的应用程序返回前台后,GCKChannel将会断开连接, 。GCKChannel在iOS发送者进入后台时断开连接

以下是通道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__() 

我试图按照设计清单:https://developers.google.com/cast/docs/design_checklist#sender-control-lockscreen

,这导致我的应用程序不会从我的接收器的应用程序得到更新,当用户锁定他们的iDevice。

虽然它不是必需适用于iOS, 我认为这是一个重要的可用性特性来控制我不解锁设备接收应用程序......

我的发送者的应用程序挂钩遥控器的事件,将信息推送给MPNowPlayingInfoCenter,和还监视系统音量更改事件以创建最佳用户体验。

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

是否有任何解决方法?

+0

你有没有发现任何解决方案,我得到完全相同的错误? – hariszaman

回答

2

是的,没错。当应用程序背景时,频道将被隐式断开。但是,如果您正在管理锁定屏幕控件,则应使用GCKDeviceManagerinitWithDevice:clientPackageName:ignoreAppStateNotifications初始化程序上的ignoreAppStateNotifications来禁用此行为。

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

+0

您是否尝试过使用'''ignoreAppStateNotifications'''标志来配置锁屏控件?即使将该标志设置为YES,它也不起作用。但是,这可能是我的代码中的问题 –

+0

同样在这里,不解决问题。当iOS应用程序处于后台时,我的接收器应用程序获得了此日志: '[Wed Jan 11 2017 11:48:11 GMT + 0100(CET)]发送方断开连接:258cf69b-7b5a-537f-6a58-661fe6aece89.146:8E4136D0 -CA60-4A53-8518-8A03BB1BFF98原因:未知用户代理:iOS CastSDK,3.3.0,iPhone8,1,iOS,10.2' '[Wed Jan 11 2017 11:48:11 GMT + 0100(CET)]断开连接master'的 –