fix(iap): 앱 재설치 시 구매 자동 복원 추가
- 초기화 시 로컬 구매 기록이 없으면 스토어에서 자동 복원 시도 - fire-and-forget 방식으로 초기화 블로킹 없음 - 이미 구매된 상태면 불필요한 스토어 호출 차단
This commit is contained in:
@@ -123,6 +123,12 @@ class IAPService {
|
|||||||
|
|
||||||
_isInitialized = true;
|
_isInitialized = true;
|
||||||
debugPrint('[IAPService] Initialized');
|
debugPrint('[IAPService] Initialized');
|
||||||
|
|
||||||
|
// 로컬에 구매 기록이 없으면 스토어에서 자동 복원 시도
|
||||||
|
// (앱 삭제 후 재설치 대응, 비동기로 실행하여 초기화 블로킹 없음)
|
||||||
|
if (!_adRemovalPurchased) {
|
||||||
|
_tryAutoRestore();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 상품 정보 로드
|
/// 상품 정보 로드
|
||||||
@@ -143,6 +149,17 @@ class IAPService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// 앱 시작 시 자동 구매 복원 (재설치 대응)
|
||||||
|
///
|
||||||
|
/// purchaseStream 구독 후 호출되므로, 복원된 구매는
|
||||||
|
/// _onPurchaseUpdate → _handleSuccessfulPurchase로 처리됨.
|
||||||
|
void _tryAutoRestore() {
|
||||||
|
debugPrint('[IAPService] Attempting auto-restore...');
|
||||||
|
_iap.restorePurchases().catchError((Object error) {
|
||||||
|
debugPrint('[IAPService] Auto-restore failed: $error');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/// 저장된 구매 상태 로드
|
/// 저장된 구매 상태 로드
|
||||||
Future<void> _loadPurchaseState() async {
|
Future<void> _loadPurchaseState() async {
|
||||||
final prefs = await SharedPreferences.getInstance();
|
final prefs = await SharedPreferences.getInstance();
|
||||||
|
|||||||
Reference in New Issue
Block a user