当前位置: 首页 > news >正文

Flutter插件之阿里百川

上一篇:Flutter插件的制作和发布,我们已经了解了如何制作一个通用的双端插件,本篇就带领大家将阿里百川双端sdk制作成一个flutter插件供项目调用!

目录

  • 登录并打开控制台,创建应用:
    • 填写应用相关信息
    • 开通百川电商SDK
    • 申请安全图片
    • 下载SDK
  • 创建插件项目
    • 将ios端sdk下的framework和bundle文件夹复制到插件工程的ios目录下
    • 编辑podspec
    • 编辑主工程Podfile
    • 使用Android Studio编译运行
  • XCode打开IOS工程
  • 根据开发文档其它相关配置
  • 引入百川SDK头文件,进行功能编写:
  • Flutter端编写通信方法后运行
  • AndroidStudio打开android工程
  • 引入百川SDK相关类,进行功能编写:

打开阿里百川网站:https://baichuan.taobao.com/

登录并打开控制台,创建应用:

在这里插入图片描述

填写应用相关信息

在这里插入图片描述
注意,这里需要填写项目双端包名,最后生成安全图片时,安卓端会要求上传apk空包,验证包名和签名,ios端会要求提交Bundle ID。

SDK版本,本篇以标准版4.x为例,所以我们选择标准版,app下载地址可以随意填写一个!

开通百川电商SDK

在这里插入图片描述

申请安全图片

申请地址:https://suite.baichuan.taobao.com/

在这里插入图片描述

安卓端提交apk,ios端提交bundleId!

在这里插入图片描述

注意一定要选择v6,两端的安全图片下载成功后改名为:yw_1222_baichuan.jpg(新版sdk要求),并保存以待后面使用!

下载SDK

下载地址:阿里百川SDK

在这里插入图片描述

下载4.x的标准版本!5.x的旗舰版和4.x的标准版在功能上的区别在于5.x提供了二次登录授权(可以传入任意appkey以申请accessToken):

在这里插入图片描述

本篇以4.x标准版为例接入!

创建插件项目

在这里插入图片描述

插件名即alikit4,按上一篇Flutter插件的制作过程,确认项目编译运行成功后,开始按阿里百川ios4.x接入文档,接入sdk:

将ios端sdk下的framework和bundle文件夹复制到插件工程的ios目录下

在这里插入图片描述

编辑podspec

打开alikit4.podspec,添加Framework和资源依赖路径,以及其它系统Framework和library:

  s.vendored_frameworks = "framework/**/*.framework"s.resources = ['bundle/*.bundle']s.frameworks = 'JavaScriptCore','CoreMotion','CoreTelephony's.libraries = 'resolv','c++','icucore','sqlite3'

fs.vendored_frameworks = ramework/**/.framework 即ios插件目录下framework文件夹下的所有二级文件夹下的所有Framework;
s.resources = ['bundle/
.bundle’] 插件引用的资源路径;
s.frameworks = ‘JavaScriptCore’,‘CoreMotion’,‘CoreTelephony’ 插件所需要的系统库;
s.libraries = ‘resolv’,‘c++’,‘icucore’,‘sqlite3’ 插件所需要的系统library;

另,如果插件需要通过pods安装远程库,则写法为:

s.dependency 'Masonry','1.1.0'
s.dependency 'FMDB','2.7.5'

这里仅是举例,4.x标准版SDK不需要!

编辑主工程Podfile

在target ‘Runner’ do下添加:use_modular_headers!,否则有可能报错!

使用Android Studio编译运行

此过程,会自动进行pod install,及ios端的环境配置,当然有可能会运行失败,无论成功失败,此时便可使用XCode打开ios工程,依据开发文档进行相关配置;

XCode打开IOS工程

将ios端的安全图片,拖入到主工程Runner下,另有一个名为mtopsdk_configuration.plist的文件一并拖入(可下载阿里百川demo复制过来即可):

在这里插入图片描述

注意你的bundleId一定要与你的安全图片一致:

在这里插入图片描述

根据开发文档其它相关配置

1.添加系统库,我们在podspec中已经配置:
在这里插入图片描述
2.添加编译参数,按照文档添加方法在other linker flag中添加即可:

在这里插入图片描述
3.配置URL Types,按照文档添加方式添加(注意是自己的appkey)即可:

URL Scheme为tbopen{AppKey},如tbopen123456

在这里插入图片描述
4.配置info.plist:

1)在info.plist中,增加LSApplicationQueriesSchemes字段,并添加tbopen,tmall;
2)配置ATS, 允许HTTP请求;

在这里插入图片描述
如果plist中没有以上项目,可以点击+号手动添加,也可以直接使用代码添加:

URL Scheme:

	<key>CFBundleURLTypes</key><array><dict><key>CFBundleTypeRole</key><string>Editor</string><key>CFBundleURLName</key><string>alibaichuan</string><key>CFBundleURLSchemes</key><array><string>tbopen123456</string></array></dict></array>

LSApplicationQueriesSchemes:

<key>LSApplicationQueriesSchemes</key><array><string>tmall</string><string>tbopen</string></array>

ATS:

	<key>NSAppTransportSecurity</key><dict><key>NSAllowsArbitraryLoads</key><true/></dict>

然后执行编译看是否成功,一般的都没什么问题,如果有问题,就具体问题具体对待。

注意:以上所有配置,均是在主工程Runner下配置!

引入百川SDK头文件,进行功能编写:

在这里插入图片描述

编译通过后,所引用的Framework会全部显示在这里。

打开Alikit4Plugin.m,导入阿里头文件:

#import "AlibcTradeSDK/AlibcTradeSDK.h"

如未报错,并可以进入到该头文件内部,则表示sdk已经引入成功,接下来就可以愉快的进行功能开发了:

这里仅拿初始化方法举例:

if ([@"init" isEqualToString:call.method]) {// 百川平台基础SDK初始化,加载并初始化各个业务能力插件[[AlibcTradeSDK sharedInstance] setDebugLogOpen:YES];[[AlibcTradeSDK sharedInstance] asyncInitWithSuccess:^{NSLog(@"百川SDK初始化成功");result(@{ @"code":@0});} failure:^(NSError *error) {NSLog(@"百川SDK初始化失败");result(@{ @"code":@-1,@"msg":error.description});}];} 

另外需要注意的是,ios端需要在AppDelegate中进行一些配置:

//IOS9.0 系统新的处理openURL 的API
- (BOOL)application:(UIApplication *)applicationopenURL:(NSURL *)urloptions:(NSDictionary<NSString *,id> *)options {if (@available(iOS 9.0, *)) {__unused BOOL isHandledByALBBSDK=[[AlibcTradeSDK sharedInstance]application:applicationopenURL:urloptions:options];} else {// Fallback on earlier versions}//处理其他app跳转到自己的app,如果百川处理过会返回YESreturn YES;
}- (void)scene:(UIScene *)scene openURLContexts:(NSSet<UIOpenURLContext *> *)URLContexts  API_AVAILABLE(ios(13.0)){[URLContexts enumerateObjectsUsingBlock:^(UIOpenURLContext * _Nonnull obj,BOOL * _Nonnull stop) {if([[AlibcTradeSDK sharedInstance] application:nilopenURL:obj.URLoptions:nil]){*stop = YES;}}];
}

swift写法:

1)桥接文件中引入百川头文件:#import “AlibcTradeSDK/AlibcTradeSDK.h”
在这里插入图片描述

2)AppDelegate中添加:

在这里插入图片描述

override func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool {AlibcTradeSDK.sharedInstance().application(app, open: url, options: [:])return super.application(app, open: url, options: options)}

Flutter端编写通信方法后运行

在这里插入图片描述在这里插入图片描述

返回{“code”:0}即代表初始化成功!由于模拟器未安装淘宝,所以打开的是网页版!

AndroidStudio打开android工程

在这里插入图片描述
将安卓端sdk放入安卓插件工程的libs文件夹下,并修改插件工程下的build.gradle,添加:

dependencies {implementation fileTree(include: ['*.jar'], dir: 'libs')compileOnly fileTree(include: ['*.aar'], dir: 'libs')implementation 'com.alibaba:fastjson:1.2.69'
}

同时,将sdk中的所有aar文件,往主工程的libs文件夹下复制一份:

在这里插入图片描述

修改主工程下的build.gradle:

dependencies {implementation fileTree(dir: 'libs', include: ['*.jar'])implementation fileTree(dir: 'libs', include: ['*.aar'])
}

注意看区别,插件工程对aar使用的是compileOnly,主工程是implementation!

另外,在主工程的build.gradle配置上你的签名信息:

在这里插入图片描述
这一步骤,应在你申请安全图片之前就以配置好,可以保证安全图片与你的包名以及签名一致,否则会导致百川sdk初始化失败!

添加安全图片到主工程res/drawable下:

在这里插入图片描述
执行Sync,编译:

在这里插入图片描述

编译通过后,即可在Alikit4Plugin中编写功能代码了:

引入百川SDK相关类,进行功能编写:

import com.alibaba.baichuan.android.trade.AlibcTrade;
import com.alibaba.baichuan.android.trade.AlibcTradeSDK;
import com.alibaba.baichuan.android.trade.callback.AlibcTradeInitCallback;
if (call.method.equals("init")) {AlibcTradeSDK.asyncInit((Application) context, new AlibcTradeInitCallback() {@Overridepublic void onSuccess() {result.success(getResult(0));}@Overridepublic void onFailure(int code, String msg) {result.success(getResult(-1, code + " " + msg));}});}

gitee地址:alikit4

相关文章:

Flutter插件之阿里百川

上一篇&#xff1a;Flutter插件的制作和发布&#xff0c;我们已经了解了如何制作一个通用的双端插件&#xff0c;本篇就带领大家将阿里百川双端sdk制作成一个flutter插件供项目调用&#xff01; 目录 登录并打开控制台&#xff0c;创建应用&#xff1a;填写应用相关信息开通百川…...

✔ ★ 算法基础笔记(Acwing)(三)—— 搜索与图论(17道题)【java版本】

搜索与图论 1. DFS1. 排列数字(3分钟)2. n-皇后问题 2. BFS&#xff08;队列&#xff09;1. 走迷宫二刷总结&#xff08;队列存储一个节点pair<int,int>&#xff09;三刷总结 走过的点标记上距离(既可以记录距离&#xff0c;也可以判断是否走过) ★ ★ 例题2. 八数码二刷…...

初试占比70%,计算机招生近200人,安徽理工大学考情分析

安徽理工大学 考研难度&#xff08;☆&#xff09; 内容&#xff1a;23考情概况&#xff08;拟录取和复试分析&#xff09;、院校概况、23专业目录、23复试详情、各专业考情分析、各科目考情分析。 正文980字&#xff0c;预计阅读&#xff1a;3分钟 2023考情概况 安徽理工大…...

LeetCode题解:1720. 解码异或后的数组,异或,JavaScript,详细注释

原题链接&#xff1a; https://leetcode.cn/problems/decode-xored-array/ 解题思路&#xff1a; 异或有如下性质&#xff1a; a ^ a 0a ^ 0 aa ^ b b ^ a 根据题意&#xff0c;已知encoded[i - 1] arr[i - 1] ^ arr[i]&#xff0c;可以做如下转换&#xff1a; encoded[i…...

【C刷题】day2

一、选择题 1、以下程序段的输出结果是&#xff08; &#xff09; #include<stdio.h> int main() { char s[] "\\123456\123456\t"; printf("%d\n", strlen(s)); return 0; } A: 12 B: 13 C: 16 D: 以上都不对【答案】&#xff1a; A 【解析】…...

Apollo源码安装的问题及解决方法

问题一 在进行git clone时&#xff0c;会报错Failed to connect to github.com port 443: Timed out&#xff0c;经过实践后推荐以下两种方法。 方法一&#xff1a;在原地址前加https://ghproxy.com 原地址&#xff1a;git clone https://github.com/ApolloAuto/apollo.git …...

Flutter 挖孔屏的状态栏占用问题怎么解决,横屏后去掉了状态栏,还是会有一块黑色的竖条

使用下方代码后依旧有一条黑色的区域 overridevoid initState() {// TODO: implement initStatesuper.initState();///关闭状态栏&#xff0c;与底部虚拟操作按钮SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: []);//隐藏状态栏&#xff0c;底部按钮栏S…...

Layui快速入门之第九节 表格事件的使用

目录 一&#xff1a;事件 二&#xff1a;头部工具栏事件 三&#xff1a;排序切换事件 四&#xff1a;列拖拽宽度后的事件 五&#xff1a;列筛选&#xff08;显示或隐藏&#xff09;后的事件 六&#xff1a;行单击和双击事件 七&#xff1a;行右键菜单事件 八&#xff1a;…...

[2023.09.14]: Rust的条件编译

关于条件编译&#xff0c;我的记忆是10多年前&#xff0c;写C#的时代了&#xff0c;最近10年写Python和Javascript代码&#xff0c;虽然Javascript中也可以通过插件实现条件编译的效果&#xff0c;但是用起来太憋足了。当我在Yew的SSR开发模式中看到条件编译的配置时&#xff0…...

数据清洗:数据挖掘的前期准备工作

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ &#x1f434;作者&#xff1a;秋无之地 &#x1f434;简介&#xff1a;CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作&#xff0c;主要擅长领域有&#xff1a;爬虫、后端、大数据…...

基于FPGA的图像sobel锐化实现,包括tb测试文件和MATLAB辅助验证

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 将FPGA的仿真结果导入到matlab显示图像效果 2.算法运行软件版本 MATLAB2022a,vivado2019.2 3.部分核心程序 .................................…...

HDMI 直通 ILA 调试实验

FPGA教程学习 第十四章 HDMI 直通 ILA 调试实验 文章目录 FPGA教程学习前言实验原理程序设计实验过程实验尝试总结TODO 前言 HDMI 输入直通到 HDMI 输出的显示&#xff0c;完成一个简单的 HDMI 输入输出检测。 实验原理 开发板 HDMI 输出接口芯片使用 ADV7511&#xff0c;HD…...

基于Qt4开发曲线绘制交互软件Plotter

目前市面上有很多曲线绘制软件,但其交互功能较差。比如,想要实现数据的交互,同步联动等,都需要大量繁琐的人工操作。所以讲想开发一款轻量级的曲线绘制交互软件。下面就以此为案例,记录一下基于Qt4的开发过程。 目录 1 需求 2 技术路线 3 开发流程 1 框架搭建 2 菜单…...

数据分享|R语言逻辑回归、Naive Bayes贝叶斯、决策树、随机森林算法预测心脏病...

全文链接&#xff1a;http://tecdat.cn/?p23061 这个数据集&#xff08;查看文末了解数据免费获取方式&#xff09;可以追溯到1988年&#xff0c;由四个数据库组成。克利夫兰、匈牙利、瑞士和长滩。"目标 "字段是指病人是否有心脏病。它的数值为整数&#xff0c;0无…...

【深度学习】 Python 和 NumPy 系列教程(十五):Matplotlib详解:2、3d绘图类型(1):线框图(Wireframe Plot)

目录 一、前言 二、实验环境 三、Matplotlib详解 1、2d绘图类型 2、3d绘图类型 0. 设置中文字体 1. 线框图&#xff08;Wireframe Plot&#xff09; 一、前言 Python是一种高级编程语言&#xff0c;由Guido van Rossum于1991年创建。它以简洁、易读的语法而闻名&#xff0…...

阿里云CDN缓存配置及优化-oss绑定CDN缓存自动刷新功能

参考阿里云官网文档&#xff1a;https://help.aliyun.com/practice_detail/603170 1.缓存时间配置 在缓存管理中&#xff0c;可以方便地指定目录和文件后缀名在CDN节点上的缓存时间&#xff0c;缓存时长配置的长短&#xff0c;取决于源站对该文件的变更频率。我们需要分析下业务…...

气象站有什么用?有哪些类型

气象站是一种用于收集、分析和处理气象数据的设备&#xff0c;能够为人们提供及时、准确的气象数据和决策支持。 一、气象站的作用 预测天气变化 气象站最重要的作用之一是进行预测天气变化。通过气象站的连续监测和数据分析&#xff0c;可以预测未来的天气情况&#xff0c;…...

【深度学习】卷积神经网络(LeNet)

卷积神经网络 LeNet 前言LeNet 模型代码实现MINST代码分块解析1 构建 LeNet 网络结构2 加载数据集3 初始化模型和优化器4 训练模型5 训练完成 完整代码 Fashion-MINST代码分块解析1 构建 LeNet 网络结构2 初始化模型参数3 加载数据集4 定义损失函数和优化器5 训练模型 完整代码…...

什么是数据仓库,解释数据仓库的结构和ETL过程

1、什么是数据仓库&#xff0c;解释数据仓库的结构和ETL过程。 数据仓库是一种用于存储和管理数据的系统&#xff0c;它提供了一种统一的方式&#xff0c;将不同来源、不同格式和不同时间的数据集成在一起。数据仓库的结构如下&#xff1a; 主题域&#xff08;Domain&#xf…...

无线通信网络

一、无线局域网 WLAN概念 WLAN(Wireless Local Area Network)无线局域网,目前大部分无线产品都是根据IEEE802.11标准开发。 IEEE802.11标准 名称发布时间工作频段调制技术数据速率802.111997年2.4GHz ISM频段DB/SK、DQPSK1Mbps、2Mbps802.11b1998年2.4GHz ISM频段CCK5.5Mbps…...

使用ElementPlus实现内嵌表格和内嵌分页

前言 有时遇到这样的需求&#xff0c;就是在表格里面嵌入一个表格&#xff0c;以及要求带有分页&#xff0c;这样在ElementPlus中很好实现。以下使用Vue2语法实现一个简单例子&#xff0c;毕竟Vue3兼容Vue2语法&#xff0c;若想要Vue3版本例子&#xff0c;简单改改就OK了。 一…...

flex弹性盒模型与阿里图标的使用

华子目录 flex布局flex布局原理flex使用三要素 阿里图标&#xff08;字体&#xff09; flex布局 相关学习网站&#xff1a;http://c.biancheng.net/css3/flex.html 1.flex是当前最主流的布局方式&#xff1a;用它布局起来更方便&#xff0c;取代了浮动的作用。 2.浮动布局有缺…...

linux 应用中offsetof ()是个啥?

#include <stdio.h> #include <stddef.h> // 需要包含 <stddef.h> 否则会有以下错误, 是因为找不到offsetof()而引起 // printf("age offset:%d\n",offsetof(Persion,age)); //main.cpp|11 col 43| error: expected primary-expression before …...

ununtu中vim的使用

插入命令 i&#xff1a;表示输入 退出命令 :w - 保存文件&#xff0c;不退出 vim :w file -将修改另外保存到 file 中&#xff0c;不退出 vim :w! -强制保存&#xff0c;不退出 vim :wq -保存文件&#xff0c;退出 vim :wq! -强制保存文件&#xff0c;退出 vim …...

SqlServer在尝试加载程序集 ID 65917 时 Microsoft .NET Framework 出错。服务器可能资源不足,或者不信任该程序集

问题&#xff1a;在尝试加载程序集 ID 65917 时 Microsoft .NET Framework 出错。服务器可能资源不足&#xff0c;或者不信任该程序集&#xff0c;因为它的 PERMISSION_SET 设置为 EXTERNAL_ACCESS 或 UNSAFE。 检查数据库属性&#xff1a;检查服务器是否信任该程序集 解决方法…...

Discourse 如何下载备份并恢复本地数据库

进入网站的备份界面&#xff0c;会看到当前所有的备份情况。 单击下载按钮。 需要注意的是&#xff0c;当你下载后&#xff0c;系统将会发送一个链接到你的邮箱地址中。 你可以使用邮箱地址中收到的链接进行数据下载。 下载链接 单击邮件中收到的下载链接地址进行下载。 下载…...

激光焊接汽车PP塑料配件透光率测试仪

随着汽车主机厂对车辆轻量化的需求越来越强烈&#xff0c;汽车零部件轻量化设计、制造也成为汽车零部件生产厂商的重要技术指标。零部件企业要实现产品的轻量化&#xff0c;在材料指定的情况下&#xff0c;要通过产品设计优化、产品壁厚减小和装配方式的优化来解决。使用PP材料…...

Android面试题汇总(二)

一、Java集合 1、谈谈 Java 中 List、Set 以及 Map 的区别&#xff1f; List&#xff1a;有序的&#xff0c;数据可以重复。。 Set&#xff1a;无序的&#xff0c;数据不能重复。 Map&#xff1a;键值对存储。键是唯一的&#xff0c;值不是唯一的。 2、谈谈 ArrayList 和 Link…...

最新模块化设计小程序系统源码完整版:开源可二开,支持DIY

随着互联网的快速发展&#xff0c;小程序已成为各行各业开展业务的重要工具。而模块化设计小程序系统源码完整版则是一种高效、灵活、易维护的解决方案。 分享一个最新的模块化设计小程序系统源码完整版&#xff0c;源码开源可二开&#xff0c;支持自由DIY设计&#xff0c;含完…...

edge扩展下载出现Download interrupted

一、Edge扩展下载失败无法下载网络问题完美解决方案 1.首先我们找到我的电脑双击我的电脑&#xff0c;找到C盘并打开C盘&#xff0c;并找到windows选项 双击打开windows并找到system32 2.双击打开system32并找到drivers 4.双击打开drivers找到etc选项 5.双击打开etc选项找到hos…...

大连手机网站建设/自助优化排名工具

http://sujitpal.blogspot.com/2007/04/lucene-search-within-search-with.htmlhttp://blog.csdn.net/lansine2005/article/details/6787472Lucene聚类分组统计功能&#xff08;grouping&#xff09;分类&#xff1a; Lucene2011-09-18 16:56 229人阅读 评论(1) 收藏 举报在搜索…...

怎么做网站写手/免费开店的电商平台

夜光序言&#xff1a; 我涉旷野丛林而来&#xff0c;你撑船渡我&#xff0c;入灿灿花海。 正文&#xff1a; data 必须是一个函数 嗯唔~~ button-counter 组件中的 data 不是一个对象&#xff0c;而是一个函数&#xff1a; data: function () { return { count: 0 }…...

java做直播网站有哪些/企业网站优化报告

ArchiMate关系摘要 结构关系名称表示定义*组成表示一个元素由一个或多个其他概念组成。聚合表示一个元素由一个或多个其他概念组成。分配表达责任分配&#xff0c;行为表现或执行。实现 表明实体在创造&#xff0c;成就&#xff0c;维持或操作更抽象的实体中发挥关键作用。Arch…...

广州设计公司排行榜/互联网优化

点击上方“Java基基”&#xff0c;选择“设为星标”做积极的人&#xff0c;而不是积极废人&#xff01;源码精品专栏 原创 | Java 2020 超神之路&#xff0c;很肝~中文详细注释的开源项目RPC 框架 Dubbo 源码解析网络应用框架 Netty 源码解析消息中间件 RocketMQ 源码解析数据库…...

iphone8多少钱/关键词优化的技巧

实验前知识准备&#xff1a;微软的socket开发文档&#xff0c;包含api的用法及解释&#xff1a;https://docs.microsoft.com/zh-cn/windows/win32/api/_winsock/1.什么是socket&#xff1a;我们经常把socket翻译为套接字&#xff0c;socket是在应用层和传输层之间的一个抽象层&…...

哪些网站做推广/网站建设网站设计

JS交互与webView的工作原理浅析webView是什么WebView是android中一个非常实用的组件&#xff0c;它和safai、chrome一样都是基于webkit网页渲染引擎&#xff0c;可以通过加载html数据的方式便捷地展现软件的界面。在WebView的设计中&#xff0c;不是什么任务都由WebView类完成的…...