수익화 | Unity

이제 Unity와 인모비 SDK의 통합이 간편해 졌습니다.

Android와 iOS 앱에서 Unity 플러그인을 통해 다음과 같은 인모비 광고 유형을 받을 수 있습니다.

  • 배너 광고
  • 전면(정적 전면 및 풀 스크린 비디오 광고)
  • 보상 비디오 광고

최신 버전의 Unity 플러그인을 실행하려면 다음이 필요합니다.

  • Unity 5 이상
  • iOS에서 배포할 경우 - XCode 9.0 이상, iOS 9 이상, InMobi iOS SDK 811 이상
  • Android에서 배포할 경우 - Android OS 버전 4.0.3 (API level 15) 이상, InMobi Android SDK 811 이상
SDK 버전

iOS - 8.1.1

Android - 8.1.1

크기

iOS - 661 KB (.IPA Inflation)

Android - 350 KB (.APK Inflation)

플러그인

앱에 플러그인 추가

  1. Unity 편집기에서 프로젝트를 엽니다.
  2. 자산 > 패키지 가져오기 > 사용자 정의 패키지를 선택한 후 다운로드한 InMobiAdsUnityPlugin.unitypackage 파일을 찾습니다.

  3. 모든 파일을 선택한 후 가져오기를 클릭합니다.

프로젝트 실행

  • iOS:
    • 파일 > 빌드 설정으로 이동하고, iOS 플랫폼을 선택한 후 빌드를 선택하여 Xcode 프로젝트와 해당 CocoaPods xcworkspace를 내보냅니다.
    • 내보낸 xcworkspace를 열고 Xcode에서 제품 > 실행으로 이동하여 프로젝트를 실행합니다.
  • Android:
    • 파일 > 빌드 설정으로 이동하고, Android 플랫폼을 선택한 후 빌드 및 실행을 선택합니다.

Unity 플러그인 API

인모비 광고 플러그인에서 공통 C# API를 사용하여 배너, 전면, 보상 비디오 광고를 요청할 수 있습니다. 코드를 한 번만 작성하여 Android와 iOS에 모두 배포할 수 있습니다.

인구통계 데이터 제공

인구통계 정보를 인모비 SDK로 전송할 수 있는 여러 개의 API가 InMobiPlugin 클래스에 있습니다.

그 중 일부는 다음과 같습니다.

//Set Age
public void SetAge(int age){
	inmobiPluginClient.SetAge (age);
}
//Set PostalCode
public void SetPostalCode(string postalCode){
	inmobiPluginClient.SetPostalCode (postalCode);
}
//Set Year of Birth
public void SetYearOfBirth(int yearOfBirth){
	inmobiPluginClient.SetYearOfBirth (yearOfBirth);
}
//Set Gender GENDER_MALE or GENDER_FEMALE
public void SetGender(string gender){
	inmobiPluginClient.SetGender (gender);
}
	

InMobi SDK 초기화

InMobiPlugin 클래스를 사용하여 인모비 SDK를 초기화할 수 있습니다. 인모비 SDK를 초기화하려면 계정 ID가 필요합니다.

인모비 SDK를 초기화하는 샘플 코드입니다.

private void initializeInMobiAds ()
	{
		//Account id used here is test account id
		InMobiPlugin inmobiPlugin = new InMobiPlugin ("4028cb8b2c3a0b45012c406824e800ba");
	}
	

참고: 인모비에 광고를 요청하기 전에 인모비 SDK를 초기화해야 합니다. 앱 자체를 시작할 때 하는 것이 좋습니다.

배너 광고 통합

다음은 배너 광고를 생성하고 로드하는 최소 코드입니다.

private void RequestBanner ()
	{
		// These placement Ids are configured to always serve test ads.
		#if UNITY_ANDROID
		string placementId = "1467162141987";
		#elif UNITY_IPHONE
		string placementId = "1464947431995";
		#endif
		// Create a 320x50 banner at the bottom of the screen.
		this.bannerAd = new BannerAd (placementId, 320, 50, (int)InMobiAdPosition.BottomCenter);
		// Register for ad events.
		this.bannerAd.OnAdLoadSucceeded += this.HandleOnAdLoadSucceeded;
		this.bannerAd.OnAdLoadFailed += this.HandleAdLoadFailed;
		this.bannerAd.OnAdDisplayed += this.HandleAdDisplayed;
		this.bannerAd.OnAdDismissed += this.HandleAdDismissed;
		this.bannerAd.OnAdInteraction += this.HandleAdInteraction;
		this.bannerAd.OnUserLeftApplication += this.HandleUserLeftApplication;
		// Load a banner ad.
		this.bannerAd.LoadAd ();
	}
	

InMobiAdPosition enum은 배너 위치를 지정합니다.

참고: iOS와 Android 플랫폼에는 고유한 배치 ID가 필요합니다. 나머지 API는 두 플랫폼 모두에서 동일합니다.

전면 광고 통합

전면과 풀 스크린 비디오 광고의 통합은 동일합니다. 다음은 전면 광고를 로드하는 최소 코드입니다.

		private void RequestInterstitial ()
	{
		// These placement Ids are configured to always serve test ads.
		#if UNITY_ANDROID
		string placementId = "1469137441636";
		#elif UNITY_IPHONE
		string placementId = "1467548435003";
		#endif
		// Create an interstitial.
		this.interstitialAd = new InterstitialAd (placementId);
		// Register for ad events.
		this.interstitialAd.OnAdLoadSucceeded += this.HandleOnAdLoadSucceeded;
		this.interstitialAd.OnAdLoadFailed += this.HandleAdLoadFailed;
		this.interstitialAd.OnAdDisplayed += this.HandleAdDisplayed;
		this.interstitialAd.OnAdDismissed += this.HandleAdDismissed;
		this.interstitialAd.OnAdInteraction += this.HandleAdInteraction;
		this.interstitialAd.OnUserLeftApplication += this.HandleUserLeftApplication;
		this.interstitialAd.OnAdReceived += this.HandleAdReceived;
		this.interstitialAd.OnAdDisplayFailed += this.HandleAdDisplayFailed;
		this.interstitialAd.OnAdWillDisplay += this.HandleAdWillDisplay;
		// Load an interstitial ad.
		this.interstitialAd.LoadAd ();
	}
	

전면 광고는 아래와 같이 명확하게 표시되어야 하며, 전면 광고가 준비되기 전이나 isReady ()를 호출하여 표시해서는 안 됩니다.

		if (this.interstitialAd.isReady ()) {
			this.interstitialAd.Show ();
		} else {
			MonoBehaviour.print ("Interstitial is not ready yet");
		}
	

전면 광고의 좋은 위치는 레별 끝 또는 세션 끝입니다.

보상 비디오 광고 통합

다음은 보상 비디오 광고를 로드하는 최소 코드입니다.

		private void RequestRewardBasedVideo ()
	{
		// These placement Ids are configured to always serve test ads.
		#if UNITY_ANDROID
		string placementId = "1453753057988";
		#elif UNITY_IPHONE
		string placementId = "1465883204802";
		#endif
		this.rewardedVideoAd = new RewardedVideoAd (placementId);
		// Register for ad events.
		this.rewardedVideoAd.OnAdLoadSucceeded += this.HandleOnAdLoadSucceeded;
		this.rewardedVideoAd.OnAdLoadFailed += this.HandleAdLoadFailed;
		this.rewardedVideoAd.OnAdDisplayed += this.HandleAdDisplayed;
		this.rewardedVideoAd.OnAdDismissed += this.HandleAdDismissed;
		this.rewardedVideoAd.OnAdInteraction += this.HandleAdInteraction;
		this.rewardedVideoAd.OnUserLeftApplication += this.HandleUserLeftApplication;
		this.rewardedVideoAd.OnAdReceived += this.HandleAdReceived;
		this.rewardedVideoAd.OnAdDisplayFailed += this.HandleAdDisplayFailed;
		this.rewardedVideoAd.OnAdWillDisplay += this.HandleAdWillDisplay;
		this.rewardedVideoAd.OnAdRewardActionCompleted += this.HandleRewardActionCompleted;
		this.rewardedVideoAd.LoadAd ();
	}
	

보상 비디오 광고는 전면 광고와 동일하게 작동하며 show ()를 호출하기 전에 준비되었는지를 확인해야 합니다.

		private void ShowRewardBasedVideo ()
	{
		if (this.rewardedVideoAd.isReady ()) {
			this.rewardedVideoAd.Show ();
		} else {
			MonoBehaviour.print ("Rewarded video ad is not ready yet");
		}
	}
	

이벤트 처리

다음 광고 이벤트를 배너, 전면, 보상 비디오 광고에 설정할 수 있습니다.

	#region callback handlers
			public void HandleOnAdLoadSucceeded (object sender, EventArgs args)
	{
		MonoBehaviour.print ("HandleOnAdLoadSucceded event received");
	}
			public void HandleAdLoadFailed (object sender, AdLoadFailedEventArgs args)
	{
		MonoBehaviour.print ("HandleAdLoadFailed event received with message: " + args.Error);
	}
			public void HandleAdDisplayed (object sender, EventArgs args)
	{
		MonoBehaviour.print ("HandleAdDisplayed event received");
	}
		public void HandleAdDismissed (object sender, EventArgs args)
	{
		MonoBehaviour.print ("HandleAdDismissed event received");
	}
		public void HandleAdInteraction (object sender, AdInteractionEventArgs args)
	{
		MonoBehaviour.print ("HandleAdDismissed event received " + args.Message);
	}
		public void HandleUserLeftApplication (object sender, EventArgs args)
	{
		MonoBehaviour.print ("HandleUserLeftApplication event received");
	}
	#endregion
	#region Interstitial specific callback handlers
	public void HandleAdReceived (object sender, EventArgs args)
	{
		MonoBehaviour.print ("HandleAdReceived event received");
	}
		public void HandleAdWillDisplay (object sender, EventArgs args)
	{
		MonoBehaviour.print (
			"HandleAdWillDisplay event received with message: ");
	}
		public void HandleAdDisplayFailed (object sender, EventArgs args)
	{
		MonoBehaviour.print ("HandleAdDisplayFailed event received");
	}
			#endregion
		#region RewardBasedVideo specific callback handlers
			public void HandleRewardActionCompleted (object sender, AdRewardActionCompletedEventArgs args)
	{
		MonoBehaviour.print (
			"HandleRewardActionCompleted event received for " + args.Rewards);
	}
		#endregion
	

참고: 보상 비디오 광고 전용 args.Rewards는 JSON 문자열 형식입니다.