Skip to content

Instantly share code, notes, and snippets.

@onderozcan
Created February 8, 2015 22:31
Show Gist options
  • Save onderozcan/60f578f8f2a8c7659bbc to your computer and use it in GitHub Desktop.
Save onderozcan/60f578f8f2a8c7659bbc to your computer and use it in GitHub Desktop.
//
// midRoll.m
// VasPlayer
//
// Created by Önder ÖZCAN on 29/11/14.
// Copyright (c) 2014 Önder ÖZCAN. All rights reserved.
//
#import "midRoll.h"
#import "VastXMLParser.h"
#import "AFNetworking.h"
@interface midRoll ()
{
NSUserDefaults *standartUser;
BOOL strict;
int isActive;
NSMutableArray *multipleScenarios;
NSMutableArray *multipleScenariosArray;
}
@end
@implementation midRoll
- (void)viewDidLoad {
[super viewDidLoad];
isActive = 0;
// Do any additional setup after loading the view.
}
-(void)midRoll:(NSString *)sessionID
{
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
standartUser = [NSUserDefaults standardUserDefaults];
NSString *group = [standartUser objectForKey:@"midRollGroup"];
NSLog(@"Group Name = %@",group);
if(group != nil)
{
group = [standartUser objectForKey:@"midRollGroup"];
} else {
group = @"";
}
NSDictionary *parameters = @{@"session_id":sessionID,@"group":group};
[manager GET:@"http://serv.tooplay.com/midroll" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSArray *bannerArray =[responseObject objectForKey:@"banners"];
NSDictionary *advertisements;
//https://gist.github.com/onderozcan/165f822a606ea5321edc
multipleScenarios = [[NSMutableArray alloc] init];
multipleScenariosArray = [[NSMutableArray alloc] init];
if([bannerArray count] >0)
{
for(int x=0; x<bannerArray.count ; x++)
{
[multipleScenarios addObject:[bannerArray objectAtIndex:x]];
}
}
#pragma mark coklu midroll senaryosu.
for(int count=0; count<multipleScenarios.count ; count++)
{
//coklu gelirse buradan import edilecek
isActive = [[[bannerArray objectAtIndex:count] objectForKey:@"active"] intValue];
if(isActive != 0)
{
self.advertisementsURL = [[NSMutableArray alloc] init];
self.advertisementsType = [[NSMutableArray alloc] init];
advertisements = [bannerArray objectAtIndex:count];
self.adsType =[advertisements objectForKey:@"type"];
if(![[advertisements objectForKey:@"strict"] isEqual:[NSNull null]])
{
strict = [[advertisements objectForKey:@"strict"] boolValue];
//strict duzeltilecek .
} else {
strict = NO;
}
self.mediaShowTime = [advertisements objectForKey:@"time"];
//position size in same dictionary custom objects
if([advertisements objectForKey:@"custom_objects"] != nil)
{
self.customObject = [[NSMutableDictionary alloc] init];
self.customObjectsArray = [[NSMutableArray alloc] init];
NSDictionary *tempDict = [advertisements objectForKey:@"custom_objects"];
for(int x = 0 ; x < [tempDict count] ; x++)
{
[self.customObject setValue:[[tempDict valueForKey:@"position"] objectAtIndex:x] forKey:@"position"];
[self.customObject setValue:[[tempDict valueForKey:@"size"] objectAtIndex:x] forKey:@"size"];
[self.customObject setValue:[[tempDict valueForKey:@"source"] objectAtIndex:x] forKey:@"source"];
[self.customObject setValue:[[tempDict valueForKey:@"timeout"] objectAtIndex:x] forKey:@"timeout"];
[self.customObject setValue:[[tempDict valueForKey:@"time"] objectAtIndex:x] forKey:@"time"];
[self.customObjectsArray insertObject:[self.customObject copy] atIndex:x];
}
}
standartUser = [NSUserDefaults standardUserDefaults];
[standartUser setValue:[advertisements objectForKey:@"group"] forKey:@"midRollGroup"];
[standartUser synchronize];
if([[advertisements objectForKey:@"type"] isEqualToString:@"embeddedhtml"] || [[advertisements objectForKey:@"type"] isEqualToString:@"html"] || [[advertisements objectForKey:@"type"] isEqualToString:@"flv"] || [[advertisements objectForKey:@"type"] isEqualToString:@"embeddedhtml"] || [[advertisements objectForKey:@"type"] isEqualToString:@"vast_linear"] || [[advertisements objectForKey:@"type"] isEqualToString:@"custom_objects"])
{
[self.advertisementsURL addObject:[advertisements objectForKey:@"source"]];
[self.advertisementsType addObject:[advertisements objectForKey:@"type"]];
[self.groupIDs addObject:[advertisements objectForKey:@"group"]];
//[MidRollAdvertisementStartTime addObject:[advertisements objectForKey:@"start-time"]];
}
if([self.adsType isEqualToString:@"vast_linear"])
{
NSLog(@"Midroll Vast Linear Geldi");
self.xmlVastURL = [NSURL URLWithString:[advertisements objectForKey:@"vast_xml"]];
} else {
self.advertisementURL = [NSURL URLWithString:[advertisements objectForKey:@"source"]];
}
} else {
self.adsType = @"midRoll";
}
}
//Mutable array'e cevirilen obje notifyAsyncTask ile gonderilecek . bu ekilde islenecek .
[self notifyAsyncTask];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
self.adsType = @"midRoll";
isActive = 0 ;
[self notifyAsyncTask];
}];
}
-(NSString *)notifyAsyncTask
{
//NSNotificationCenter Gelecek
NSDictionary *nsObject;
NSString *postNotifierName = @"";
if([multipleScenarios count] > 1)
{
//coklu objeleri push edecegiz.
//multiple objects VasPlayer.m icinde extract olacak .
nsObject = @{@"rollType":@"midRoll",@"multipleObjects":multipleScenarios};
}
if(![self.adsType isEqualToString:@"vast_linear"])
{
if([self.customObjectsArray count] > 0)
{
nsObject = @{@"adsType":self.adsType,@"advertisementsURL":self.advertisementURL,@"rollType":@"midRoll",@"time":self.mediaShowTime,@"strict":[NSNumber numberWithBool:strict],@"strict":[NSNumber numberWithBool:strict],@"customObjects":self.customObjectsArray};
} else if(isActive == 0) {
nsObject = @{@"rollType":self.adsType,@"active":@"none"};
} else {
nsObject = @{@"adsType":self.adsType,@"advertisementsURL":self.advertisementURL,@"rollType":@"midRoll",@"time":self.mediaShowTime,@"strict":[NSNumber numberWithBool:strict],@"strict":[NSNumber numberWithBool:strict]};
}
postNotifierName = @"rollGetter";
[[NSNotificationCenter defaultCenter] postNotificationName:postNotifierName object:nil userInfo:nsObject];
} else {
//Vast geldiyse eğer VastXML'i çağırıyoruz .
VastXMLParser *vxp = [[VastXMLParser alloc] init];
nsObject = @{@"adsType":self.adsType,@"advertisementsURL":self.xmlVastURL,@"rollType":@"midRoll",@"time":self.mediaShowTime};
postNotifierName = @"xmlGetter";
[vxp VasXmlParse:nsObject];
}
return 0;
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment