当应用在后台时,不会调用ChromeCast代理

时间:2014-12-15 07:24:29

标签: ios objective-c chromecast google-cast

我正在开发一个应用程序,我将使用ChromeCast设备连接到T.V,为此我已经在我的项目中使用了GoogleCast FrameWork,

当我的应用程序进入后台时,我遇到了问题

在此方法中编写片段代码以调用方法来静音音频

- (void)applicationDidEnterBackground:(UIApplication *)application  {

    HomeViewController *lHomeViewController = [[HomeViewController alloc] init];

    _mediaControlChannel = [[GCKMediaControlChannel alloc] init];

    [lHomeViewController muteAudio];

}

它调用主视图控制器中的方法,我在其中编写了下面的代码

-(void) muteAudio {

    [self.deviceManager setMuted:YES];

}

但是音频没有静音,也没有调用下面的委托方法。

- (void)mediaControlChannelDidUpdateStatus:(GCKMediaControlChannel *)mediaControlChannel

请建议我

1 个答案:

答案 0 :(得分:0)

您正在HomeViewController app delegate方法中创建applicationDidEnterBackground的新实例。您需要将muteAudio消息发送到正在运行的HomeViewController实例。

为此,最好的解决方案是使用NSNotificationCenter

在HomeViewController的viewDidLoadviewWillAppear方法中,使用以下行:

[[NSNotificationCenter defaultCenter] addObserver: self
                                         selector: @selector(muteAudio) 
                                             name: UIApplicationDidEnterBackgroundNotification
                                           object: nil];

当应用程序进入后台时,这将自动调用muteAudio方法。

详细了解NSNotificationCenter here

详细了解应用程序状态通知here