【问题标题】:GCKChannel disconnected while iOS sender enter backgroundiOS 发件人进入后台时 GCKChannel 断开连接
【发布时间】:2014-03-27 00:48:09
【问题描述】:

我注意到在我的应用进入后台(或屏幕锁定)后,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__ ()

我正在尝试遵循设计清单:https://developers.google.com/cast/docs/design_checklist#sender-control-lockscreen

这会导致当用户锁定他们的 iDevice 时,我的应用无法从接收器应用中获取更新。

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

我的发送者应用程序挂钩远程控制事件,将信息推送到 MPNowPlayingInfoCenter,并监控系统音量变化事件以创造最佳用户体验。

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

有什么解决办法吗?

【问题讨论】:

  • 你有没有找到任何解决方案我得到完全相同的错误?

标签: ios iphone google-cast chromecast


【解决方案1】:

是的,没错。当应用程序后台时,通道将被隐式断开。不过,如果您正在管理锁定屏幕控件,您应该能够使用 GCKDeviceManager initWithDevice:clientPackageName:ignoreAppStateNotifications 初始化程序上的 ignoreAppStateNotifications 禁用此行为。

您有责任在需要时在后台管理断开连接 - 请参阅文档中的 cmets 了解更多信息。

【讨论】:

  • 您是否尝试过在ignoreAppStateNotifications 标志的帮助下配置锁屏控件?即使将该标志设置为YES,它对我也不起作用。但这也可能是我的代码中的一个问题
  • 这里一样,但不能解决问题。当 iOS 应用程序进入后台时,我的接收器应用程序收到此日志:[Wed Jan 11 2017 11:48:11 GMT+0100 (CET)] Sender disconnected: 258cf69b-7b5a-537f-6a58-661fe6aece89.146:8E4136D0-CA60-4A53-8518-8A03BB1BFF98 reason:unknown user-agent:iOS CastSDK,3.3.0,iPhone8,1,iOS,10.2[Wed Jan 11 2017 11:48:11 GMT+0100 (CET)] Disconnected master
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-04
  • 2017-11-15
  • 2015-10-25
  • 2015-05-02
  • 2019-06-18
相关资源
最近更新 更多