Flutter插件alibc的介绍与使用
Flutter插件alibc的介绍与使用
阿里百川SDK
接入说明
仅支持Android,暂不支持iOS。
更新日志
- 2022.3.31 更新Android百川组件至最新版。
1. 注册
访问阿里百川,注册阿里百川账号,创建应用并申请权限。
2. 生成安全图片
登录阿里百川开发者控制台,获取V5版安全图片,将其保存为res/drawable/yw_1222.jpg
。
3. 修改文件
在Android项目下的AndroidManifest.xml
文件中,增加以下内容:
<manifest
xmlns:tools="http://schemas.android.com/tools">
<application
tools:replace="android:label">
...
</manifest>
4. 混淆文件
在android/app/
目录下新增proguard-rules.pro
文件,并添加以下混淆规则:
-keepattributes Signature
-ignorewarnings
-keep class javax.ws.rs.** { *; }
-keep class com.alibaba.fastjson.** { *; }
-dontwarn com.alibaba.fastjson.**
-keep class sun.misc.Unsafe { *; }
-dontwarn sun.misc.**
-keep class com.taobao.** {*;}
-keep class com.alibaba.** {*;}
-keep class com.alipay.** {*;}
-dontwarn com.taobao.**
-dontwarn com.alibaba.**
-dontwarn com.alipay.**
-keep class com.ut.** {*;}
-dontwarn com.ut.**
-keep class com.ta.** {*;}
-dontwarn com.ta.**
-keep class org.json.** {*;}
-keep class com.ali.auth.** {*;}
-dontwarn com.ali.auth.**
-keep class com.taobao.securityjni.** {*;}
-keep class com.taobao.wireless.security.** {*;}
-keep class com.taobao.dp.**{*;}
-keep class com.alibaba.wireless.security.**{*;}
-keep interface mtopsdk.mtop.global.init.IMtopInitTask {*;}
-keep class * implements mtopsdk.mtop.global.init.IMtopInitTask {*;}
完整示例Demo
以下是完整的Flutter代码示例,展示如何使用alibc
插件进行淘宝账号授权登录、打开淘宝店铺等操作。
示例代码
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:alibc/alibc.dart';
import 'package:alibc/data.dart';
typedef ResultCallback = Future<dynamic> Function();
void main() => runApp(MyApp());
class MyApp extends StatefulWidget {
[@override](/user/override)
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
Map<String, String> result = {};
[@override](/user/override)
void initState() {
super.initState();
}
Widget _buildButton(String title, ResultCallback callback) {
return Container(
child: ListView(
primary: false,
shrinkWrap: true,
children: <Widget>[
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
FlatButton(
color: Colors.grey.withAlpha(100),
child: Text(title),
onPressed: () {
callback()
.then((dynamic value) => setState(() {
result[title] = value.toString();
}))
.catchError((value) => setState(() {
result[title] = value.toString();
}));
},
),
Container(
margin: EdgeInsets.only(left: 100),
child: Text(result[title] ?? '结果:'),
)
],
)
],
),
);
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('阿里百川SDK示例'),
),
body: ListView(
primary: false,
shrinkWrap: true,
children: <Widget>[
_buildButton('淘宝账号授权登录', _loginTest),
_buildButton('检查是否登录', _isloginTest),
_buildButton('退出淘宝账号授权', _logoutTest),
_buildButton('打开链接', _openURLTest),
_buildButton('打开淘宝店铺', _openShopTest),
_buildButton('打开淘宝购物车', _openMyCartsTest),
_buildButton('添加购物车', _openAddCartTest),
_buildButton('淘客打点同步/异步', _setSyncForTaokeTest),
_buildButton('淘宝客配置', _setTaokeParamsTest),
_buildButton('渠道信息', _setChannelTest),
_buildButton('ISVCode', _setISVCodeTest),
_buildButton('ISV版本', _setISVVersionTest),
],
),
),
);
}
Future<dynamic> _loginTest() async {
return await Alibc.login();
}
Future<dynamic> _isloginTest() async {
return await Alibc.islogin();
}
Future<dynamic> _logoutTest() async {
return await Alibc.logout();
}
Future<dynamic> _openURLTest() async {
return await Alibc.openURL(
'https://uland.taobao.com/coupon/edetail?e=oSSExmvWXYYGQASttHIRqdYQwfcs8zoyxKXGKLqne1Hsx8cAhaH1SiZlT35kVCJr5R4kLBbVNWVsYgQTrXiDpq0TeAL%2BmcF17w9v818T2zNzQzL%2FHTq%2BPBemP0hpIIPvjDppvlX%2Bob8NlNJBuapvQ2MDg9t1zp0RRkY43XGTK8ko1aiZVhb9ykMuxoRQ3C%2BH5vl92ZYH25Cie%2FpBy9wBFg%3D%3D&traceId=0b15099215669559409745730e&union_lens=lensId:0b0b9f56_0c4c_16cd5da2c7f_3b31&xId=PwB9ZSWQxCtEwHxtbQc8iynshj5KEW16KP6OV6MAlpGpKCKmVGQMnjwQNhiGQpRY1gFyQHtqnYiv5wxGKTyCdf&tj1=1&tj2=1&relationId=518419440&activityId=23f4487e169647bd98b0d7fb2645947a',
AlibcShowParams(
backUrl: 'alibcexample://',
degradeUrl: '',
openType: 'native',
clientType: 'taobao',
title: 'true',
proxy: '',
bar: 'truetrue',
failedMode: 'h5',
originalOpenType: ''));
}
Future<dynamic> _openShopTest() async {
return await Alibc.openPage(
AlibcShopPage('65626181'),
AlibcShowParams(
backUrl: 'alibcexample://',
degradeUrl: '',
openType: 'native',
clientType: 'taobao',
title: 'example',
proxy: '',
bar: 'true',
failedMode: 'h5',
originalOpenType: ''));
}
Future<dynamic> _openMyCartsTest() async {
return await Alibc.openPage(
AlibcMyCartsPage(),
AlibcShowParams(
backUrl: 'alibcexample://',
degradeUrl: '',
openType: 'native',
clientType: 'taobao',
title: 'example',
proxy: '',
bar: 'true',
failedMode: 'h5',
originalOpenType: ''));
}
Future<dynamic> _openAddCartTest() async {
return await Alibc.openPage(
AlibcAddCartPage('618165954008'),
AlibcShowParams(
backUrl: 'alibcexample://',
degradeUrl: '',
openType: 'native',
clientType: 'taobao',
title: 'example',
proxy: '',
bar: 'true',
failedMode: 'h5',
originalOpenType: ''));
}
bool isSyncForTaoke = false;
Future<dynamic> _setSyncForTaokeTest() async {
isSyncForTaoke = !isSyncForTaoke;
return await Alibc.setSyncForTaoke(isSyncForTaoke);
}
Future<dynamic> _setTaokeParamsTest() async {
return await Alibc.setTaokeParams(AlibcTaokeParams(
pid: 'mm_112883640_11584347_72287650277', adzoneId: '72287650277'));
}
Future<dynamic> _setChannelTest() async {}
Future<dynamic> _setISVCodeTest() async {}
Future<dynamic> _setISVVersionTest() async {}
}
更多关于Flutter插件alibc的介绍与使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter插件alibc的介绍与使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中,alibc
是一个用于集成阿里百川(AliBC)SDK的插件,主要用于在Flutter应用中实现淘宝、天猫等阿里系电商平台的商品详情页、购物车、订单等功能的跳转和展示。由于阿里百川SDK本身功能较为复杂,alibc
插件提供了一些常用的功能接口,方便开发者在Flutter应用中快速集成。
1. 安装 alibc
插件
首先,你需要在 pubspec.yaml
文件中添加 alibc
插件的依赖:
dependencies:
flutter:
sdk: flutter
alibc: ^版本号
然后运行 flutter pub get
来安装插件。
2. 配置 Android 和 iOS 项目
Android 配置
在 android/app/build.gradle
文件中,确保你已经添加了阿里百川SDK的依赖:
dependencies {
implementation 'com.aliyun.ams:alibc:版本号'
}
在 AndroidManifest.xml
文件中,添加必要的权限和Activity声明:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application>
<activity
android:name="com.aliyun.ams.alibc.AliBCActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
</application>
iOS 配置
在 ios/Podfile
文件中,添加阿里百川SDK的依赖:
pod 'AliBC', '~> 版本号'
然后运行 pod install
来安装依赖。
在 Info.plist
文件中,添加必要的权限和URL Scheme:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>你的App的URL Scheme</string>
</array>
</dict>
</array>
3. 初始化 alibc
插件
在Flutter应用的 main.dart
文件中,初始化 alibc
插件:
import 'package:alibc/alibc.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Alibc.init();
runApp(MyApp());
}
4. 使用 alibc
插件
打开商品详情页
import 'package:alibc/alibc.dart';
void openItemDetail() async {
String itemId = "商品ID";
bool result = await Alibc.openItemDetail(itemId);
if (result) {
print("打开商品详情页成功");
} else {
print("打开商品详情页失败");
}
}
打开购物车
import 'package:alibc/alibc.dart';
void openCart() async {
bool result = await Alibc.openCart();
if (result) {
print("打开购物车成功");
} else {
print("打开购物车失败");
}
}
打开订单列表
import 'package:alibc/alibc.dart';
void openOrderList() async {
bool result = await Alibc.openOrderList();
if (result) {
print("打开订单列表成功");
} else {
print("打开订单列表失败");
}
}
5. 处理回调
alibc
插件可能会返回一些回调信息,例如用户是否成功登录、是否成功下单等。你可以通过监听这些回调来处理相应的业务逻辑。
import 'package:alibc/alibc.dart';
void handleCallback() {
Alibc.onLoginResult.listen((result) {
if (result) {
print("用户登录成功");
} else {
print("用户登录失败");
}
});
Alibc.onTradeResult.listen((result) {
if (result) {
print("交易成功");
} else {
print("交易失败");
}
});
}