728x90
๋ฐ์ํ
์ธ์ฑ๋ฆฌ๋ทฐ(In-App Review) ๋?

์ธ์ฑ ๋ฆฌ๋ทฐ๋ ์ฌ์ฉ์๊ฐ ์ฑ ๋ด์์ ์ง์ ์ฑ์ ๋ํ ํ๊ฐ๋ ๋ฆฌ๋ทฐ๋ฅผ ์์ฑํ ์ ์๋ ๊ธฐ๋ฅ์ ๋๋ค.
Android์์๋ Google Play In-App Review API๋ฅผ ์ฌ์ฉํ์ฌ ์ด ๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์์ต๋๋ค.
์ธ์ฑ ๋ฆฌ๋ทฐ ๊ฐ๋ฐ ์ฝ๋
1. Google Play ์๋น์ค API ์ถ๊ฐ
build.gradle
ํ์ผ์ ๋ค์ ์ข
์์ฑ์ ์ถ๊ฐํฉ๋๋ค.
// ์ด ์ข
์์ฑ์ Google์ Maven ๋ฆฌํฌ์งํ ๋ฆฌ์์ ๋ค์ด๋ก๋ํฉ๋๋ค.
// ๋ฐ๋ผ์ ํ๋ก์ ํธ์ build.gradle ํ์ผ์ ํด๋น ์ ์ฅ์๋ ํฌํจํด์ผ ํฉ๋๋ค.
implementation 'com.google.android.play:review:2.0.1'
// Kotlin ์ฌ์ฉ์์ ๊ฒฝ์ฐ Play In-App Review๋ฅผ ์ํ Kotlin ํ์ฅ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ถ๊ฐํฉ๋๋ค:
implementation 'com.google.android.play:review-ktx:2.0.1'
2-1. In-App Review ์ด๊ธฐํ ๋ฐ ํธ์ถ (Kotlin ver.)
import android.os.Bundle
import android.widget.Button
import androidx.appcompat.app.AppCompatActivity
import com.google.android.play.core.review.ReviewManagerFactory
import com.google.android.play.core.tasks.Task
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// ๋ฆฌ๋ทฐ ์คํํ ๋ฒํผ
val reviewButton: Button = findViewById(R.id.reviewButton)
reviewButton.setOnClickListener {
// ๋ฆฌ๋ทฐ ํธ์ถ ํจ์
requestInAppReview()
}
}
private fun requestInAppReview() {
val reviewManager = ReviewManagerFactory.create(this)
val request = reviewManager.requestReviewFlow()
request.addOnCompleteListener { task ->
if (task.isSuccessful) {
// ๋ฆฌ๋ทฐ ์ ๋ณด๋ฅผ ์ป์
val reviewInfo = task.result
// ๋ฆฌ๋ทฐ ๋ค์ด์ผ๋ก๊ทธ ํ์
val flow = reviewManager.launchReviewFlow(this, reviewInfo)
flow.addOnCompleteListener { reviewFlowTask ->
// ๋ฆฌ๋ทฐ๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์ ์ถ๋์๊ฑฐ๋ ์คํจํ ํ ์คํํ ์ฝ๋
}
} else {
// ์ฌ์ฉ์๊ฐ ์ด๋ฏธ ๋ฆฌ๋ทฐ๋ฅผ ์์ฑํ๊ฑฐ๋ ๋ฆฌ๋ทฐ๋ฅผ ์์ฒญํ ์ ์๋ ๊ฒฝ์ฐ
}
}
}
}
2-2. In-App Review ์ด๊ธฐํ ๋ฐ ํธ์ถ (Java ver.)
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.play.core.review.ReviewInfo;
import com.google.android.play.core.review.ReviewManager;
import com.google.android.play.core.review.ReviewManagerFactory;
import com.google.android.play.core.tasks.Task;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// ๋ฆฌ๋ทฐ ์คํํ ๋ฒํผ
Button reviewButton = findViewById(R.id.reviewButton);
reviewButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//๋ฆฌ๋ทฐ ํจ์ ํธ์ถ
requestInAppReview();
}
});
}
private void requestInAppReview() {
ReviewManager reviewManager = ReviewManagerFactory.create(this);
Task<ReviewInfo> request = reviewManager.requestReviewFlow();
request.addOnCompleteListener(task -> {
if (task.isSuccessful()) {
// ๋ฆฌ๋ทฐ ์ ๋ณด๋ฅผ ์ป์
ReviewInfo reviewInfo = task.getResult();
// ๋ฆฌ๋ทฐ ๋ค์ด์ผ๋ก๊ทธ ํ์
Task<Void> flow = reviewManager.launchReviewFlow(MainActivity.this, reviewInfo);
flow.addOnCompleteListener(reviewFlowTask -> {
// ๋ฆฌ๋ทฐ๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์ ์ถ๋์๊ฑฐ๋ ์คํจํ ํ ์คํํ ์ฝ๋
});
} else {
// ์ฌ์ฉ์๊ฐ ์ด๋ฏธ ๋ฆฌ๋ทฐ๋ฅผ ์์ฑํ๊ฑฐ๋ ๋ฆฌ๋ทฐ๋ฅผ ์์ฒญํ ์ ์๋ ๊ฒฝ์ฐ
}
});
}
}
728x90
๋ฐ์ํ