# GCKRemoteMediaClient Class

[Instance Methods](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#pub-methods) \| [Properties](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#properties) GCKRemoteMediaClient Class Reference

## Overview

A class for controlling media playback on a Cast receiver.

This class provides the same functionality as the deprecated [GCKMediaControlChannel](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_media_control_channel "A GCKCastChannel subclass for media control operations. "), which it wraps, but with a more convenient API. The main differences are:

- Each request is represented by a [GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request "An object for tracking an asynchronous request. ") object which can be tracked with a dedicated delegate.
- The [GCKRemoteMediaClient](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client "A class for controlling media playback on a Cast receiver. ") supports multiple listeners rather than a single delegate.

Since
:   3.0

Inherits NSObject.

|---|---|
| ## Instance Method Summary ||
| (void) | - [addListener:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a85f0f6b8a08b75f3853ea84b9413f035) |
|   | Adds a listener to this object's list of listeners. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a85f0f6b8a08b75f3853ea84b9413f035) |
|   ||
| (void) | - [removeListener:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a22d327d30564290805029c31b1416eaa) |
|   | Removes a listener from this object's list of listeners. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a22d327d30564290805029c31b1416eaa) |
|   ||
| ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) | - [loadMedia:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a97e342a94b88b1b6c80af53f63fb8eb3) |
|   | Loads and starts playback of a new media item. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a97e342a94b88b1b6c80af53f63fb8eb3) |
|   ||
| ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) | - [loadMedia:autoplay:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a556ee7ab44a67ba7f5637f28614ad9c0) |
|   | Loads and optionally starts playback of a new media item. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a556ee7ab44a67ba7f5637f28614ad9c0) |
|   ||
| ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) | - [loadMedia:autoplay:playPosition:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a917a9dca89ebaa7c6b368c61cc5219b0) |
|   | Loads and optionally starts playback of a new media item. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a917a9dca89ebaa7c6b368c61cc5219b0) |
|   ||
| ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) | - [loadMedia:autoplay:playPosition:customData:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#ad87e3e27135398a4b2a0d0b9ab35669c) |
|   | Loads and optionally starts playback of a new media item. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#ad87e3e27135398a4b2a0d0b9ab35669c) |
|   ||
| ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) | - [loadMedia:autoplay:playPosition:activeTrackIDs:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#aa5b34cbc335d9ac219958823ee96bcc1) |
|   | Loads and optionally starts playback of a new media item. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#aa5b34cbc335d9ac219958823ee96bcc1) |
|   ||
| ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) | - [loadMedia:autoplay:playPosition:activeTrackIDs:customData:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#aa25c1d056c32f5a8e2783fe34d374161) |
|   | Loads and optionally starts playback of a new media item. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#aa25c1d056c32f5a8e2783fe34d374161) |
|   ||
| ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) | - [setActiveTrackIDs:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#ae3a886af3a4b700791b827af68044a23) |
|   | Sets the active tracks. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#ae3a886af3a4b700791b827af68044a23) |
|   ||
| ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) | - [setTextTrackStyle:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#aebc61aa0bf5d9ef5f00fbabcf3c13648) |
|   | Sets the text track style. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#aebc61aa0bf5d9ef5f00fbabcf3c13648) |
|   ||
| ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) | - [pause](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a6c192d727527451ee4f65bbeb30544d7) |
|   | Pauses playback of the current media item. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a6c192d727527451ee4f65bbeb30544d7) |
|   ||
| ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) | - [pauseWithCustomData:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a5c110428b112ce2086af799ec89a7f6d) |
|   | Pauses playback of the current media item. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a5c110428b112ce2086af799ec89a7f6d) |
|   ||
| ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) | - [stop](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a7245467a939ee0328b37ea76dc80175c) |
|   | Stops playback of the current media item. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a7245467a939ee0328b37ea76dc80175c) |
|   ||
| ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) | - [stopWithCustomData:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#ace41198fc1c4abf193d0acc15705908a) |
|   | Stops playback of the current media item. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#ace41198fc1c4abf193d0acc15705908a) |
|   ||
| ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) | - [play](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#afc99d34ceaa076361ca52b990f8d71f2) |
|   | Begins (or resumes) playback of the current media item. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#afc99d34ceaa076361ca52b990f8d71f2) |
|   ||
| ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) | - [playWithCustomData:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a8d43a542f0fd71abb86381cc677fa9cb) |
|   | Begins (or resumes) playback of the current media item. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a8d43a542f0fd71abb86381cc677fa9cb) |
|   ||
| ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) | - [seekToTimeInterval:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a53a3c31fb3ba10ebaf10a583bb1a60c0) |
|   | Seeks to a new position within the current media item. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a53a3c31fb3ba10ebaf10a583bb1a60c0) |
|   ||
| ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) | - [seekToTimeInterval:resumeState:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a51914c949be3bbe300692abf5322315c) |
|   | Seeks to a new position within the current media item. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a51914c949be3bbe300692abf5322315c) |
|   ||
| ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) | - [seekToTimeInterval:resumeState:customData:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#ae4de63cf0928d1566759ebd90a7993f3) |
|   | Seeks to a new position within the current media item. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#ae4de63cf0928d1566759ebd90a7993f3) |
|   ||
| ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) | - [queueLoadItems:startIndex:repeatMode:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a006a8893ecc7bf74f383cf85d90392ac) |
|   | Loads and optionally starts playback of a new queue of media items. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a006a8893ecc7bf74f383cf85d90392ac) |
|   ||
| ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) | - [queueLoadItems:startIndex:repeatMode:customData:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#ad808d0abed32d7b1a3e7ab1f1816ec5d) |
|   | Loads and optionally starts playback of a new queue of media items. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#ad808d0abed32d7b1a3e7ab1f1816ec5d) |
|   ||
| ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) | - [queueLoadItems:startIndex:playPosition:repeatMode:customData:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a0aa6ac971f43eb262577e749fee91249) |
|   | Loads and optionally starts playback of a new queue of media items. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a0aa6ac971f43eb262577e749fee91249) |
|   ||
| ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) | - [queueInsertItems:beforeItemWithID:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#acf3a5017ce7997a76f29072b76ef6275) |
|   | Inserts a list of new media items into the queue. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#acf3a5017ce7997a76f29072b76ef6275) |
|   ||
| ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) | - [queueInsertItems:beforeItemWithID:customData:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a1fbaf6a7ef527685d46bfa99fef7354f) |
|   | Inserts a list of new media items into the queue. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a1fbaf6a7ef527685d46bfa99fef7354f) |
|   ||
| ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) | - [queueInsertItem:beforeItemWithID:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a39f1e88245e19d25d9dba86dd123056f) |
|   | A convenience method that inserts a single item into the queue. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a39f1e88245e19d25d9dba86dd123056f) |
|   ||
| ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) | - [queueInsertAndPlayItem:beforeItemWithID:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a812bbdf4268638cbbef90a529826122d) |
|   | A convenience method that inserts a single item into the queue and makes it the current item. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a812bbdf4268638cbbef90a529826122d) |
|   ||
| ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) | - [queueInsertAndPlayItem:beforeItemWithID:playPosition:customData:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a0c1af3161fae2ed10e6cf32b217515a0) |
|   | A convenience method that inserts a single item into the queue and makes it the current item. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a0c1af3161fae2ed10e6cf32b217515a0) |
|   ||
| ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) | - [queueUpdateItems:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a0989ae7936c3c21cc7ada6983851843f) |
|   | Updates the queue. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a0989ae7936c3c21cc7ada6983851843f) |
|   ||
| ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) | - [queueUpdateItems:customData:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a9a7c397db66502e67030675340a5f78d) |
|   | Updates the queue. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a9a7c397db66502e67030675340a5f78d) |
|   ||
| ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) | - [queueRemoveItemsWithIDs:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a5b52ca936965fd964aac5a1959d849d1) |
|   | Removes a list of media items from the queue. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a5b52ca936965fd964aac5a1959d849d1) |
|   ||
| ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) | - [queueRemoveItemsWithIDs:customData:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a024473343b26b4a7324bcc62bd194eb8) |
|   | Removes a list of media items from the queue. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a024473343b26b4a7324bcc62bd194eb8) |
|   ||
| ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) | - [queueRemoveItemWithID:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#afc3922fd3ae85291ab88ef6068cbc26f) |
|   | A convenience method that removes a single item from the queue. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#afc3922fd3ae85291ab88ef6068cbc26f) |
|   ||
| ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) | - [queueReorderItemsWithIDs:insertBeforeItemWithID:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a8e7d50d06889504a8323ec6918fe4074) |
|   | Reorders a list of media items in the queue. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a8e7d50d06889504a8323ec6918fe4074) |
|   ||
| ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) | - [queueReorderItemsWithIDs:insertBeforeItemWithID:customData:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a4d0400a6b1b0e199e1349231d3d0612b) |
|   | Reorder a list of media items in the queue. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a4d0400a6b1b0e199e1349231d3d0612b) |
|   ||
| ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) | - [queueMoveItemWithID:beforeItemWithID:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#abb0df2bbc1bc3932d940f0c0bcba11d4) |
|   | A convenience method that moves a single item in the queue. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#abb0df2bbc1bc3932d940f0c0bcba11d4) |
|   ||
| ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) | - [queueJumpToItemWithID:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#af5d8e9fd28e6b6f4a37bee5ff0ce3e02) |
|   | Jumps to the item with the specified ID in the queue. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#af5d8e9fd28e6b6f4a37bee5ff0ce3e02) |
|   ||
| ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) | - [queueJumpToItemWithID:customData:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a68ca824cde4f2bf485fbb6e92bc7490a) |
|   | Jumps to the item with the specified ID in the queue. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a68ca824cde4f2bf485fbb6e92bc7490a) |
|   ||
| ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) | - [queueJumpToItemWithID:playPosition:customData:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a9f42da0743b2295800a8e85d34311f74) |
|   | Jumps to the item with the specified ID in the queue. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a9f42da0743b2295800a8e85d34311f74) |
|   ||
| ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) | - [queueNextItem](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a76d0f60cbe400421858091e19bfe1cfe) |
|   | Moves to the next item in the queue. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a76d0f60cbe400421858091e19bfe1cfe) |
|   ||
| ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) | - [queuePreviousItem](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#ad4d84ed6847e49582828baecb50609fb) |
|   | Moves to the previous item in the queue. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#ad4d84ed6847e49582828baecb50609fb) |
|   ||
| ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) | - [queueSetRepeatMode:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a194351ec0359298a589c8aa9a5e636f0) |
|   | Sets the queue repeat mode. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a194351ec0359298a589c8aa9a5e636f0) |
|   ||
| ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) | - [setStreamVolume:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#ad3bc5e408b6e9f8963f18cc88d81a390) |
|   | Sets the stream volume. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#ad3bc5e408b6e9f8963f18cc88d81a390) |
|   ||
| ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) | - [setStreamVolume:customData:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a4ec6a370033ae88d1057bb3ca52097f5) |
|   | Sets the stream volume. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a4ec6a370033ae88d1057bb3ca52097f5) |
|   ||
| ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) | - [setStreamMuted:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a5524ba38c56d12562bedde41ebf794e7) |
|   | Sets whether the stream is muted. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a5524ba38c56d12562bedde41ebf794e7) |
|   ||
| ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) | - [setStreamMuted:customData:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a0f1fcaae5f88f8712334007a5ccfb812) |
|   | Sets whether the stream is muted. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a0f1fcaae5f88f8712334007a5ccfb812) |
|   ||
| ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) | - [requestStatus](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a0a771dcc5a1262932b49e6649e0eb6ac) |
|   | Requests updated media status information from the receiver. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a0a771dcc5a1262932b49e6649e0eb6ac) |
|   ||
| (NSTimeInterval) | - [approximateStreamPosition](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a96898ab2b4a8c25a35dbf202efe6d9c0) |
|   | Returns the approximate stream position as calculated from the last received stream information and the elapsed wall-time since that update. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a96898ab2b4a8c25a35dbf202efe6d9c0) |
|   ||
| (void) | - [notifyDidStartMediaSession](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a97fefbb773966ebebfa58cf6b6dac863) |
|   | To be called by subclasses whenever a media session begins, namely, right after new media has been successfully loaded on the remote player. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a97fefbb773966ebebfa58cf6b6dac863) |
|   ||
| (void) | - [notifyDidUpdateMediaStatus](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#ac7f1aec4e434d537e71a3b90382036e4) |
|   | To be called by subclasses any time that the mediaStatus object of the client changes. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#ac7f1aec4e434d537e71a3b90382036e4) |
|   ||
| (void) | - [notifyDidUpdateQueue](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#ad571c3a20f174c72c486cdbb6173da00) |
|   | To be called by subclasses any time that the media queue managed by the client changes. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#ad571c3a20f174c72c486cdbb6173da00) |
|   ||
| (void) | - [notifyDidUpdatePreloadStatus](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#ab9ec9b203f46d43d25c20bf0f3a07230) |
|   | To be called by subclasses whenever the [GCKMediaStatus::preloadedItemID](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_media_status#aca544cb983806b859c0d62c6e1438150 "The ID of the item that is currently preloaded, if any. ") for the client's mediaStatus changes. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#ab9ec9b203f46d43d25c20bf0f3a07230) |
|   ||
| (void) | - [notifyDidUpdateMetadata](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a6c8dacbe8a9e7482674b5c153fbec69a) |
|   | To be called by subclasses any time that the metadata changes. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a6c8dacbe8a9e7482674b5c153fbec69a) |
|   ||

|---|---|
| ## Property Summary ||
| BOOL | [connected](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#abee4bdb494ffa726a9a8ce4fdf6650eb) |
|   | A flag that indicates whether this object is connected to a session. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#abee4bdb494ffa726a9a8ce4fdf6650eb) |
|   ||
| [GCKMediaStatus](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_media_status) \* | [mediaStatus](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a8b7c15e5926ea680b8fda7a088f138aa) |
|   | The current media status, as reported by the media control channel. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a8b7c15e5926ea680b8fda7a088f138aa) |
|   ||
| NSTimeInterval | [timeSinceLastMediaStatusUpdate](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a0f1be6d1ba55cba7511b302c1a623be2) |
|   | The amount of time that has passed since the last media status update was received. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a0f1be6d1ba55cba7511b302c1a623be2) |
|   ||
| id\< [GCKRemoteMediaClientAdInfoParserDelegate](https://developers.google.com/cast/v3/reference/ios/protocol_g_c_k_remote_media_client_ad_info_parser_delegate-p) \> | [adInfoParserDelegate](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a6f7b36ed65004697cc2d504b55d47322) |
|   | A delegate capable of extracting ad break information from the custom data in a [GCKMediaStatus](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_media_status "A class that holds status information about some media. ") object. [More...](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a6f7b36ed65004697cc2d504b55d47322) |
|   ||

## Method Detail

|---|---|---|---|---|
| - (void) addListener: |   | (id\< [GCKRemoteMediaClientListener](https://developers.google.com/cast/v3/reference/ios/protocol_g_c_k_remote_media_client_listener-p) \>) | *listener* |   |

Adds a listener to this object's list of listeners.

Parameters
:

    |---|---|
    | listener | The listener to add. |


|---|---|---|---|---|
| - (void) removeListener: |   | (id\< [GCKRemoteMediaClientListener](https://developers.google.com/cast/v3/reference/ios/protocol_g_c_k_remote_media_client_listener-p) \>) | *listener* |   |

Removes a listener from this object's list of listeners.

Parameters
:

    |---|---|
    | listener | The listener to remove. |


|---|---|---|---|---|
| - ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) loadMedia: |   | ([GCKMediaInformation](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_media_information) \*) | *mediaInfo* |   |

Loads and starts playback of a new media item.

Parameters
:

    |---|---|
    | mediaInfo | An object describing the media item to load. |


Returns
:   The [GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request "An object for tracking an asynchronous request. ") object for tracking this request.

|---|---|---|---|
| - ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) [loadMedia:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a97e342a94b88b1b6c80af53f63fb8eb3) |   | ([GCKMediaInformation](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_media_information) \*) | *mediaInfo* |
| autoplay: |   | (BOOL) | *autoplay* |
|   |   |   |   |

Loads and optionally starts playback of a new media item.

Parameters
:

    |---|---|
    | mediaInfo | An object describing the media item to load. |
    | autoplay | Whether playback should start immediately. |


Returns
:   The [GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request "An object for tracking an asynchronous request. ") object for tracking this request.

|---|---|---|---|
| - ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) [loadMedia:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a97e342a94b88b1b6c80af53f63fb8eb3) |   | ([GCKMediaInformation](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_media_information) \*) | *mediaInfo* |
| autoplay: |   | (BOOL) | *autoplay* |
| playPosition: |   | (NSTimeInterval) | *playPosition* |
|   |   |   |   |

Loads and optionally starts playback of a new media item.

Parameters
:

    |---|---|
    | mediaInfo | An object describing the media item to load. |
    | autoplay | Whether playback should start immediately. |
    | playPosition | The initial playback position. |


Returns
:   The [GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request "An object for tracking an asynchronous request. ") object for tracking this request.

|---|---|---|---|
| - ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) [loadMedia:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a97e342a94b88b1b6c80af53f63fb8eb3) |   | ([GCKMediaInformation](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_media_information) \*) | *mediaInfo* |
| autoplay: |   | (BOOL) | *autoplay* |
| playPosition: |   | (NSTimeInterval) | *playPosition* |
| customData: |   | (id __nullable) | *customData* |
|   |   |   |   |

Loads and optionally starts playback of a new media item.

Parameters
:

    |---|---|
    | mediaInfo | An object describing the media item to load. |
    | autoplay | Whether playback should start immediately. |
    | playPosition | The initial playback position. |
    | customData | Custom application-specific data to pass along with the request. Must either be an object that can be serialized to JSON using [**NSJSONSerialization**](https://goo.gl/0vd4Q2), or `nil`. |


Returns
:   The [GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request "An object for tracking an asynchronous request. ") object for tracking this request.

|---|---|---|---|
| - ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) [loadMedia:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a97e342a94b88b1b6c80af53f63fb8eb3) |   | ([GCKMediaInformation](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_media_information) \*) | *mediaInfo* |
| autoplay: |   | (BOOL) | *autoplay* |
| playPosition: |   | (NSTimeInterval) | *playPosition* |
| activeTrackIDs: |   | (NSArray\< NSNumber \* \> \*__nullable) | *activeTrackIDs* |
|   |   |   |   |

Loads and optionally starts playback of a new media item.

Parameters
:

    |---|---|
    | mediaInfo | An object describing the media item to load. |
    | autoplay | Whether playback should start immediately. |
    | playPosition | The initial playback position. |
    | activeTrackIDs | An array of integers specifying the active tracks. May be `nil`. |


Returns
:   The [GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request "An object for tracking an asynchronous request. ") object for tracking this request.

|---|---|---|---|
| - ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) [loadMedia:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a97e342a94b88b1b6c80af53f63fb8eb3) |   | ([GCKMediaInformation](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_media_information) \*) | *mediaInfo* |
| autoplay: |   | (BOOL) | *autoplay* |
| playPosition: |   | (NSTimeInterval) | *playPosition* |
| activeTrackIDs: |   | (NSArray\< NSNumber \* \> \*__nullable) | *activeTrackIDs* |
| customData: |   | (id __nullable) | *customData* |
|   |   |   |   |

Loads and optionally starts playback of a new media item.

Parameters
:

    |---|---|
    | mediaInfo | An object describing the media item to load. |
    | autoplay | Whether playback should start immediately. |
    | playPosition | The initial playback position. |
    | activeTrackIDs | An array of integers specifying the active tracks. May be `nil`. |
    | customData | Custom application-specific data to pass along with the request. Must either be an object that can be serialized to JSON using [**NSJSONSerialization**](https://goo.gl/0vd4Q2), or `nil`. |


Returns
:   The [GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request "An object for tracking an asynchronous request. ") object for tracking this request.

|---|---|---|---|---|
| - ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) setActiveTrackIDs: |   | (NSArray\< NSNumber \* \> \*__nullable) | *activeTrackIDs* |   |

Sets the active tracks.

The request will fail if there is no current media status.

Parameters
:

    |---|---|
    | activeTrackIDs | An array of integers specifying the active tracks. May be empty or `nil` to disable any currently active tracks. |


Returns
:   The [GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request "An object for tracking an asynchronous request. ") object for tracking this request.

|---|---|---|---|---|
| - ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) setTextTrackStyle: |   | ([GCKMediaTextTrackStyle](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_media_text_track_style) \*__nullable) | *textTrackStyle* |   |

Sets the text track style.

The request will fail if there is no current media status.

Parameters
:

    |---|---|
    | textTrackStyle | The text track style. The style will not be changed if this is `nil`. |


Returns
:   The [GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request "An object for tracking an asynchronous request. ") object for tracking this request.

|---|---|---|---|
| - ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) pause |   |   |   |

Pauses playback of the current media item.

The request will fail if there is no current media status.

Returns
:   The [GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request "An object for tracking an asynchronous request. ") object for tracking this request.

|---|---|---|---|---|
| - ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) pauseWithCustomData: |   | (id __nullable) | *customData* |   |

Pauses playback of the current media item.

The request will fail if there is no current media status.

Parameters
:

    |---|---|
    | customData | Custom application-specific data to pass along with the request. Must either be an object that can be serialized to JSON using [**NSJSONSerialization**](https://goo.gl/0vd4Q2), or `nil`. |


Returns
:   The [GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request "An object for tracking an asynchronous request. ") object for tracking this request.

|---|---|---|---|
| - ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) stop |   |   |   |

Stops playback of the current media item.

If a queue is currently loaded, it will be removed. The request will fail if there is no current media status.

Returns
:   The [GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request "An object for tracking an asynchronous request. ") object for tracking this request.

|---|---|---|---|---|
| - ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) stopWithCustomData: |   | (id __nullable) | *customData* |   |

Stops playback of the current media item.

If a queue is currently loaded, it will be removed. The request will fail if there is no current media status.

Parameters
:

    |---|---|
    | customData | Custom application-specific data to pass along with the request. Must either be an object that can be serialized to JSON using [**NSJSONSerialization**](https://goo.gl/0vd4Q2), or `nil`. |


Returns
:   The [GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request "An object for tracking an asynchronous request. ") object for tracking this request.

|---|---|---|---|
| - ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) play |   |   |   |

Begins (or resumes) playback of the current media item.

Playback always begins at the beginning of the stream. The request will fail if there is no current media status.

Returns
:   The [GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request "An object for tracking an asynchronous request. ") object for tracking this request.

|---|---|---|---|---|
| - ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) playWithCustomData: |   | (id __nullable) | *customData* |   |

Begins (or resumes) playback of the current media item.

Playback always begins at the beginning of the stream. The request will fail if there is no current media status.

Parameters
:

    |---|---|
    | customData | Custom application-specific data to pass along with the request. Must either be an object that can be serialized to JSON using [**NSJSONSerialization**](https://goo.gl/0vd4Q2), or `nil`. |


Returns
:   The [GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request "An object for tracking an asynchronous request. ") object for tracking this request.

|---|---|---|---|---|
| - ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) seekToTimeInterval: |   | (NSTimeInterval) | *position* |   |

Seeks to a new position within the current media item.

The request will fail if there is no current media status.

Parameters
:

    |---|---|
    | position | The new position from the beginning of the stream. |


Returns
:   The [GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request "An object for tracking an asynchronous request. ") object for tracking this request.

|---|---|---|---|
| - ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) [seekToTimeInterval:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a53a3c31fb3ba10ebaf10a583bb1a60c0) |   | (NSTimeInterval) | *position* |
| resumeState: |   | ([GCKMediaResumeState](https://developers.google.com/cast/v3/reference/ios/g_c_k_media_common_8h#af220aba6f13c2466e41e7d5a3e683e52)) | *resumeState* |
|   |   |   |   |

Seeks to a new position within the current media item.

The request will fail if there is no current media status.

Parameters
:

    |---|---|
    | position | The new position interval from the beginning of the stream. |
    | resumeState | The action to take after the seek operation has finished. |


Returns
:   The [GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request "An object for tracking an asynchronous request. ") object for tracking this request.

|---|---|---|---|
| - ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) [seekToTimeInterval:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a53a3c31fb3ba10ebaf10a583bb1a60c0) |   | (NSTimeInterval) | *position* |
| resumeState: |   | ([GCKMediaResumeState](https://developers.google.com/cast/v3/reference/ios/g_c_k_media_common_8h#af220aba6f13c2466e41e7d5a3e683e52)) | *resumeState* |
| customData: |   | (id __nullable) | *customData* |
|   |   |   |   |

Seeks to a new position within the current media item.

The request will fail if there is no current media status.

Parameters
:

    |---|---|
    | position | The new position from the beginning of the stream. |
    | resumeState | The action to take after the seek operation has finished. |
    | customData | Custom application-specific data to pass along with the request. Must either be an object that can be serialized to JSON using [**NSJSONSerialization**](https://goo.gl/0vd4Q2), or `nil`. |


Returns
:   The [GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request "An object for tracking an asynchronous request. ") object for tracking this request.

|---|---|---|---|
| - ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) queueLoadItems: |   | (NSArray\< [GCKMediaQueueItem](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_media_queue_item) \* \> \*) | *queueItems* |
| startIndex: |   | (NSUInteger) | *startIndex* |
| repeatMode: |   | ([GCKMediaRepeatMode](https://developers.google.com/cast/v3/reference/ios/g_c_k_media_common_8h#aad72b610da8ac7e1785975bd5f251406)) | *repeatMode* |
|   |   |   |   |

Loads and optionally starts playback of a new queue of media items.

Parameters
:

    |---|---|
    | queueItems | An array of [GCKMediaQueueItem](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_media_queue_item "A class representing a media queue item. ") instances to load. Must not be `nil` or empty. |
    | startIndex | The index of the item in the items array that should be played first. |
    | repeatMode | The repeat mode for playing the queue. |


Returns
:   The [GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request "An object for tracking an asynchronous request. ") object for tracking this request.

|---|---|---|---|
| - ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) queueLoadItems: |   | (NSArray\< [GCKMediaQueueItem](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_media_queue_item) \* \> \*) | *queueItems* |
| startIndex: |   | (NSUInteger) | *startIndex* |
| repeatMode: |   | ([GCKMediaRepeatMode](https://developers.google.com/cast/v3/reference/ios/g_c_k_media_common_8h#aad72b610da8ac7e1785975bd5f251406)) | *repeatMode* |
| customData: |   | (id __nullable) | *customData* |
|   |   |   |   |

Loads and optionally starts playback of a new queue of media items.

Parameters
:

    |---|---|
    | queueItems | An array of [GCKMediaQueueItem](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_media_queue_item "A class representing a media queue item. ") instances to load. Must not be `nil` or empty. |
    | startIndex | The index of the item in the items array that should be played first. |
    | repeatMode | The repeat mode for playing the queue. |
    | customData | Custom application-specific data to pass along with the request. Must either be an object that can be serialized to JSON using [**NSJSONSerialization**](https://goo.gl/0vd4Q2), or `nil`. |


Returns
:   The [GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request "An object for tracking an asynchronous request. ") object for tracking this request.

|---|---|---|---|
| - ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) queueLoadItems: |   | (NSArray\< [GCKMediaQueueItem](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_media_queue_item) \* \> \*) | *queueItems* |
| startIndex: |   | (NSUInteger) | *startIndex* |
| playPosition: |   | (NSTimeInterval) | *playPosition* |
| repeatMode: |   | ([GCKMediaRepeatMode](https://developers.google.com/cast/v3/reference/ios/g_c_k_media_common_8h#aad72b610da8ac7e1785975bd5f251406)) | *repeatMode* |
| customData: |   | (id __nullable) | *customData* |
|   |   |   |   |

Loads and optionally starts playback of a new queue of media items.

Parameters
:

    |---|---|
    | queueItems | An array of [GCKMediaQueueItem](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_media_queue_item "A class representing a media queue item. ") instances to load. Must not be `nil` or empty. |
    | startIndex | The index of the item in the items array that should be played first. |
    | playPosition | The initial playback position for the item when it is first played, relative to the beginning of the stream. This value is ignored when the same item is played again, for example when the queue repeats, or the item is later jumped to. In those cases the item's startTime is used. |
    | repeatMode | The repeat mode for playing the queue. |
    | customData | Custom application-specific data to pass along with the request. Must either be an object that can be serialized to JSON using [**NSJSONSerialization**](https://goo.gl/0vd4Q2), or `nil`. |


Returns
:   The [GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request "An object for tracking an asynchronous request. ") object for tracking this request.

|---|---|---|---|
| - ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) queueInsertItems: |   | (NSArray\< [GCKMediaQueueItem](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_media_queue_item) \* \> \*) | *queueItems* |
| beforeItemWithID: |   | (NSUInteger) | *beforeItemID* |
|   |   |   |   |

Inserts a list of new media items into the queue.

Parameters
:

    |---|---|
    | queueItems | An array of [GCKMediaQueueItem](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_media_queue_item "A class representing a media queue item. ") instances to insert. Must not be `nil` or empty. |
    | beforeItemID | The ID of the item that will be located immediately after the inserted list. If the value is [kGCKMediaQueueInvalidItemID](https://developers.google.com/cast/v3/reference/ios/g_c_k_media_queue_item_8h#a200e0d20acf51d47ce1c90ae982bd4e5), the inserted list will be appended to the end of the queue. |


Returns
:   The [GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request "An object for tracking an asynchronous request. ") object for tracking this request.

|---|---|---|---|
| - ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) queueInsertItems: |   | (NSArray\< [GCKMediaQueueItem](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_media_queue_item) \* \> \*) | *queueItems* |
| beforeItemWithID: |   | (NSUInteger) | *beforeItemID* |
| customData: |   | (id __nullable) | *customData* |
|   |   |   |   |

Inserts a list of new media items into the queue.

Parameters
:

    |---|---|
    | queueItems | An array of [GCKMediaQueueItem](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_media_queue_item "A class representing a media queue item. ") instances to insert. Must not be `nil` or empty. |
    | beforeItemID | ID of the item that will be located immediately after the inserted list. If the value is [kGCKMediaQueueInvalidItemID](https://developers.google.com/cast/v3/reference/ios/g_c_k_media_queue_item_8h#a200e0d20acf51d47ce1c90ae982bd4e5), the inserted list will be appended to the end of the queue. |
    | customData | Custom application-specific data to pass along with the request. Must either be an object that can be serialized to JSON using [**NSJSONSerialization**](https://goo.gl/0vd4Q2), or `nil`. |


Returns
:   The [GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request "An object for tracking an asynchronous request. ") object for tracking this request.

|---|---|---|---|
| - ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) queueInsertItem: |   | ([GCKMediaQueueItem](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_media_queue_item) \*) | *item* |
| beforeItemWithID: |   | (NSUInteger) | *beforeItemID* |
|   |   |   |   |

A convenience method that inserts a single item into the queue.

Parameters
:

    |---|---|
    | item | The item to insert. |
    | beforeItemID | The ID of the item that will be located immediately after the inserted item. If the value is [kGCKMediaQueueInvalidItemID](https://developers.google.com/cast/v3/reference/ios/g_c_k_media_queue_item_8h#a200e0d20acf51d47ce1c90ae982bd4e5), or does not refer to any item currently in the queue, the inserted item will be appended to the end of the queue. |


Returns
:   The [GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request "An object for tracking an asynchronous request. ") object for tracking this request.

|---|---|---|---|
| - ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) queueInsertAndPlayItem: |   | ([GCKMediaQueueItem](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_media_queue_item) \*) | *item* |
| beforeItemWithID: |   | (NSUInteger) | *beforeItemID* |
|   |   |   |   |

A convenience method that inserts a single item into the queue and makes it the current item.

Parameters
:

    |---|---|
    | item | The item to insert. |
    | beforeItemID | The ID of the item that will be located immediately after the inserted item. If the value is [kGCKMediaQueueInvalidItemID](https://developers.google.com/cast/v3/reference/ios/g_c_k_media_queue_item_8h#a200e0d20acf51d47ce1c90ae982bd4e5), or does not refer to any item currently in the queue, the inserted item will be appended to the end of the queue. |


Returns
:   The [GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request "An object for tracking an asynchronous request. ") object for tracking this request.

|---|---|---|---|
| - ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) queueInsertAndPlayItem: |   | ([GCKMediaQueueItem](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_media_queue_item) \*) | *item* |
| beforeItemWithID: |   | (NSUInteger) | *beforeItemID* |
| playPosition: |   | (NSTimeInterval) | *playPosition* |
| customData: |   | (id __nullable) | *customData* |
|   |   |   |   |

A convenience method that inserts a single item into the queue and makes it the current item.

Parameters
:

    |---|---|
    | item | The item to insert. |
    | beforeItemID | The ID of the item that will be located immediately after the inserted item. If the value is [kGCKMediaQueueInvalidItemID](https://developers.google.com/cast/v3/reference/ios/g_c_k_media_queue_item_8h#a200e0d20acf51d47ce1c90ae982bd4e5), or does not refer to any item currently in the queue, the inserted item will be appended to the end of the queue. |
    | playPosition | The initial playback position for the item when it is first played, relative to the beginning of the stream. This value is ignored when the same item is played again, for example when the queue repeats, or the item is later jumped to. In those cases the item's startTime is used. |
    | customData | Custom application-specific data to pass along with the request. Must either be an object that can be serialized to JSON using [**NSJSONSerialization**](https://goo.gl/0vd4Q2), or `nil`. |


Returns
:   The [GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request "An object for tracking an asynchronous request. ") object for tracking this request.

|---|---|---|---|---|
| - ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) queueUpdateItems: |   | (NSArray\< [GCKMediaQueueItem](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_media_queue_item) \* \> \*) | *queueItems* |   |

Updates the queue.

Parameters
:

    |---|---|
    | queueItems | The list of updated items. |


Returns
:   The [GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request "An object for tracking an asynchronous request. ") object for tracking this request.

|---|---|---|---|
| - ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) [queueUpdateItems:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a0989ae7936c3c21cc7ada6983851843f) |   | (NSArray\< [GCKMediaQueueItem](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_media_queue_item) \* \> \*) | *queueItems* |
| customData: |   | (id __nullable) | *customData* |
|   |   |   |   |

Updates the queue.

Parameters
:

    |---|---|
    | queueItems | The list of updated items. |
    | customData | Custom application-specific data to pass along with the request. Must either be an object that can be serialized to JSON using [**NSJSONSerialization**](https://goo.gl/0vd4Q2), or `nil`. |


Returns
:   The [GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request "An object for tracking an asynchronous request. ") object for tracking this request.

|---|---|---|---|---|
| - ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) queueRemoveItemsWithIDs: |   | (NSArray\< NSNumber \* \> \*) | *itemIDs* |   |

Removes a list of media items from the queue.

If the queue becomes empty as a result, the current media session will be terminated.

Parameters
:

    |---|---|
    | itemIDs | An array of media item IDs identifying the items to remove. Must not be `nil` or empty. |


Returns
:   The [GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request "An object for tracking an asynchronous request. ") object for tracking this request.

|---|---|---|---|
| - ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) [queueRemoveItemsWithIDs:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a5b52ca936965fd964aac5a1959d849d1) |   | (NSArray\< NSNumber \* \> \*) | *itemIDs* |
| customData: |   | (id __nullable) | *customData* |
|   |   |   |   |

Removes a list of media items from the queue.

If the queue becomes empty as a result, the current media session will be terminated.

Parameters
:

    |---|---|
    | itemIDs | An array of media item IDs identifying the items to remove. Must not be `nil` or empty. |
    | customData | Custom application-specific data to pass along with the request. Must either be an object that can be serialized to JSON using [**NSJSONSerialization**](https://goo.gl/0vd4Q2), or `nil`. |


Returns
:   The [GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request "An object for tracking an asynchronous request. ") object for tracking this request.

|---|---|---|---|---|
| - ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) queueRemoveItemWithID: |   | (NSUInteger) | *itemID* |   |

A convenience method that removes a single item from the queue.

Parameters
:

    |---|---|
    | itemID | The ID of the item to remove. |


Returns
:   The [GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request "An object for tracking an asynchronous request. ") object for tracking this request.

|---|---|---|---|
| - ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) queueReorderItemsWithIDs: |   | (NSArray\< NSNumber \* \> \*) | *queueItemIDs* |
| insertBeforeItemWithID: |   | (NSUInteger) | *beforeItemID* |
|   |   |   |   |

Reorders a list of media items in the queue.

Parameters
:

    |---|---|
    | queueItemIDs | An array of media item IDs identifying the items to reorder. Must not be `nil` or empty. |
    | beforeItemID | ID of the item that will be located immediately after the reordered list. If the value is [kGCKMediaQueueInvalidItemID](https://developers.google.com/cast/v3/reference/ios/g_c_k_media_queue_item_8h#a200e0d20acf51d47ce1c90ae982bd4e5), or does not refer to any item currently in the queue, the reordered list will be appended at the end of the queue. |


Returns
:   The [GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request "An object for tracking an asynchronous request. ") object for tracking this request.

|---|---|---|---|
| - ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) queueReorderItemsWithIDs: |   | (NSArray\< NSNumber \* \> \*) | *queueItemIDs* |
| insertBeforeItemWithID: |   | (NSUInteger) | *beforeItemID* |
| customData: |   | (id __nullable) | *customData* |
|   |   |   |   |

Reorder a list of media items in the queue.

Parameters
:

    |---|---|
    | queueItemIDs | An array of media item IDs identifying the items to reorder. Must not be `nil` or empty. |
    | beforeItemID | The ID of the item that will be located immediately after the reordered list. If the value is [kGCKMediaQueueInvalidItemID](https://developers.google.com/cast/v3/reference/ios/g_c_k_media_queue_item_8h#a200e0d20acf51d47ce1c90ae982bd4e5), or does not refer to any item currently in the queue, the reordered list will be moved to the end of the queue. |
    | customData | Custom application-specific data to pass along with the request. Must either be an object that can be serialized to JSON using [**NSJSONSerialization**](https://goo.gl/0vd4Q2), or `nil`. |


Returns
:   The [GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request "An object for tracking an asynchronous request. ") object for tracking this request.

|---|---|---|---|
| - ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) queueMoveItemWithID: |   | (NSUInteger) | *itemID* |
| beforeItemWithID: |   | (NSUInteger) | *beforeItemID* |
|   |   |   |   |

A convenience method that moves a single item in the queue.

Parameters
:

    |---|---|
    | itemID | The ID of the item to move. |
    | beforeItemID | The ID of the item that will be located immediately after the reordered list. If the value is [kGCKMediaQueueInvalidItemID](https://developers.google.com/cast/v3/reference/ios/g_c_k_media_queue_item_8h#a200e0d20acf51d47ce1c90ae982bd4e5), or does not refer to any item currently in the queue, the item will be moved to the end of the queue. |


Returns
:   The [GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request "An object for tracking an asynchronous request. ") object for tracking this request.

|---|---|---|---|---|
| - ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) queueJumpToItemWithID: |   | (NSUInteger) | *itemID* |   |

Jumps to the item with the specified ID in the queue.

Parameters
:

    |---|---|
    | itemID | The ID of the item to jump to. |


Returns
:   The [GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request "An object for tracking an asynchronous request. ") object for tracking this request.

|---|---|---|---|
| - ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) [queueJumpToItemWithID:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#af5d8e9fd28e6b6f4a37bee5ff0ce3e02) |   | (NSUInteger) | *itemID* |
| customData: |   | (id __nullable) | *customData* |
|   |   |   |   |

Jumps to the item with the specified ID in the queue.

Parameters
:

    |---|---|
    | itemID | The ID of the item to jump to. |
    | customData | Custom application-specific data to pass along with the request. Must either be an object that can be serialized to JSON using [**NSJSONSerialization**](https://goo.gl/0vd4Q2), or `nil`. |


Returns
:   The [GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request "An object for tracking an asynchronous request. ") object for tracking this request.

|---|---|---|---|
| - ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) [queueJumpToItemWithID:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#af5d8e9fd28e6b6f4a37bee5ff0ce3e02) |   | (NSUInteger) | *itemID* |
| playPosition: |   | (NSTimeInterval) | *playPosition* |
| customData: |   | (id __nullable) | *customData* |
|   |   |   |   |

Jumps to the item with the specified ID in the queue.

Parameters
:

    |---|---|
    | itemID | The ID of the item to jump to. |
    | playPosition | The initial playback position for the item when it is first played, relative to the beginning of the stream. This value is ignored when the same item is played again, for example when the queue repeats, or the item is later jumped to. In those cases the item's startTime is used. |
    | customData | Custom application-specific data to pass along with the request. Must either be an object that can be serialized to JSON using [**NSJSONSerialization**](https://goo.gl/0vd4Q2), or `nil`. |


Returns
:   The [GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request "An object for tracking an asynchronous request. ") object for tracking this request.

|---|---|---|---|
| - ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) queueNextItem |   |   |   |

Moves to the next item in the queue.

Returns
:   The [GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request "An object for tracking an asynchronous request. ") object for tracking this request.

|---|---|---|---|
| - ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) queuePreviousItem |   |   |   |

Moves to the previous item in the queue.

Returns
:   The [GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request "An object for tracking an asynchronous request. ") object for tracking this request.

|---|---|---|---|---|
| - ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) queueSetRepeatMode: |   | ([GCKMediaRepeatMode](https://developers.google.com/cast/v3/reference/ios/g_c_k_media_common_8h#aad72b610da8ac7e1785975bd5f251406)) | *repeatMode* |   |

Sets the queue repeat mode.

Parameters
:

    |---|---|
    | repeatMode | The new repeat mode. |


Returns
:   The [GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request "An object for tracking an asynchronous request. ") object for tracking this request.

|---|---|---|---|---|
| - ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) setStreamVolume: |   | (float) | *volume* |   |

Sets the stream volume.

The request will fail if there is no current media session.

Parameters
:

    |---|---|
    | volume | The new volume, in the range \[0.0 - 1.0\]. |


Returns
:   The [GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request "An object for tracking an asynchronous request. ") object for tracking this request.

|---|---|---|---|
| - ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) [setStreamVolume:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#ad3bc5e408b6e9f8963f18cc88d81a390) |   | (float) | *volume* |
| customData: |   | (id __nullable) | *customData* |
|   |   |   |   |

Sets the stream volume.

The request will fail if there is no current media session.

Parameters
:

    |---|---|
    | volume | The new volume, in the range \[0.0 - 1.0\]. |
    | customData | Custom application-specific data to pass along with the request. Must either be an object that can be serialized to JSON using [**NSJSONSerialization**](https://goo.gl/0vd4Q2), or `nil`. |


Returns
:   The [GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request "An object for tracking an asynchronous request. ") object for tracking this request.

|---|---|---|---|---|
| - ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) setStreamMuted: |   | (BOOL) | *muted* |   |

Sets whether the stream is muted.

The request will fail if there is no current media session.

Parameters
:

    |---|---|
    | muted | Whether the stream should be muted or unmuted. |


Returns
:   The [GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request "An object for tracking an asynchronous request. ") object for tracking this request.

|---|---|---|---|
| - ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) [setStreamMuted:](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_remote_media_client#a5524ba38c56d12562bedde41ebf794e7) |   | (BOOL) | *muted* |
| customData: |   | (id __nullable) | *customData* |
|   |   |   |   |

Sets whether the stream is muted.

The request will fail if there is no current media session.

Parameters
:

    |---|---|
    | muted | Whether the stream should be muted or unmuted. |
    | customData | Custom application-specific data to pass along with the request. Must either be an object that can be serialized to JSON using [**NSJSONSerialization**](https://goo.gl/0vd4Q2), or `nil`. |


Returns
:   The [GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request "An object for tracking an asynchronous request. ") object for tracking this request.

|---|---|---|---|
| - ([GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request) \*) requestStatus |   |   |   |

Requests updated media status information from the receiver.

Returns
:   The [GCKRequest](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_request "An object for tracking an asynchronous request. ") object for tracking this request.

|---|---|---|---|
| - (NSTimeInterval) approximateStreamPosition |   |   |   |

Returns the approximate stream position as calculated from the last received stream information and the elapsed wall-time since that update.

Returns 0 if the channel is not connected or if no media is currently loaded.

|---|---|---|---|
| - (void) notifyDidStartMediaSession |   |   |   |

To be called by subclasses whenever a media session begins, namely, right after new media has been successfully loaded on the remote player.

Provided by category [GCKRemoteMediaClient(Protected)](https://developers.google.com/cast/v3/reference/ios/category_g_c_k_remote_media_client_07_protected_08#a97fefbb773966ebebfa58cf6b6dac863).

|---|---|---|---|
| - (void) notifyDidUpdateMediaStatus |   |   |   |

To be called by subclasses any time that the mediaStatus object of the client changes.

Provided by category [GCKRemoteMediaClient(Protected)](https://developers.google.com/cast/v3/reference/ios/category_g_c_k_remote_media_client_07_protected_08#ac7f1aec4e434d537e71a3b90382036e4).

|---|---|---|---|
| - (void) notifyDidUpdateQueue |   |   |   |

To be called by subclasses any time that the media queue managed by the client changes.

Provided by category [GCKRemoteMediaClient(Protected)](https://developers.google.com/cast/v3/reference/ios/category_g_c_k_remote_media_client_07_protected_08#ad571c3a20f174c72c486cdbb6173da00).

|---|---|---|---|
| - (void) notifyDidUpdatePreloadStatus |   |   |   |

To be called by subclasses whenever the [GCKMediaStatus::preloadedItemID](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_media_status#aca544cb983806b859c0d62c6e1438150 "The ID of the item that is currently preloaded, if any. ") for the client's mediaStatus changes.

Provided by category [GCKRemoteMediaClient(Protected)](https://developers.google.com/cast/v3/reference/ios/category_g_c_k_remote_media_client_07_protected_08#ab9ec9b203f46d43d25c20bf0f3a07230).

|---|---|---|---|
| - (void) notifyDidUpdateMetadata |   |   |   |

To be called by subclasses any time that the metadata changes.

Provided by category [GCKRemoteMediaClient(Protected)](https://developers.google.com/cast/v3/reference/ios/category_g_c_k_remote_media_client_07_protected_08#a6c8dacbe8a9e7482674b5c153fbec69a).

## Property Detail

|---|---|
| |---| | - (BOOL) connected | | readnonatomicassign |

A flag that indicates whether this object is connected to a session.

|---|---|
| |---| | - ([GCKMediaStatus](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_media_status)\*) mediaStatus | | readnonatomicstrong |

The current media status, as reported by the media control channel.

|---|---|
| |---| | - (NSTimeInterval) timeSinceLastMediaStatusUpdate | | readnonatomicassign |

The amount of time that has passed since the last media status update was received.

If a status request is currently in progress, this will be 0.

|---|---|
| |---| | - (id\<[GCKRemoteMediaClientAdInfoParserDelegate](https://developers.google.com/cast/v3/reference/ios/protocol_g_c_k_remote_media_client_ad_info_parser_delegate-p)\>) adInfoParserDelegate | | readwritenonatomicweak |

A delegate capable of extracting ad break information from the custom data in a [GCKMediaStatus](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_media_status "A class that holds status information about some media. ") object.

**[Deprecated:](https://developers.google.com/cast/v3/reference/ios/deprecated#_deprecated000037)**
:   Use [GCKAdBreakStatus](https://developers.google.com/cast/v3/reference/ios/interface_g_c_k_ad_break_status "A class representing the ad break status. ") instead.