2014-02-25 56 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'的 –