Flutter谷歌内购插件purchasely_google的使用
Flutter 谷歌内购插件 Purchasely 的使用
[Purchasely]
Purchasely
Purchasely 是一个解决方案,可以简化在 App Store、Google Play Store 和 Huawei App Gallery 上集成和提升您的应用内购买和订阅功能。
安装
在 pubspec.yaml
文件中添加以下依赖项:
dependencies:
purchasely_flutter: ^5.0.0
使用
以下是一个简单的示例,展示如何使用 Purchasely 插件进行谷歌内购:
import 'package:flutter/material.dart';
import 'package:purchasely_flutter/purchasely_flutter.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: HomeScreen(),
);
}
}
class HomeScreen extends StatefulWidget {
[@override](/user/override)
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
bool _configured = false;
[@override](/user/override)
void initState() {
super.initState();
// 初始化 Purchasely
_configurePurchasely();
}
Future<void> _configurePurchasely() async {
// 启动 Purchasely
_configured = await Purchasely.start(
apiKey: '<YOUR_API_KEY>', // 替换为你的 API 密钥
androidStores: ['Google'], // 指定安卓商店
storeKit1: false, // 设置是否使用 StoreKit1
logLevel: PLYLogLevel.error, // 设置日志级别
runningMode: PLYRunningMode.full, // 设置运行模式
userId: null, // 可以设置用户 ID
);
if (_configured) {
// 显示内购界面
_showInAppPurchase();
} else {
print("Purchasely 配置失败");
}
}
Future<void> _showInAppPurchase() async {
// 展示内购界面
var result = await Purchasely.presentPresentationForPlacement(
"<YOUR_PLACEMENT_ID>", // 替换为你的放置 ID
isFullscreen: true); // 是否全屏显示
// 处理结果
switch (result.result) {
case PLYPurchaseResult.cancelled:
{
print("用户取消了购买");
}
break;
case PLYPurchaseResult.purchased:
{
print("用户购买了 ${result.plan?.name}"); // 打印购买计划名称
}
break;
case PLYPurchaseResult.restored:
{
print("用户恢复了 ${result.plan?.name}"); // 打印恢复的计划名称
}
break;
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Purchasely 示例'),
),
body: Center(
child: Text(_configured ? "已配置 Purchasely" : "未配置 Purchasely"),
),
);
}
}
更多关于Flutter谷歌内购插件purchasely_google的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter谷歌内购插件purchasely_google的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
purchasely_google
是一个用于在 Flutter 应用中实现 Google Play 内购的插件。它提供了简单易用的 API,帮助开发者快速集成和管理应用内购买功能。以下是使用 purchasely_google
插件的基本步骤。
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 purchasely_google
插件的依赖:
dependencies:
flutter:
sdk: flutter
purchasely_google: ^latest_version
然后运行 flutter pub get
来安装依赖。
2. 初始化插件
在应用启动时,初始化 purchasely_google
插件。通常可以在 main.dart
的 main
函数中进行初始化。
import 'package:purchasely_google/purchasely_google.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化 Purchasely
await PurchaselyGoogle.init(
apiKey: 'YOUR_API_KEY',
userId: 'USER_ID', // 可选
logLevel: PurchaselyLogLevel.debug, // 可选
);
runApp(MyApp());
}
3. 获取产品信息
在应用内展示可购买的产品时,首先需要获取产品信息。
Future<void> fetchProducts() async {
try {
List<PurchaselyProduct> products = await PurchaselyGoogle.getProducts();
// 处理产品信息
products.forEach((product) {
print('Product ID: ${product.productId}, Price: ${product.price}');
});
} catch (e) {
print('Failed to fetch products: $e');
}
}
4. 发起购买
当用户选择购买某个产品时,可以使用 purchaseProduct
方法发起购买。
Future<void> purchaseProduct(String productId) async {
try {
PurchaselyPurchaseResult result = await PurchaselyGoogle.purchaseProduct(productId);
if (result.status == PurchaselyPurchaseStatus.purchased) {
// 购买成功
print('Purchase successful: ${result.purchaseDetails}');
} else {
// 购买失败或取消
print('Purchase failed or cancelled: ${result.status}');
}
} catch (e) {
print('Failed to purchase product: $e');
}
}
5. 处理购买结果
购买完成后,可以根据购买结果更新应用状态或向用户展示相关信息。
6. 恢复购买
如果用户重新安装应用或更换设备,可能需要恢复之前的购买。
Future<void> restorePurchases() async {
try {
List<PurchaselyPurchaseDetails> purchases = await PurchaselyGoogle.restorePurchases();
if (purchases.isNotEmpty) {
// 恢复成功,处理购买信息
purchases.forEach((purchase) {
print('Restored purchase: ${purchase.productId}');
});
} else {
// 没有可恢复的购买
print('No purchases to restore');
}
} catch (e) {
print('Failed to restore purchases: $e');
}
}
7. 订阅管理
对于订阅产品,你可能需要检查订阅状态或处理订阅续订。
Future<void> checkSubscriptionStatus(String productId) async {
try {
PurchaselySubscriptionStatus status = await PurchaselyGoogle.getSubscriptionStatus(productId);
if (status == PurchaselySubscriptionStatus.active) {
// 订阅有效
print('Subscription is active');
} else {
// 订阅无效或已过期
print('Subscription is not active');
}
} catch (e) {
print('Failed to check subscription status: $e');
}
}
8. 处理生命周期
确保在应用生命周期中正确处理 purchasely_google
插件的生命周期事件。
class MyApp extends StatefulWidget {
[@override](/user/override)
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> with WidgetsBindingObserver {
[@override](/user/override)
void initState() {
super.initState();
WidgetsBinding.instance.addObserver(this);
}
[@override](/user/override)
void dispose() {
WidgetsBinding.instance.removeObserver(this);
super.dispose();
}
[@override](/user/override)
void didChangeAppLifecycleState(AppLifecycleState state) {
if (state == AppLifecycleState.resumed) {
// 应用恢复时检查购买状态
restorePurchases();
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Purchasely Google Example'),
),
body: Center(
child: ElevatedButton(
onPressed: () => purchaseProduct('your_product_id'),
child: Text('Purchase Product'),
),
),
),
);
}
}