앱을 개발해도 유저로부터 앱리뷰(별점)를 받는 일은 쉽지 않다.
실제로 첫 앱인 은퇴계산기의 경우, 300명 이상 다운 받았지만 리뷰는 한 명도 달지 않았다는 점..
유저입장에서 봐도 굳이 플레이스토어에 다시 들어가서 해당앱에 리뷰를 달아야 할 유인은 없다.
반면 보통 사람들은 앱을 다운받을 때 평점을 참고하는 경우가 많다.
비슷한 앱이라면 다운로드 수가 많고 평점이 높은 앱을 받고 싶기 때문이다.
그래서 이번 개발하는 게임에는 다른 앱에 많이 등장하는 리뷰요청 팝업을 구현해보기로 했다.
일단은 난 배경지식이 없으니 GPT에게 물어보자.

구글 API를 사용한다는 소리같은데, 조금 검색해보니, 최신버전이 있어 GPT에 다시 역으로 알려줬다.
https://github.com/google/play-in-app-reviews-unity/tree/v1.8.4

GPT가 실제 예시 코드도 보여준다.
#if UNITY_ANDROID
using Google.Play.Review;
using UnityEngine;
public class InAppReviewController : MonoBehaviour
{
// 리뷰 요청을 실행하는 메서드
public void RequestReview()
{
// 인앱 리뷰 플로우 요청
ReviewManager.RequestReviewFlow().Then((result) =>
{
if (result.Error != ReviewErrorCode.NoError)
{
Debug.Log("인앱 리뷰 요청 실패: " + result.Error);
return;
}
// 요청이 성공하면 리뷰 플로우 실행
ReviewManager.LaunchReviewFlow(result.Result).Then((launchResult) =>
{
if (launchResult.Error != ReviewErrorCode.NoError)
{
Debug.Log("리뷰 플로우 실행 실패: " + launchResult.Error);
}
else
{
Debug.Log("인앱 리뷰 플로우가 성공적으로 실행되었습니다.");
}
});
});
}
}
#endif
하지만 중요한건 언제 팝업을 띄우는 지인데, 레벨이 어느 정도 올랐을 때 리뷰를 받고 싶어 아래와 같이 요청했다.

그 후에는 최신버전에 맞지 않는 문법으로 인한 에러를 계속 GPT를 다그치며 고치도록 했다.
결국 실제 적용하는데 성공!
최종 구조는 리뷰콘트롤러를 유니티에 empty 오브젝트로 하나 만들어 놓고
원하는 씬의 원하는 조건이 달성되면 리뷰 요청을 실행하는 방식이다.
리뷰를 달았을 때 보상도 제공하면 좋겠지만, 일단은 여기까지 진행한 것으로 오늘은 만족!
<최종>
리뷰콘트롤러
#if UNITY_ANDROID
using UnityEngine;
using Google.Play.Review;
using System;
public class InAppReviewController : MonoBehaviour
{
private ReviewManager reviewManager;
private void Awake()
{
reviewManager = new ReviewManager();
}
public void RequestReview()
{
// 리뷰 플로우 요청
var requestOperation = reviewManager.RequestReviewFlow();
requestOperation.Completed += operation =>
{
if (operation.Error != ReviewErrorCode.NoError)
{
Debug.Log("인앱 리뷰 요청 실패: " + operation.Error);
return;
}
// 결과를 가져올 때 GetResult() 메서드를 사용
var reviewInfo = operation.GetResult();
var launchOperation = reviewManager.LaunchReviewFlow(reviewInfo);
launchOperation.Completed += launchOp =>
{
if (launchOp.Error != ReviewErrorCode.NoError)
{
Debug.Log("리뷰 플로우 실행 실패: " + launchOp.Error);
}
else
{
Debug.Log("인앱 리뷰 플로우가 성공적으로 실행되었습니다.");
}
};
};
}
}
#endif
<리뷰요청코드> - 게임오버 화면 레벨 5 이상 시 불러오도록하고, 한 번 불러온 후에는 다시 불러오지 않도록 PlayerPref에 기록
if (profile.level >= 5 && !PlayerPrefs.HasKey("ReviewRequested"))
{
InAppReviewController reviewController = FindFirstObjectByType<InAppReviewController>();
if (reviewController != null)
{
reviewController.RequestReview();
PlayerPrefs.SetInt("ReviewRequested", 1);
}
}
'DOT Defense' 카테고리의 다른 글
| 앱출시 후에도 (사전체험판)이 계속 떠있는 문제 (0) | 2025.04.25 |
|---|---|
| AI(Chat GPT)로 게임 코딩 시 기억해야 할 팁 (0) | 2025.04.23 |
| GPGS 랭킹 리더보드 여러개 만들기 (0) | 2025.04.19 |
| GPGS 업적 시스템 만들기 (0) | 2025.04.06 |
| 3. Unity 구글 플레이 리더보드 안열리는 문제 (1) | 2025.04.05 |