Flutter插件alibc的介绍与使用

发布于 1周前 作者 sinazl 最后一次编辑是 5天前 来自 Flutter

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&amp;traceId=0b15099215669559409745730e&amp;union_lens=lensId:0b0b9f56_0c4c_16cd5da2c7f_3b31&amp;xId=PwB9ZSWQxCtEwHxtbQc8iynshj5KEW16KP6OV6MAlpGpKCKmVGQMnjwQNhiGQpRY1gFyQHtqnYiv5wxGKTyCdf&amp;tj1=1&amp;tj2=1&amp;relationId=518419440&amp;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

1 回复

更多关于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("交易失败");
    }
  });
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!