API
Restore
이전에 구매한 비소모성 상품과 구독을 복원합니다. Apple 플랫폼 전용입니다.
시그니처
public static void Restore()동작 방식
- Unity IAP v5의
StoreController.RestoreTransactions(callback)을 호출합니다. - v5에서 이 메서드는 Apple 확장 프로바이더(
IAppleExtensions)에서StoreController로 이동했습니다. - Google Play는
InitializeAsync중FetchPurchases에서 소유한 상품이 자동 복원되므로 이 메서드를 호출할 필요가 없습니다. - 복원된 구매는
OnPurchasePending흐름을 통해GetPendingList()에 나타납니다. 일반 구매와 동일하게 처리하고Confirm을 호출하면 됩니다. - 성공/실패 결과는 Breeze IAP 로거를 통해 콘솔에 출력됩니다.
예시
// App Store 정책 — 비소모성 상품이 있는 앱은 복원 버튼을 반드시 노출해야 합니다.
public void OnRestoreClicked()
{
BreezeIAP.Restore();
}복원 후 결과 처리는 GetPendingList()에서 일반 미확정 구매와 동일하게 처리합니다. PurchaseResult.Type이 PurchaseType.Restore로 설정됩니다.
// 복원 버튼 클릭
public void OnRestoreClicked()
{
BreezeIAP.Restore();
}
// 복원 결과는 이후 씬 로드 등 다음 InitializeAsync 시점에 GetPendingList()로 처리
var pending = BreezeIAP.GetPendingList();
foreach (var item in pending)
{
if (item.Type == PurchaseType.Restore)
{
ApplyRestoredPurchase(item.Product.definition.id);
}
BreezeIAP.Confirm(item);
}App Store 정책
App Store 리뷰 가이드라인은 비소모성 인앱 상품을 판매하는 앱에 복원 구매 버튼을 반드시 표시하도록 요구합니다. 이 버튼을 노출하지 않으면 심사에서 리젝될 수 있습니다.