GCKRemoteMediaClient.h
1 // Copyright 2015 Google Inc.
2 
3 #import <GoogleCast/GCKDefines.h>
4 #import <GoogleCast/GCKMediaCommon.h>
5 #import <GoogleCast/GCKMediaInformation.h>
6 #import <GoogleCast/GCKMediaMetadata.h>
7 #import <GoogleCast/GCKMediaQueueItem.h>
8 #import <GoogleCast/GCKMediaStatus.h>
9 #import <GoogleCast/GCKRequest.h>
10 
11 #import <Foundation/Foundation.h>
12 
13 @class GCKMediaLoadOptions;
15 @class GCKMediaSeekOptions;
16 @protocol GCKRemoteMediaClientListener;
17 @protocol GCKRemoteMediaClientAdInfoParserDelegate;
18 
19 GCK_ASSUME_NONNULL_BEGIN
20 
21 
28 GCK_EXPORT
29 @interface GCKRemoteMediaClient : NSObject
30 
32 @property(nonatomic, assign, readonly) BOOL connected;
33 
35 @property(nonatomic, strong, readonly, GCK_NULLABLE) GCKMediaStatus *mediaStatus;
36 
41 @property(nonatomic, assign, readonly) NSTimeInterval timeSinceLastMediaStatusUpdate;
42 
48 - (void)addListener:(id<GCKRemoteMediaClientListener>)listener;
49 
55 - (void)removeListener:(id<GCKRemoteMediaClientListener>)listener;
56 
63 @property(nonatomic, weak, readwrite) id<GCKRemoteMediaClientAdInfoParserDelegate>
65 
72 - (GCKRequest *)loadMedia:(GCKMediaInformation *)mediaInfo;
73 
82 - (GCKRequest *)loadMedia:(GCKMediaInformation *)mediaInfo
83  withOptions:(GCKMediaLoadOptions *)options;
84 
93 - (GCKRequest *)loadMedia:(GCKMediaInformation *)mediaInfo autoplay:(BOOL)autoplay
94  GCK_DEPRECATED("Use loadMedia:withOptions:");
95 
105 - (GCKRequest *)loadMedia:(GCKMediaInformation *)mediaInfo
106  autoplay:(BOOL)autoplay
107  playPosition:(NSTimeInterval)playPosition
108  GCK_DEPRECATED("Use loadMedia:withOptions:");
109 
122 - (GCKRequest *)loadMedia:(GCKMediaInformation *)mediaInfo
123  autoplay:(BOOL)autoplay
124  playPosition:(NSTimeInterval)playPosition
125  customData:(id GCK_NULLABLE_TYPE)customData
126  GCK_DEPRECATED("Use loadMedia:withOptions:");
127 
139 - (GCKRequest *)loadMedia:(GCKMediaInformation *)mediaInfo
140  autoplay:(BOOL)autoplay
141  playPosition:(NSTimeInterval)playPosition
142  activeTrackIDs:(NSArray<NSNumber *> *GCK_NULLABLE_TYPE)activeTrackIDs
143  GCK_DEPRECATED("Use loadMedia:withOptions:");
144 
159 - (GCKRequest *)loadMedia:(GCKMediaInformation *)mediaInfo
160  autoplay:(BOOL)autoplay
161  playPosition:(NSTimeInterval)playPosition
162  activeTrackIDs:(NSArray<NSNumber *> *GCK_NULLABLE_TYPE)activeTrackIDs
163  customData:(id GCK_NULLABLE_TYPE)customData
164  GCK_DEPRECATED("Use loadMedia:withOptions:");
165 
173 - (GCKRequest *)setPlaybackRate:(float)playbackRate;
174 
186 - (GCKRequest *)setPlaybackRate:(float)playbackRate customData:(id GCK_NULLABLE_TYPE)customData;
187 
195 - (GCKRequest *)setActiveTrackIDs:(NSArray<NSNumber *> *GCK_NULLABLE_TYPE)activeTrackIDs;
196 
204 - (GCKRequest *)setTextTrackStyle:(GCKMediaTextTrackStyle *GCK_NULLABLE_TYPE)textTrackStyle;
205 
212 - (GCKRequest *)pause;
213 
223 - (GCKRequest *)pauseWithCustomData:(id GCK_NULLABLE_TYPE)customData;
224 
231 - (GCKRequest *)stop;
232 
243 - (GCKRequest *)stopWithCustomData:(id GCK_NULLABLE_TYPE)customData;
244 
251 - (GCKRequest *)play;
252 
262 - (GCKRequest *)playWithCustomData:(id GCK_NULLABLE_TYPE)customData;
263 
270 - (GCKRequest *)skipAd;
271 
280 - (GCKRequest *)seekWithOptions:(GCKMediaSeekOptions *)options;
281 
290 - (GCKRequest *)seekToTimeInterval:(NSTimeInterval)position
291  GCK_DEPRECATED("Use seekWithOptions:");
292 
302 - (GCKRequest *)seekToTimeInterval:(NSTimeInterval)position
303  resumeState:(GCKMediaResumeState)resumeState
304  GCK_DEPRECATED("Use seekWithOptions:");
305 
318 - (GCKRequest *)seekToTimeInterval:(NSTimeInterval)position
319  resumeState:(GCKMediaResumeState)resumeState
320  customData:(id GCK_NULLABLE_TYPE)customData
321  GCK_DEPRECATED("Use seekWithOptions:");
322 
332 
342 - (GCKRequest *)queueFetchItemsForIDs:(NSArray<NSNumber *> *)queueItemIDs;
343 
354 - (GCKRequest *)queueLoadItems:(NSArray<GCKMediaQueueItem *> *)queueItems
355  startIndex:(NSUInteger)startIndex
356  repeatMode:(GCKMediaRepeatMode)repeatMode
357  GCK_DEPRECATED("Use queueLoadItems:withOptions:");
358 
372 - (GCKRequest *)queueLoadItems:(NSArray<GCKMediaQueueItem *> *)queueItems
373  startIndex:(NSUInteger)startIndex
374  repeatMode:(GCKMediaRepeatMode)repeatMode
375  customData:(id GCK_NULLABLE_TYPE)customData
376  GCK_DEPRECATED("Use queueLoadItems:withOptions:");
377 
395 - (GCKRequest *)queueLoadItems:(NSArray<GCKMediaQueueItem *> *)queueItems
396  startIndex:(NSUInteger)startIndex
397  playPosition:(NSTimeInterval)playPosition
398  repeatMode:(GCKMediaRepeatMode)repeatMode
399  customData:(id GCK_NULLABLE_TYPE)customData
400  GCK_DEPRECATED("Use queueLoadItems:withOptions:");
401 
410 - (GCKRequest *)queueLoadItems:(NSArray<GCKMediaQueueItem *> *)queueItems
411  withOptions:(GCKMediaQueueLoadOptions *)options;
412 
423 - (GCKRequest *)queueInsertItems:(NSArray<GCKMediaQueueItem *> *)queueItems
424  beforeItemWithID:(NSUInteger)beforeItemID;
425 
439 - (GCKRequest *)queueInsertItems:(NSArray<GCKMediaQueueItem *> *)queueItems
440  beforeItemWithID:(NSUInteger)beforeItemID
441  customData:(id GCK_NULLABLE_TYPE)customData;
442 
452 - (GCKRequest *)queueInsertItem:(GCKMediaQueueItem *)item beforeItemWithID:(NSUInteger)beforeItemID;
453 
463 - (GCKRequest *)queueInsertAndPlayItem:(GCKMediaQueueItem *)item
464  beforeItemWithID:(NSUInteger)beforeItemID;
465 
482 - (GCKRequest *)queueInsertAndPlayItem:(GCKMediaQueueItem *)item
483  beforeItemWithID:(NSUInteger)beforeItemID
484  playPosition:(NSTimeInterval)playPosition
485  customData:(id GCK_NULLABLE_TYPE)customData;
486 
493 - (GCKRequest *)queueUpdateItems:(NSArray<GCKMediaQueueItem *> *)queueItems;
494 
504 - (GCKRequest *)queueUpdateItems:(NSArray<GCKMediaQueueItem *> *)queueItems
505  customData:(id GCK_NULLABLE_TYPE)customData;
506 
515 - (GCKRequest *)queueRemoveItemsWithIDs:(NSArray<NSNumber *> *)itemIDs;
516 
528 - (GCKRequest *)queueRemoveItemsWithIDs:(NSArray<NSNumber *> *)itemIDs
529  customData:(id GCK_NULLABLE_TYPE)customData;
530 
537 - (GCKRequest *)queueRemoveItemWithID:(NSUInteger)itemID;
538 
549 - (GCKRequest *)queueReorderItemsWithIDs:(NSArray<NSNumber *> *)queueItemIDs
550  insertBeforeItemWithID:(NSUInteger)beforeItemID;
551 
565 - (GCKRequest *)queueReorderItemsWithIDs:(NSArray<NSNumber *> *)queueItemIDs
566  insertBeforeItemWithID:(NSUInteger)beforeItemID
567  customData:(id GCK_NULLABLE_TYPE)customData;
568 
578 - (GCKRequest *)queueMoveItemWithID:(NSUInteger)itemID beforeItemWithID:(NSUInteger)beforeItemID;
579 
586 - (GCKRequest *)queueJumpToItemWithID:(NSUInteger)itemID;
587 
597 - (GCKRequest *)queueJumpToItemWithID:(NSUInteger)itemID
598  customData:(id GCK_NULLABLE_TYPE)customData;
599 
613 - (GCKRequest *)queueJumpToItemWithID:(NSUInteger)itemID
614  playPosition:(NSTimeInterval)playPosition
615  customData:(id GCK_NULLABLE_TYPE)customData;
616 
623 
630 
637 - (GCKRequest *)queueSetRepeatMode:(GCKMediaRepeatMode)repeatMode;
638 
645 - (GCKRequest *)setStreamVolume:(float)volume;
646 
656 - (GCKRequest *)setStreamVolume:(float)volume customData:(id GCK_NULLABLE_TYPE)customData;
657 
664 - (GCKRequest *)setStreamMuted:(BOOL)muted;
665 
675 - (GCKRequest *)setStreamMuted:(BOOL)muted customData:(id GCK_NULLABLE_TYPE)customData;
676 
683 
689 - (NSTimeInterval)approximateStreamPosition;
690 
691 @end // GCKRemoteMediaClient
692 
698 GCK_EXPORT
699 @protocol GCKRemoteMediaClientListener <NSObject>
700 
701 @optional
702 
709 - (void)remoteMediaClient:(GCKRemoteMediaClient *)client
710  didStartMediaSessionWithID:(NSInteger)sessionID;
711 
719 - (void)remoteMediaClient:(GCKRemoteMediaClient *)client
720  didUpdateMediaStatus:(GCKMediaStatus *GCK_NULLABLE_TYPE)mediaStatus;
721 
729 - (void)remoteMediaClient:(GCKRemoteMediaClient *)client
730  didUpdateMediaMetadata:(GCKMediaMetadata *GCK_NULLABLE_TYPE)mediaMetadata;
731 
737 - (void)remoteMediaClientDidUpdateQueue:(GCKRemoteMediaClient *)client;
738 
744 - (void)remoteMediaClientDidUpdatePreloadStatus:(GCKRemoteMediaClient *)client;
745 
754 - (void)remoteMediaClient:(GCKRemoteMediaClient *)client
755  didReceiveQueueItemIDs:(NSArray<NSNumber *> *)queueItemIDs;
756 
768 - (void)remoteMediaClient:(GCKRemoteMediaClient *)client
769  didInsertQueueItemsWithIDs:(NSArray<NSNumber *> *)queueItemIDs
770  beforeItemWithID:(GCKMediaQueueItemID)beforeItemID;
771 
780 - (void)remoteMediaClient:(GCKRemoteMediaClient *)client
781  didUpdateQueueItemsWithIDs:(NSArray<NSNumber *> *)queueItemIDs;
782 
791 - (void)remoteMediaClient:(GCKRemoteMediaClient *)client
792  didRemoveQueueItemsWithIDs:(NSArray<NSNumber *> *)queueItemIDs;
793 
802 - (void)remoteMediaClient:(GCKRemoteMediaClient *)client
803  didReceiveQueueItems:(NSArray<GCKMediaQueueItem *> *)queueItems;
804 
805 @end
806 
812 @protocol GCKRemoteMediaClientAdInfoParserDelegate <NSObject>
813 @optional
814 
822 - (BOOL)remoteMediaClient:(GCKRemoteMediaClient *)client
823  shouldSetPlayingAdInMediaStatus:(GCKMediaStatus *)mediaStatus;
824 
832 - (NSArray<GCKAdBreakInfo *> *GCK_NULLABLE_TYPE)remoteMediaClient:(GCKRemoteMediaClient *)client
833  shouldSetAdBreaksInMediaStatus:(GCKMediaStatus *)mediaStatus;
834 
835 @end // GCKRemoteMediaClientListener
836 
837 GCK_ASSUME_NONNULL_END
GCKRequest * requestStatus()
Requests updated media status information from the receiver.
GCKMediaStatus * mediaStatus
The current media status, as reported by the media control channel.
Definition: GCKRemoteMediaClient.h:35
An object for tracking an asynchronous request.
Definition: GCKRequest.h:35
GCKRequest * queueNextItem()
Moves to the next item in the queue.
GCKRequest * skipAd()
Sends a request to skip the playing ad.
GCKRequest * pause()
Pauses playback of the current media item.
A container for media metadata.
Definition: GCKMediaMetadata.h:369
Options for loading media with GCKRemoteMediaClient.
Definition: GCKMediaLoadOptions.h:22
Options for seeking within media with GCKRemoteMediaClient.
Definition: GCKMediaSeekOptions.h:16
A class representing a style for a text media track.
Definition: GCKMediaTextTrackStyle.h:92
NSTimeInterval approximateStreamPosition()
Returns the approximate stream position as calculated from the last received stream information and t...
GCKRequest * queueFetchItemIDs()
Requests the list of item IDs for the queue.
A class representing an ad break.
Definition: GCKAdBreakInfo.h:16
GCKRequest * stop()
Stops playback of the current media item.
A class representing a media queue item.
Definition: GCKMediaQueueItem.h:42
NSTimeInterval timeSinceLastMediaStatusUpdate
The amount of time that has passed since the last media status update was received.
Definition: GCKRemoteMediaClient.h:41
GCKRequest * play()
Begins (or resumes) playback of the current media item.
BOOL connected
A flag that indicates whether this object is connected to a session.
Definition: GCKRemoteMediaClient.h:32
A class that holds status information about some media.
Definition: GCKMediaStatus.h:129
Options for loading media queue items with GCKRemoteMediaClient.
Definition: GCKMediaQueueLoadOptions.h:16
GCKRequest * queuePreviousItem()
Moves to the previous item in the queue.
id< GCKRemoteMediaClientAdInfoParserDelegate > adInfoParserDelegate
A delegate capable of extracting ad break information from the custom data in a GCKMediaStatus object...
Definition: GCKRemoteMediaClient.h:64
A class for controlling media playback on a Cast receiver.
Definition: GCKRemoteMediaClient.h:29
A class that aggregates information about a media item.
Definition: GCKMediaInformation.h:40