iOS: Greystripe SDK w/ Monkey

Monkey Forums/Monkey Code/iOS: Greystripe SDK w/ Monkey

DGuy(Posted 2011) [#1]
Native iOS Code:
NOTE: While the Greystripe SDK can serve banner ads, this code is for fullscreen ads only
NOTE: There is no harm calling '*_Init' during resumes and/or "*_UnInit" during suspends
/*
** Greystripe.cpp
*/
#import "GSAdView.h"
#import "GSAdEngine.h"
#import "GreystripeDelegate.h"

@class _GreystripeDelegate;

#define _GREYSTRIPE_SLOT_NAME		@"adSlot"

static bool			_greystripe_adEngineReady;
static bool			_greystripe_isFullscreen;
static _GreystripeDelegate*	_greystripe_adDelegate;

@interface _GreystripeDelegate: UIViewController <GreystripeDelegate> {}
@end

@implementation _GreystripeDelegate
- (void)greystripeAdReadyForSlotNamed:(NSString *)a_name
	{
	printf( "%s: %s\n", __func__, [a_name cStringUsingEncoding:NSASCIIStringEncoding] );
	}

- (void)greystripeFullScreenDisplayWillOpen
	{
	printf( "%s\n", __func__ );
	_greystripe_isFullscreen = true;
	}

- (void)greystripeFullScreenDisplayWillClose
	{
	printf( "%s\n", __func__ );
	_greystripe_isFullscreen = false;
	}
@end


void Greystripe_Init( String AppID )
	{
	printf( "%s\n", __func__ );
	if( !(([[[UIDevice currentDevice] systemVersion] floatValue] >= 3.2f) &&
		 ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad)) )
		{
		if( !_greystripe_adDelegate )
			{
			_greystripe_adDelegate = [[_GreystripeDelegate alloc] init];
			if( !_greystripe_adEngineReady )
				{
				_greystripe_adEngineReady = true;
				GSAdSlotDescription* slot =
					[GSAdSlotDescription descriptionWithSize:kGSAdSizeIPhoneFullScreen name:_GREYSTRIPE_SLOT_NAME];
				[GSAdEngine startupWithAppID:AppID.ToNSString() adSlotDescriptions:[NSArray arrayWithObjects:slot, nil]];
				[GSAdEngine setFullScreenDelegate:_greystripe_adDelegate forSlotNamed:_GREYSTRIPE_SLOT_NAME];
				}
			}
		}
	}
	
void Greystripe_UnInit()
	{
	printf( "%s\n", __func__ );
	if( _greystripe_adDelegate )
		{
		[_greystripe_adDelegate release];
		_greystripe_adDelegate = nil;	
		}
	}
	
bool Greystripe_RequestAd()
	{
	printf( "%s -> ", __func__ );
	if( _greystripe_adDelegate )
		{
		if( [GSAdEngine isAdReadyForSlotNamed:_GREYSTRIPE_SLOT_NAME] )
			{
			[GSAdEngine displayFullScreenAdForSlotNamed:_GREYSTRIPE_SLOT_NAME];
			printf( "Ok.\n" );
			return true;
			}
		}
	printf( "Not Available.\n" );
	return false;
	}

bool Greystripe_IsFullscreen() { return _greystripe_isFullscreen; }


Monkey Interface:
'greystripe.monkey
Private
Import "greystripe.cpp"

Extern
Function Greystripe_Init:Void( AppID$ )
Function Greystripe_UnInit:Void()
Function Greystripe_RequestAd?()
Function Greystripe_IsFullscreen?()


Usage:
'main.monkey
Import greystripe

Function Main()
	Greystripe_Init( "app-id-here" )
	Greystripe_RequestAd  '<-- will very likely return false (no-ad-ready) because the SDK has not had time to buffer ad
End


Enjoy!