Slike Player is a highly optimised video playback SDK that powers a world-class playback experience on
IOS. SDK is built from the ground up to deliver low start times and the best playback quality.
SDK supports playback of HLS(m3u8) streams, dash, mp4, mp3 and 3rd party content like Youtube, Veblr,
Dailymotion and other formats like GIF, Memes. It is a lightweight SDK with easy to customize and
extend.
Version:- 4.3.0
Release Date:- 27/09/2022
Features
- VOD, podcast and live-stream playbackGoogle Cast
- PIP(Picture In Picture)
- Thumbnail preview on seek-bar
- Secure streaming
- Gesture control for volume, brightness and media seek
- In-Player
- next video card with autoplay
- Geo-blocking(Location based media playback blocking)
- Central GA support
- In-house rich media analytics
- Playlist feature to play multiple media files
- Completely customizable UI
- Custom autoplay feature
- Monetization features(Google IMA)
- Low latency live event playback
- Supported media format: HLS, MP4, MP3, Memes & GIF
- YouTube, DailyMotion & FB video support
- Video quality bucket selection
- Completely customizable UI
- DVR support
- Advance media event callback
Compatibility
SDK supports Objective-C & Swift. SDK requires iOS 12+
Integration
CocoaPods
To integrate SDK into your Xcode project using CocoaPods, specify it in your Podfile:
pod 'SlikePlayer', :git => https://bitbucket.org/times_internet/slikeplayer-ios.git,
:tag => '4.3.0'
SDK Setup
Obtain a Api key from the Slike business team & configure the SlikePlayer SDK.
In appDelegateâs didFinishLaunchingWithOptions or any other place before playing the media
through the SlikeSDK.
Objective C
[[SlikePlayerSettings playerSettingsInstance] initPlayerWithApikey:"appKey" andWithDeviceUID:nil debugMode:"isDebug"])
Swift
SlikePlayerSettings.playerSettingsInstance()?.initPlayer(withApikey: "appKey", andWithDeviceUID: nil, debugMode: isDebug)
* AppKey-> The Slike key provided by the Slike CMS.
* Debug mode-> Development or live (The app should ensure release build should not go with debug mode as YES).
GDPR
Add following line for enable/disable gdpr. Make sure this should be called once.
[[SlikePlayerSettings playerSettingsInstance] setGDPAEnabled:NO|YES];
Create the Player
Inside appDelegates class
For proper media orientation, it is mandatory to implement this method.
**Objective C
-(UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
SlikeInterfaceOrientationMask orientationMask = [SlikeLandscapeRotationManager supportedInterfaceOrientationsForWindow:window];
if (orientationMask != SlikeInterfaceOrientationMaskUnknow) {
return (UIInterfaceOrientationMask)orientationMask;
}
return UIInterfaceOrientationMaskPortrait;
}
**Swift
func application(_ application: UIApplication,
supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
let orientationMask = SlikeLandscapeRotationManager.supportedInterfaceOrientations(for: window)
switch(orientationMask) {
case []:
return .portrait
default:
return UIInterfaceOrientationMask.init(rawValue: orientationMask.rawValue);
}
}`
import the header file
import <SlikePlayer.h>
Inside the class, add a declaration for the Player.
@property (strong, nonatomic) SlikePlayer *player;
@property (strong, nonatomic) SlikeConfig *config;
@property (weak, nonatomic) IBOutlet UIView *containerView;
Now lets create our video configuration. For more details refer
SlikeConfig.h
self.config = [[SlikeConfig alloc] initWithChannel:@"slike" withID:@"slikeId" withSection:@"default" withMSId:@"MSID" posterImage:@""]
"1x13srhggk" => Slike Id for Video. Will be unique for each video .
self.player = [SlikePlayer sharedSlikePlayer];
[_player playVideo: self.config inParentView:self.containerView withProgressHandler:^(SlikeEventType eventType, SlikePlayerState playerState, StatusInfo *statusInfo) { }];
containerView -> Instance of a UIView
BASIC SAMPLE
@interface SampleViewController ()
@property (weak, nonatomic) IBOutlet UIView *playerAreaView;
@property (strong, nonatomic) SlikeConfig *slikeConfig;
@property (strong, nonatomic) SlikePlayer *slikePlayer;
@end
@implementation SampleViewController
-(void)viewDidLoad {
[super viewDidLoad];
[self playVideo];
}
- (void)playVideo {
self.slikePlayer = [SlikePlayer sharedSlikePlayer];
self.slikeConfig = [[SlikeConfig alloc] initWithChannel:@"channel Name" withID:@"slikeId" withSection:@"Section" withMSId:@"MSID" posterImage:@"poster image url"];
_slikeConfig.ssoid = @"ssoid";
_slikeConfig.autorotationMode =
SlikeFullscreenAutorotationModeLandscape;
_slikeConfig.isAutoPlay = TRUE|FALSE
[_slikePlayer playVideo:_slikeConfig inParentView:self.playerAreaView withProgressHandler:^(SlikeEventType eventType, SlikePlayerState playerState, StatusInfo *statusInfo) {
dispatch_async(dispatch_get_main_queue(), ^{
//Event Call backs
if (eventType == AD) {
NSLog(@"ad position - %ld", statusInfo.position);
NSLog(@"ad duration - %ld", (long)statusInfo.duration);
NSLog(@"ad type - %ld", (long)statusInfo.adStatusInfo.adTypeEnum);
}
else if (eventType == CONTROLS) {
//playerState == SL_SHARE
//playerState == SL_CLOSE
}
else if (eventType == MEDIA ) {
NSLog(@"Video state - %ld", (long)playerState);
NSLog(@"Video Position - %ld", statusInfo.position);
NSLog(@"Video Duration - %ld", (long)statusInfo.duration);
}
});
}];
}
//InSwift
self.slikePlayer = SlikePlayer.shared()
self.slikeConfig = SlikeConfig(title: "SlikePlayer", withID:"slikeId", withSection: "default", withMSId: "MSId", posterImage: "")
self.slikeConfig?.ssoid = "ssoid"
self.slikeConfig?.autorotationMode = .autorotationModeLandscape
self.slikePlayer?.playVideo(self.slikeConfig, inParentView: self.playerView, withProgressHandler: { (eventType, playerState, statusInfo) in
if eventType == SlikeEventType.AD {
}
if eventType == SlikeEventType.MEDIA {
}
if eventType == SlikeEventType.CONTROLS {
}
})
SlikeConfig
Slike Configs define parameters for sdk and update their values in the cloud, allowing you to modify
the appearance and behaviour of your app without distributing an app update. For each parameter, you
can set a value (which will eventually override the corresponding in-app default value).
Basic Properties
NSString *mediaId;
Slike Id to play media (required)
BOOL isCromeCastEnable;
Enable|Disables Chromecast functionality. The default state is false.
NSString *posterImage;
A poster Image is used for an image placeholder before playing a media (optional).
BOOL isAutoPlay;
If the property is true, the media will start automatically.The default state is true.
SlikeFullscreenAutoRotationMode autorotationMode;
This property support autorotation of player. The default is set to Portrait.
NSInteger timecode
Media start time (In milliseconds). The default is set to 0.
SLVideoGravity playerGarvity;
Set the player Gravity (Check for possible value in SLVideoGravity enum). The default is set
to SLVideoGravityResizeAspect
NSString *title
Title of the media (optional).
BOOL resetPlayerInformation
Clear player's cached data. The default is set to false.
BOOL enableCoachMark
Show CoachMark for the first time over the video. The default value is set to false.
BOOL encrypted
Prevent Stream to External Playback | Recording | Mirroring.The default value is set to
false.
UIView* customControls
If you want to create your own custom control, Assign a UIView Instance. The default is set
to slike sdk controls.
BOOL disableOrientation
If you want to disable Orientation for the media. The default value is set to false.
BOOL enableAirPlay
Enable the Airplay. The default value is set to false.
NSString *fbAppId
To play the facebook video. The default is set to Nil.
NSString *imgBaseUrl
Base URL for downloading the images(optional).
NSString *shareText;
If property is empty, share action returns callback in to application. Otherwise, iOS default
share dialog will be shown (optional).
BOOL isAllowSlikePlaceHolder;
Set the Placeholder image for the Video(optional). By default this property is false. Client
have to set the placeholder Image. If the property is YES then the SDK will set the
placeholder image.
VideoSourceType preferredVideoType;
Preferred video type, By default is VIDEOSOURCEHLS.
NSArray *qualityName;
Title for bitrates. You can change the label name. You can change the names only, not the
count of the array. Default: @[@"Auto", @"Low", @"Medium", @"High"];
BOOL isGestureEnable;
Enable|Disable the Gestures(optional). The default value is set to false.;
BOOL isInitialPlayerMute;
Start the Video in mute state(optional). The default value is set to false.
##### BOOL isBackGrounPlayEnable;
Set flag YES, to background play support.
UI Properties
BOOL isFullscreenControl;
Fullscreen button State(optional). The default value is set to true.
BOOL isCloseControl;
If the property false, the close button will be visible only in fullscreen mode.The default
value is set to false.
BOOL isBitrateControl;
Bitrate button State.The default value is set to true.
BOOL isShareControl;
Share button State.The default value is set to false.
BOOL preview;
Media previews(Thumbnails), if available when sliding through the SeekBar. The default value
is set to false.
BOOL previewsDndStartTime;
Start time for downloading the Media thumbnails. default: When buffering time becomes 10
Seconds.
BOOL isMediaThumbnailsAvailable;
If Media Thumnails Avalibale for the Stream.
BOOL isControlDisable;
Disable controls.The default value is set to false.
BOOL isNoNetworkCloseControlEnable;
Network error alert Button State.The default value is set to true.
BOOL isNextControl;
Next button State will be visible. On Clicking, player emits SL_NEXT event. It will work with
playlist only .
BOOL isPreviousControl;
Previous button State will be visible. On Clicking, player emits SL_PREVIOUS event. It will
work with playlist only .
BOOL isAutoPlayNext;
Making this value TRUE will auto move to next Playlist item. It will work with playlist only
.
BOOL muteControlEnable;
Mute button State.The default value is set to false.
BOOL disableBitrateClose;
Bitrate button State.The default value is set to false.
NSString *nextVideoTitle;
Title of next video. It will work with playlist only .
NSString *nextVideoThumbnail;
Thumbnail URL of next video.
BOOL enableFastSeek;
Enable Seek forward and backward. The default value is set to false.
NSInteger fastSeekValue;
Seek forward and backward value. The default value is set to 15 Seconds.
UIColor *seekBarMinimumTrackTintColor;
Set custom color for minimum track of seek bar.
UIColor *seekBarMaximumTrackTintColor;
Set custom color for Maximum track of seek bar.
UIImage *seekBarPlayerNob;
Set custom nob Image.
NSString *errorMsg;
Error message for player
Ads Config Properties(Google IMA)
BOOL isSkipAds;
Enable | Disable the Ads (optional). The default value is set to false.
SlikeAdPriority isPrerollEnabled;
Enable | Disable the Pre-roll ad (optional)s.
SlikeAdPriority isPostrollEnabled;
Enable | Disable the Post-roll ads (optional).
SlikeAdPriority isMidrollEnabled;
Enable | Disable the Mid-roll ads (optional).
BOOL ispr;
if user is prime user (optional) .The default value is set to false.
NSArray *externalAdArray;
Set the ads from the parent App (optional). By default ads will be served by slike.
##### BOOL isInitialAdMute;
Start the ads in mute state(optional).The default value is set to false.
Ads SAMPLE
- (void)configureAds {
self.slikePlayer = [SlikePlayer sharedSlikePlayer];
self.slikeConfig = [[SlikeConfig alloc] initWithChannel:@"channel Name" withID:@"slike-Id" withSection:@"Section" withMSId:@"MSID" posterImage:@"poster image url"];
_slikeConfig.isSkipAds = NO;
_slikeConfig.section = @"default";
_slikeConfig.pageTemplate = @"";
_slikeConfig.isPrerollEnabled = YES | NO;
_slikeConfig.isPostrollEnabled = NO | YES;
//For prime users, no ads will be served
_slikeConfig.ispr = NO | YES;
_slikeConfig.isInitialAdMute = NO;
}
Analytics Config Properties
NSString *gaId;
Google analytics id (optional).
NSString *cs_publisherId;
ComScore publisherId (optional).
NSString *c3;
ComScore secret key (optional).
NSString *sg;
Colombia audiance parameters use for ad analytic(optional).
NSString *gca;
Geo country allowed name (optional).
NSString *gcb;
Geo country blocked name (optional)
NSString *appVersion;
Parent app version for analytic (optional)
NSString *description_url;
Ad analytic custom parametrs (optional)
NSString *packageName;
App packageName, Provided by setting API key, No need to fill.
NSString *strLatLong;
latitude and longitude which is concatenated by ',' (optional).
NSString *country;
Country name(optional).
NSString *state;
State name(optional).
NSString *city;
City name(optional).
NSString *gender;
Gender(optional).
NSString *age;
Age(optional).
NSString *ssoid;
SSO login id (optional).