[unity] 구글플레이 인앱 업데이트 및 인앱 리뷰 연동 클래스
구글 플레이 API 중 Unity에서 사용하기 유용한 Play In-App Update와 Play In-App Review 클래스를 묶어 매니저 클래스를 만들어 보자.
1. Play In-App 사용 이유
- 구글에서 제공하는 Play In-App 라이브러리 중 Billing 이나 Play Asset Delivery 같은 api 도 있지만, 유니티에서 제공하는 인앱 결제 라이브러리나 addresable 같은 파워풀한 기능들이 있으니, 따로 추가할 필요는 없어 보인다.
- Unity에서 사용할만한 Play In-App 은 Update와 Review가 유용해보인다.
- Play In-App Update : 버전 코드가 올라간 앱이 플레이스토어에 출시되면, 앱에서 자동으로 사용자에게 앱 업데이트를 알려주고, 업데이트를 진행할 수 있게 한다. ( 기존 플레이스토어에 따로 접속하여 앱 업데이트하는 과정이 없어진다)
- Play In-App Review : 앱 사용 중에 팝업식으로 별점을 줄 수 있다. 다양한 씬 환경에서 호출이 가능하므로, 좋은 별점을 받기 위한 환경을 만들기 좋다.
2. Play In-App 적용 방법
- Play In-App Update와Play In-App Review 추가를 위해 구글 개발자 사이트에 들어가 보면, 항목별로 unity package 파일을 제공한다.
https://developers.google.com/unity/packages?hl=ko#play_in-app_update
- 각 기능 별 패키지가 다르니 잘 확인하고 다운로드하자!
- Play In-App Review는 기존에 별점을 주기 위해서는 다음과 같은 함수를 사용해서 앱에서 브라우저로 플레이스토어로 이동했었다.
Application.OpenURL("https://play.google.com/store/apps/details?id=패키지명");
- 하지만 인앱 리뷰를 사용하면, 앱 사용 중에 팝업식으로 별점을 줄 수 있어서 사용자에게 이질감 없이 리뷰를 할 수 있게 해 준다.
- 리뷰가 중요한 게 앱 순위 노출 등에 상당한 영향을 주기 때문에 플레이스토어 앱 오픈 시 해당 기능을 사용하면 상당히 유용해진다.
- 패키지를 설치한 다음에 아래와 같은 GooglePlayManager.cs 매니저 클래스를 하나 만들어 준다.
- 작성 코드는 아래와 같다.
using UnityEngine;
using Google.Play.Review;
using Cysharp.Threading.Tasks;
using Google.Play.Common;
using Google.Play.AppUpdate;
using System;
public class GooglePlayManager : MonoBehaviour
{
public static GooglePlayManager Instance { get; private set; }
ReviewManager _reviewManager = null;
AppUpdateManager appUpdateManager = null;
private const string REVIEW_URL = "https://play.google.com/store/apps/details?id=패키지명";
public void Awake()
{
Instance = this;
}
public void OnDestroy()
{
Instance = null;
}
/// <summary>
/// 인앱 리뷰 호출 함수.
/// </summary>
public void LaunchReview()
{
try
{
_reviewManager = new ReviewManager();
var playReviewInfoAsyncOperation = _reviewManager.RequestReviewFlow();
playReviewInfoAsyncOperation.Completed += playReviewInfoAsync =>
{
if (playReviewInfoAsync.Error == ReviewErrorCode.NoError)
{
var playReviewInfo = playReviewInfoAsync.GetResult();
if (playReviewInfo == null)
{
//null일 경우 브라우저로 리뷰페이지로 강제 이동.
OpenUrl();
}
else
{
//인앱리뷰 실행.
_reviewManager.LaunchReviewFlow(playReviewInfo);
}
}
else
{
OpenUrl();
}
};
}
catch(Exception e)
{
OpenUrl();
Debug.Log(e.Message);
}
}
/// <summary>
/// 인앱 업데이트 호출 함수.
/// </summary>
/// <returns></returns>
public async UniTask UpdateApp()
{
try
{
appUpdateManager = new AppUpdateManager();
PlayAsyncOperation<AppUpdateInfo, AppUpdateErrorCode> appUpdateInfoOperation = appUpdateManager.GetAppUpdateInfo();
await appUpdateInfoOperation;
if (appUpdateInfoOperation.IsSuccessful)
{
var appUpdateInfoResult = appUpdateInfoOperation.GetResult();
var appUpdateOptions = AppUpdateOptions.ImmediateAppUpdateOptions();
var startUpdateRequest = appUpdateManager.StartUpdate(appUpdateInfoResult, appUpdateOptions);
await startUpdateRequest;
}
else
{
Debug.Log(appUpdateInfoOperation.Error);
}
}
catch(Exception e){Debug.Log(e.Message);}
}
public void OpenUrl()
{
Application.OpenURL(REVIEW_URL);
}
}
3. Play In-App 호출 방법
- 인앱 리 뷰 호출 방법 코드는 아래와 같다.
GooglePlayManager.Instance?.LaunchReview();
- 인앱 리뷰는 앱이나 게임에서 사용자가 성취감을 얻었을 때 호출해주면 별점이 높게 나올 수 있다고 하니. 적용 시 이러한 부분도 잘 고려해야 하겠다.
- 인앱 업데이트 호출 방법 코드는 아래와 같다.
if(GooglePlayManager.Instance != null)
await GooglePlayManager.Instance.UpdateApp();
- 인앱 업데이트는 앱 시작하는 인트로 화면부에 적용해주는 게 좋다. async 함수에서 호출해줘야 한다.
댓글