Flutter应用内购买插件flutter_onestore_inapp的使用
flutter_onestore_inapp
这是一个用于ONE store In-App Purchase的Flutter插件。
更多信息,请参阅 Developer Center。
开始使用
ONE store IAP预准备
在开始之前,您需要完成以下步骤:
会员注册
注册应用程序
安装
添加包
使用Flutter命令行添加依赖:
$ flutter pub add flutter_onestore_inapp
在pubspec.yaml文件中添加依赖:
dependencies:
flutter_onestore_inapp: ^0.3.0
点击’pub get’下载包或在命令行运行flutter pub get。
添加到build.gradle
将maven地址添加到项目的build.gradle中:
allprojects {
repositories {
maven { url 'https://repo.onestore.net/repository/onestore-sdk-public' }
}
}
修改AndroidManifest.xml
如果目标SDK版本为30(OS 11)或更高,则必须添加以下
...
...
...
使用方法
导入并使用该插件:
import 'package:flutter_onestore_inapp/flutter_onestore_inapp.dart';
您可以参考以下链接了解更多使用方法:
请求登录
更新购买数据
查询产品详情
启动购买流程
查询购买记录
更新订阅
打开订阅管理
安装ONE store服务(OSS)
Android Proguard 规则
由于已经混淆并在aar中,所以需要将包添加到proguard规则中:
# Core proGuard rules
-keep class com.gaa.sdk.base.** { *; }
-keep class com.gaa.sdk.auth.** { *; }
# Purchasing proGuard rules
-keep class com.gaa.sdk.iap.** { *; }
# Licensing proGuard rules
-keep class com.onestore.extern.licensing.** { *; }
注意事项
此插件使用了json_serializable来处理平台层与Dart之间的多个数据结构。修改任何序列化数据结构后,通过运行以下命令重新生成序列化器:
flutter packages pub run build_runner build --delete-conflicting-outputs
或者,如果您希望监视文件系统中的更改,可以运行:
flutter packages pub run build_runner watch --delete-conflicting-outputs
示例代码
以下是使用flutter_onestore_inapp的一个简单示例应用:
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'purchase_view_model.dart';
import 'res/theme.dart';
import 'view/details/subscription_detail_page.dart';
import 'view/home/home_page.dart';
import 'view/license/check_license_page.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
runApp(
// 注册用于ChangeNotifier的Provider。
ChangeNotifierProvider(
create: (context) => PurchaseViewModel(),
child: const MyApp(),
));
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(
primarySwatch: Colors.blue,
textTheme: const TextTheme(
displayLarge: AppThemes.titleTextTheme,
displayMedium: AppThemes.bodyPrimaryTextTheme,
displaySmall: AppThemes.bodyPrimaryTextTheme)),
// 主页面
home: const HomePage(),
onGenerateRoute: (settings) => generatedRoutes(settings));
}
}
Route
switch (settings.name) {
case '/subscription/detail':
final args = settings.arguments as Map
return MaterialPageRoute(builder: (context) {
return SubscriptionDetailPage(
productId: args['productId'],
);
});
case '/check/license':
return MaterialPageRoute(builder: (context) => const CheckLicensePage());
default:
return null;
}
}
这个示例展示了如何初始化和配置一个包含内购功能的Flutter应用,包括设置主题、主页以及路由处理。