반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- vsCode
- MAC
- TensorFlow
- IOS
- 오블완
- webpack
- node
- react
- 센토스
- build
- VirtualBox
- 맥
- xcode
- PYTHON
- androidstudio
- centos
- Android
- MachineLearning
- 개발
- qunit
- localserver
- Chrome
- ReactNative
- unittest
- linux
- 티스토리챌린지
- 리눅스
- jest
- 네트워크
Archives
- Today
- Total
로메오의 블로그
Flutter in app 결제 구현 본문
반응형
iOS 상품 생성
https://appstoreconnect.apple.com/apps
앱을 선택합니다.
신규 앱을 생성합니다.
앱을 생성합니다.
국가를 선택합니다.
가격을 설정합니다.
현지화를 추가합니다.
iOS Sandbox 계정생성
iOS in app purchase 상품 불러오기
$ flutter pub add in_app_purchase
import 'package:flutter/material.dart';
import 'package:in_app_purchase/in_app_purchase.dart';
class ProductListScreen extends StatefulWidget {
@override
_ProductListScreenState createState() => _ProductListScreenState();
}
class _ProductListScreenState extends State<ProductListScreen> {
final InAppPurchase _inAppPurchase = InAppPurchase.instance;
bool _available = true;
List<ProductDetails> _products = [];
// 상품 ID 목록
final Set<String> _productIds = {'product_id_1', 'product_id_2', 'product_id_3'};
@override
void initState() {
super.initState();
_initialize();
}
Future<void> _initialize() async {
// 인앱 구매가 가능한지 확인
final bool isAvailable = await _inAppPurchase.isAvailable();
setState(() {
_available = isAvailable;
});
if (isAvailable) {
await _loadProducts();
}
}
Future<void> _loadProducts() async {
// 상품 정보를 요청
final ProductDetailsResponse response = await _inAppPurchase.queryProductDetails(_productIds);
// 요청한 상품 중 없는 상품이 있으면 처리
if (response.notFoundIDs.isNotEmpty) {
print("다음 상품 ID를 찾을 수 없습니다: ${response.notFoundIDs}");
return;
}
// 요청 성공 시 상품 정보 저장
setState(() {
_products = response.productDetails;
});
}
@override
void dispose() {
_inAppPurchase.purchaseStream.drain();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Available Products'),
),
body: _available
? _products.isNotEmpty
? ListView.builder(
itemCount: _products.length,
itemBuilder: (context, index) {
final product = _products[index];
return ListTile(
title: Text(product.title),
subtitle: Text(product.description),
trailing: Text(product.price),
);
},
)
: Center(child: Text('상품을 불러오는 중...'))
: Center(child: Text('인앱 구매를 사용할 수 없습니다.')),
);
}
}
이 상태로 실행해보면 인앱 상품을 읽어오지 못합니다.
인앱 상품을 불러오기 위해서는 인앱 상품을 심사 통과해야 합니다.
그러기 위해서 이미지와 스크린샷을 찍고, 앱을 제출해야 합니다.
인앱 상품을 불러오지 못하는데, 어떻게 스크린샷을 찍냐?
그냥 상품은 하드코딩해서 표시만 해서 스크린샷을 찍습니다.
그리고 심사용 추가정보에 심사를 위해 필요한(로그인 아이디/비번 등) 정보를 표기해서 제출합니다.
심사가 통과되면 첫번째 버전의 앱은 출시하지말고,
인앱 상품을 불러와서 완성하여 차기 버전을 다시 제출하고 통과후 출시합니다.
(GR 같습니다.)
앱 배포 준비가 되면 입 내 구입 또는 구독이 하기 버튼을 누릅니다.
심사에 제출하기로 마무리합니다.
반응형
'App & OS > Hybrid' 카테고리의 다른 글
Flutter Firebase login (4) | 2024.09.08 |
---|---|
Flutter (0) | 2024.08.18 |
Flutter hello world (0) | 2024.08.15 |
[React Native] Postman에서 Push 보내기 (0) | 2019.08.04 |
[React Native] Firebase Push Notification 추가 [Android] (0) | 2019.07.29 |
Comments