cocos2d-x 프로젝트에 UnityAds 도입 (iOS 편)
게임에 특화된 동영상 광고로 매우 매력적입니다.
그래서 cocos2d-x 게임에 도입해 보았습니다.
UnityAds에 통합 가이드가 있지만 cocos2d-x 용이 아니라
아래와 같이 해도 동작하지 않았으므로 통합 가이드의 보충 메모입니다.
※UnityAds에서의 계정, 게임 등록은 이미 실시하고 있는 전제입니다
h tp : // 성게 ds. jp / help / 도쿠 멘 타치 온 푸 루 푸 b ぃしぇ rs / 엔테 g 라치 온 굿
1. 다운로드
h tp : // 성게 ds. jp / help / 도쿠 멘 타치 온 푸 루 푸 b ぃ し rs / 드 w ぉ 아 ds
가이드와 같이 gitHub에서 설치합니다.
2. framework, bundle의 도입
UnityAds.bundle은 항상 프로젝트에 추가합니다.
(Resources로 bundle이 없으면 런타임 오류가 발생합니다)
Linked framework and Libraries에 다음을 설정합니다.
통합 가이드와 달리 iOS7 이상에서도 AdSupport는 필수인 것 같습니다.
또한 SystemConfiguration, CoreTelephony, CoreMedia도 필수와 같으므로 추가했습니다.
StoreKit도 필수이지만 cocos 표준 프로젝트에 추가되어 있으므로 설명을 생략합니다
3. 코드 수정
통합 가이드에서는 AppDelegate를 수정하고 있지만 cocos에서는 AppController를 수정합니다.
(왜 왜 여기에 광고를 표시하기 전에 UnityAds에 UIViewController를 전달해야합니다..)
AppController.h는 import 추가 및 UnityAdsDelegate 추가
AppController.h
#import <UIKit/UIKit.h>
//UnityAds
#import <UnityAds/UnityAds.h>
@class RootViewController;
@interface AppController : NSObject <UIApplicationDelegate, UnityAdsDelegate> {
UIWindow *window;
}
@property(nonatomic, readonly) RootViewController* viewController;
@end
AppController.mm에서는 다음을 수행합니다. cocos2d-x 3.5의 소스입니다.
- _viewController 설정 후 startWithGameId 호출
- unityAdsVideoCompleted 추가
AppController.mm
:
// Use RootViewController manage CCEAGLView
_viewController = [[RootViewController alloc] initWithNibName:nil bundle:nil];
_viewController.wantsFullScreenLayout = YES;
_viewController.view = eaglView;
//Unity Ads
// [[UnityAds sharedInstance] setTestMode:YES];
// [[UnityAds sharedInstance] setDebugMode:YES];
[[UnityAds sharedInstance] startWithGameId:@"[GameID]" andViewController:_viewController];
[[UnityAds sharedInstance] setDelegate:self];
:
}
//Unity Ads
- (void)unityAdsVideoCompleted:(NSString *)rewardItemKey skipped:(BOOL)skipped
{
//callback
}
4. Bridge 만들기
bridge를 만들고 동영상 광고를 게재하고 싶을 때 부르면 최소한의 도입 완료입니다.
통합 가이드는 canShowAds의 판별이지만
영어판 문서에서는 canShow와 canShowAds를 판별했으므로 그쪽에 맞추었습니다.
UnityAdsBridge.h
#pragma once
class UnityAdsBridge
{
public:
static void show();
static void hide();
};
UnityAdsBridge.mm
#include "UnityAdsBridge.h"
#import <UnityAds/UnityAds.h>
void UnityAdsBridge::show()
{
if ([[UnityAds sharedInstance] canShow] && [[UnityAds sharedInstance] canShowAds]) {
[[UnityAds sharedInstance] show];
} else {
//cannot show
}
}
void UnityAdsBridge::hide()
{
[[UnityAds sharedInstance] hide];
}
기타
Reference
이 문제에 관하여(cocos2d-x 프로젝트에 UnityAds 도입 (iOS 편)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/keidroid/items/32a87f99ec19d747bd5a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)