-Today's Learning Content-

  • StoreKit

1. StoreKit

내용 정리

애플은 인앱 리뷰 요청에 대해 엄격한 정책을 적용하고 있다. 정책을 준수하지 않으면 앱 리뷰에서 거부당할 수도 있다는데... 이에 대한 자세한 내용을 공부해보자.

1) StoreKit이란?

StoreKit은 애플이 제공하는 프레임워크로, 앱 내에서 구매 관련 기능을 구현할 수 있도록 도와준다.

StoreKit의 주요 기능은 아래와 같다.

주요 기능

  1. 인앱 구매(In-App Purchase)
  • 사용자가 앱 내에서 디지털 콘텐츠(예: 추가 기능, 구독, 가상 아이템)를 구매할 수 있도록 지원
  • 예:
    • 광고 제거
    • 추가 레벨, 캐릭터, 콘텐츠
    • 월간/연간 구독 상품
  1. 구독 관리
  • 자동 갱신 구독(Auto-Renewable Subscription)과 같은 지속적인 서비스를 관리
  • 사용자의 구독 상태를 확인하거나 갱신 여부를 처리 가능
  1. 리뷰 및 평가 요청
  • SKStoreReviewController를 통해 앱 내에서 사용자 리뷰와 평가 요청 팝업을 표시
  1. App Store 연결
  • SKStoreProductViewController를 통해 앱에서 직접 App Store 페이지를 열지 않고도 다른 앱이나 제품 페이지를 표시 가능
  1. 앱 매출 분석
  • 구매 이벤트를 분석하여 어떤 제품이 잘 팔리는지 또는 구독이 어떻게 작동하는지 확인 가능

2) 인앱리뷰(StoreKit)의 정책

애플에서는 사용자의 경험을 보호하고 정확하고 진정성 있는 리뷰를 확보하기 위해 인앱리뷰에 대한 다양한 정책을 시행하고 있다.
또, 공정한 앱 생태계를 유지하고, 애플의 플랫폼 신뢰성을 유지하기 위한 정책도 마련되어 있다.

아래는 애플이 정해놓은 정책들이다.

1. 사용자 경험 보호

리뷰 요청은 사용자가 자연스럽게 앱을 사용하는 과정에서 이루어져야 한다.

앱은 사용자에게 리뷰를 강요하거나 방해하지 않아야 한다. 또, 리뷰 요청 팝업은 사용자 경험을 해치지 않는 자연스러운 시점에서 나타나야 한다.

사용자가 리뷰 요청을 수락하거나 거부하더라도 동일한 사용자에게 반복적으로 요청할 수 없다.

애플의 API는 동일한 사용자에게 리뷰 요청 팝업을 지나치게 자주 표시하는 것을 방지한다.

2. 제한된 요청 횟수

한 앱은 연간 최대 3회까지만 인앱 리뷰 팝업을 표시할 수 있다.

이는 SKStoreReviewControllerrequestReview() 메소드를 사용했을 때 자동으로 관리된다.
개발자가 인앱리뷰 노출 횟수를 수십 수백 수천번으로 설정하더라도, 애플이 자체적으로 관리를 하기 때문에 인앱리뷰는 연간 최대 3회만 표시된다.

3. UI와 상호작용의 일관성

인앱리뷰 팝업의 UI는 사용자 정의가 불가능하다

애플이 제공하는 인앱리뷰 팝업은 변경하거나 커스터마이징할 수 없다. 이는 사용자에게 일관된 경험을 제공하고, 리뷰 요청에 대한 오용을 방지하기 위한 정책이다.

4. 강제 리뷰 요청 금지

사용자를 특정 작업으로 유도하여 리뷰를 강제로 요구하는 행위 금지

예를 들어, "리뷰를 남기지 않으면 기능을 사용할 수 없습니다"와 같은 강압적인 방식은 금지된다. 또, 앱의 주요 기능을 리뷰 요청과 연계하는 것은 금지되어 있다.

3) 인앱리뷰 사용 방법

앱에서 인앱리뷰를 사용하고 싶다면 아래 코드를 이용하면 된다.

import StoreKit

func requestReview() {
    if let scene = UIApplication.shared.connectedScenes.first as? UIWindowScene {
        SKStoreReviewController.requestReview(in: scene)
    }
}

위의 코드는 앱에서 인앱리뷰를 사용하는 기본적인 예제이다. 여기서 requestReview() 메소드를 호출하면 애플이 자동으로 팝업을 관리하며, 팝업이 반드시 표시되는 것은 아니다. 팝업의 표시 여부는 애플이 결정한다.

그렇다면 인앱리뷰는 언제 보여주는 것이 자연스러울까?

그것은 사용자가 앱의 가치를 느낄 수 있는 시점이 되는 것이 가장 자연스러울 것이다.
예를 들면 게임에서 새로운 도전과제를 달성했을 때, 전자상거래 앱에서 성공적으로 결제를 완료했을 때, 생산성 앱에서 목표를 달성했을 때 등이 있다.

또, 사용자는 리뷰를 거절할 수도 있다는 것을 염두해두어야 한다. 인앱리뷰를 통해 팝업을 표시하더라도 사용자가 이를 무시할 수도 있기 때문에, 이를 대비하여 앱 내에서 "리뷰 남기기"버튼을 제공하는 것도 좋은 방법이다.

"리뷰 남기기" 버튼을 통해 앱스토어로 화면을 전환시키고 싶다면 아래 코드를 사용할 수 있다.

// 
func openAppStoreReviewPage() {
    if let url = URL(string: "https://apps.apple.com/app/id[APP_ID]?action=write-review"),
       UIApplication.shared.canOpenURL(url) {
        UIApplication.shared.open(url, options: [:], completionHandler: nil)
    }
}

4) 인앱리뷰 사용 팁

  1. 테스트 환경에서 입앱 리뷰 팝업 확인
    실제 앱에서는 애플이 리뷰 요청을 제한하기 때문에 테스트가 어려울 수 있다. 이 때, Xcode의 sandbox 환경이나 TestFlight를 통해 테스트를 진행해볼 수 있다.

  2. 유저 만족도 조사와 연결
    인앱리뷰 요청 전에 유저 만족도 조사(NPS)를 통해 긍정적 피드백을 받은 사용자에게만 요청할 수 있다.
    예를 들어 "앱이 만족스러우신가요?"라는 팝업을 보여준 후 사용자가 긍정적인 피드백을 남기면 "리뷰를 남겨주시면 감사하겠습니다" 등의 팝업을 보여주는 방법을 채용할 수 있다.

  3. 리뷰 요청 이벤트 로그 기록
    리뷰 요청이 발생한 횟수를 서버나 분석 도구에 기록하여 관리하면 사용자가 어떨 때 피드백을 줬는지, 어떨 때 안 줬는지 등을 확인하고 관리할 수 있기 때문에 좋다

5) 결론

인앱리뷰 요청은 사용자 경험을 해치지 않고 자연스럽게 구현되어야 한다. 애플은 이를 정책으로 정하여 개발자가 사용자에게 부정적인 경험을 주지 않도록 돕고, 사용자 입장에서도 앱을 사용하며 불편함이 없도록 하고 있다.

애플의 정책을 준수하면서 적절한 시점에 리뷰 요청을 표시하면 긍정적인 리뷰를 확보할 가능성이 높아진다.

-Today's Lesson Review-

앱스토어 배포를 고려해본 적이 없기 때문에 인앱리뷰 등에 대해 잘 알지 못했는데, 오늘 공부를 통해 자세히 알 수 있었던 것 같다.
profile
이유있는 코드를 쓰자!!

0개의 댓글