Flutter插件之阿里百川

news2024/11/20 15:40:14

上一篇: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 *)application
            openURL:(NSURL *)url
            options:(NSDictionary<NSString *,id> *)options {
     
    if (@available(iOS 9.0, *)) {
        __unused BOOL isHandledByALBBSDK=[[AlibcTradeSDK sharedInstance]
                                          application:application
                                          openURL:url
                                          options:options];
    } else {
        // Fallback on earlier versions
    }//处理其他app跳转到自己的app,如果百川处理过会返回YES
     
    return 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:nil
                                               openURL:obj.URL
                                               options: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() {
                @Override
                public void onSuccess() {
                    result.success(getResult(0));
                }

                @Override
                public void onFailure(int code, String msg) {
                    result.success(getResult(-1, code + " " + msg));
                }
            });
        }

gitee地址:alikit4

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1010954.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue--1.6计算属性

概念&#xff1a;基于现有的数据&#xff0c;计算出来的新属性。依赖的数据变化&#xff0c;自动重新计算。 语法&#xff1a; 1&#xff09;声明在computed配置项中&#xff0c;一个计算属性对应一个函数。 2&#xff09;使用起来和普通属性一样使用{{计算属性名}} <!do…

Java/ExecutorService中多线程服务ExecuteService的使用

什么是ExecutorService ExecutorService 是 Java 中的一个接口&#xff0c;它扩展了 Executor 接口&#xff0c;并提供了更多的方法来处理多线程任务。它是 Java 中用于执行多线程任务的框架之一&#xff0c;可以创建一个线程池&#xff0c;将多个任务提交到线程池中执行。Exe…

【深度学习】 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…

C++模版基础

代码地址 gitgithub.com:CHENLitterWhite/CPPWheel.git 专栏介绍 本专栏会持续更新关于STL中的一些概念&#xff0c;会先带大家补充一些基本的概念&#xff0c;再慢慢去阅读STL源码中的需要用到的一些思想&#xff0c;有了一些基础之后&#xff0c;再手写一些STL代码。 (如果你…

Flink、Spark、Hive集成Hudi

环境描述: hudi版本:0.13.1 flink版本:flink-1.15.2 spark版本:3.3.2 Hive版本:3.1.3 Hadoop版本:3.3.4 一.Flink集成Hive 1.拷贝hadoop包到Flink lib目录 hadoop-client-api-3.3.4.jar hadoop-client-runtime-3.3.4.jar 2.下载上传flink-hive的jar包 flink-co…

【蓝桥杯选拔赛真题60】Scratch旋转风车 少儿编程scratch图形化编程 蓝桥杯选拔赛真题解析

目录 scratch旋转风车 一、题目要求 编程实现 二、案例分析 1、角色分析

腾讯mini项目-【指标监控服务重构】2023-07-30

今日已办 调研 CPU & Memory Cadivisor &#xff23;adivisor -> Prometheus -> (Grafana / SigNoz Web) google/cadvisor: Analyzes resource usage and performance characteristics of running containers. (github.com) services:cadvisor:image: gcr.io/ca…

基于Qt5的计算器设计

Qt5的信号与槽 ✨描述&#xff1a;信号槽是 Qt 框架引以为豪的机制之一。所谓信号槽&#xff0c;实际就是观察者模式(发布-订阅模式)。当某个事件发生之后&#xff0c;比如&#xff0c;按钮检测到自己被点击了一下&#xff0c;它就会发出一个信号&#xff08;signal&#xff09…

视图/存储过程/触发器

视图 介绍 视图&#xff08;View&#xff09;是一种虚拟存在的表。视图中的数据并不在数据库中实际存在&#xff0c;行和列数据来自定义视 图的查询中使用的表&#xff0c;并且是在使用视图时动态生成的。 通俗的讲&#xff0c;视图只保存了查询的SQL逻辑&#xff0c;不保存…

手机悬浮提词器怎么设置?分享三个简单的操作方法

在现代社会中&#xff0c;手机已成为人们生活中必不可少的一部分。随着科技的不断发展&#xff0c;手机的功能也越来越强大&#xff0c;如今手机悬浮提词器已成为许多人工作或学习时必备的工具。下面将分享三个简单的操作方法&#xff0c;帮助大家更好地设置手机悬浮提词器。 打…

关于时空数据的培训 GAN:实用指南(第 01/3 部分)

第 1 部分&#xff1a;深入了解 GAN 训练中最臭名昭著的不稳定性。 一、说明 GAN 是迄今为止最受欢迎的深度生成模型&#xff0c;主要是因为它们最近在图像生成任务上产生了令人难以置信的结果。然而&#xff0c;GAN并不容易训练&#xff0c;因为它们的基本设计引入了无数的不稳…

图像处理的创意之旅:逐步攀登Python OpenCV的高峰

目录 介绍OpenCV简介安装OpenCV加载和显示图像图像处理目标检测图像处理的高级应用视频处理综合案例&#xff1a;人脸识别应用总结 介绍 欢迎来到本篇文章&#xff0c;我们将一起探索如何使用Python中的OpenCV库进行图像处理和计算机视觉任务。无论您是初学者还是有一定编程…

Excel VLOOKUP 初学者教程:通过示例学习

目录 前言 一、VLOOKUP的用法 二、应用VLOOKUP的步骤 三、VLOOKUP用于近似匹配 四、在同一个表里放置不同的VLOOKUP函数 结论 前言 Vlookup&#xff08;V 代表“垂直”&#xff09;是 excel 中的内置函数&#xff0c;允许在 excel 的不同列之间建立关系。 换句话说&#x…

运算符——“MySQL数据库”

各位CSDN的uu们好呀&#xff0c;今天&#xff0c;小雅兰的内容是MySQL数据库里面的操作符&#xff0c;下面&#xff0c;让我们进入操作符的世界吧&#xff01;&#xff01;&#xff01; 算术运算符 比较运算符 逻辑运算符 位运算符 运算符的优先级 拓展&#xff1a;使用正…

【海思SS626 | 开发环境】编译整个SDK全过程以及问题汇总

目录 一、概述二、解压SDK&#xff0c;打补丁三、安装交叉编译工具✨3.1 安装 aarch64-mix410-linux.tgz✨3.2 安装 cc-riscv32-cfg11-musl-20220523-elf.tar.gz✨3.3 检查工具链版本&#xff0c;打印版本则表示安装成功 四、安装软件包✨4.1 安装软件包✨4.2 安装mtd-utils的依…

Excel VBA 变量,数据类型常量

几乎所有计算机程序中都使用变量&#xff0c;VBA 也不例外。 在过程开始时声明变量是一个好习惯。 这不是必需的&#xff0c;但有助于识别内容的性质&#xff08;文本&#xff0c;​​数据&#xff0c;数字等&#xff09; 在本教程中&#xff0c;您将学习- 一、VBA变量 变量是…

AI助手-百度免费AI助手工具

AI助手是有百度推出的免费AI助手工具&#xff0c;国内无需魔就可以使用的AI工具&#xff0c;而且无限制&#xff0c;和ChatGPT类似的人工智能聊天机器人差不多&#xff0c;内置了各种功能的快捷入口&#xff0c;直接点开即可使用&#xff0c;而且还可以ai作画。 工具地址&…

Flutter快速入门学习(一)

目录 前言 新建项目 项目入口 Dart的入口&#xff08;项目的入口&#xff09; 布局 视图组件 Container&#xff08;容器&#xff09; Text&#xff08;文本&#xff09; Image&#xff08;图片&#xff09; Row&#xff08;水平布局&#xff09;和Column&#xff08…

【项目实战】【已开源】USB2.0 HUB 集线器的制作教程(详细步骤以及电路图解释)

写在前面 本文是一篇关于 USB2.0 HUB 集线器的制作教程&#xff0c;包括详细的步骤以及电路图解释。 本文记录了笔者制作 USB2.0 HUB 集线器的心路历程&#xff0c;希望对你有帮助。 本文以笔记形式呈现&#xff0c;通过搜集互联网多方资料写成&#xff0c;非盈利性质&#xf…

windows系统安装php,运行php

一、安装php 官网&#xff1a;PHP For Windows: Binaries and sources Releases 下载最新的PHP解释器 解压好放入 C:\php 目录文件下 二、配置php 配置环境变量&#xff1a;在CMD命令提示符中输入以下命令&#xff0c;将PHP路径添加到系统环境变量中&#xff0c;以便可以在…