京东下单接口sdk java,Flutter 插件开发-接入京东SDK唤醒(ios篇)

Flutter 插件开发-实战京东SDK唤醒(ios)

本项目基于Flutter版本1.12开发,功能是flutter可以通过京东的sdk唤醒京东app打开商品的详情。项目中的appkey需要自己申请,在这文章主要记录本人学习写插件的过程。

项目地址

总体的效果如下所示:

898b5edd0f7f65e533ea4278238f6a44.gif

创建插件工程

通过Android stuido 工具来创建插件工程,其他方式可以用命令来创建。

da92ee6a35ad3fd15c0bb66febf6cbcd.png

写上包名就可以,这里默认不选,指的是插件以java和oc的实现。下一步等待创建完成。

9df4a929efa6829e64fc3b3ab8d26440.png

创建后的工程目录

02ace80464e30584cd4ae134407f62b2.png

lib:插件flutter调用原生的代码

android: 实现Android的插件代码

ios: 实现ios的插件代码

example: 默认示例的代码

编译和运行ios插件示例

这里先把创建的插件工程编译和运行起来,因为ios有些坑需要记录下。不像android那样直接跑就行了。

首先需要在example工程下的ios目录,执行futter build ios,主要是需要pod install,生成xxx.workspace的一些配置

flutter build ios

运行xcode ,报错Building for iOS, but the linked and embedded framework ‘App.framework’,如果你能顺利跑起来,无视接下来的解决方案,跳过就此小节。

回到项目的根目录,执行flutter clean

flutter clean

然后删除ios/Flutter/App.framework

rm -rf ios/Flutter/App.framework

再次运行xcode就可以了。

编写flutter的插件调用代码

打开lib目录,默认有一个官方提供的方法是调用原生代码获取版本号的功能。本项目有两个功能,一个是京东sdk的初始化,一个是通过京东商品的url唤醒京东app的商品详情页。

import 'dart:async';

import 'package:flutter/foundation.dart';

import 'package:flutter/services.dart';

class Jdsdk {

static const MethodChannel _channel =

const MethodChannel('jdsdk');

static Future get platformVersion async {

final String version = await _channel.invokeMethod('getPlatformVersion');

return version;

}

///初始化sdk

static Future init({@required String appKey, @required String appSecret}) async {

final String version = await _channel.invokeMethod('init',{"appKey": appKey, "appSecret": appSecret});

return version;

}

///打开京东任意url

static Future openUrl({@required String url}) async {

final String version = await _channel.invokeMethod('openUrl',{"url": url});

return version;

}

}

导入SDK的Bundler和Framework

这里演示ios端添加京东sdk的几个步骤

sdk的内容有两个,一个bundle,一个Framework

d06413d24931eb136efa6c42f46f07c2.png

打开xcode工程,通过下面的方式打开,还可以使用example目录下的ios目录打开也一样

d63ee4a0be0453ffdce83d332c80438a.png

JDSDK.bundle的添加,这里选择了copy item和Create groups。这个bundle下面只有一张safe.jpg的安全图片,需要到京东官方后天管理去下载生成才可以用。

ed8a021e0b00669ee53e6dc2d9626f97.png

4.Framework的添加

新建Framework文件夹,并将SDK的framework拉入该文件夹下。

c807ec6179e34d580a5143a672a37973.png

回到xcode工程,添加刚刚framework,弹框不用选择copy。

d88e3473ba3605b393bb18a4f1279774.png

添加几个系统的库,这是接入文档要求的。

c42dcce052eaddae68f355661661d186.png

最后在插件podspec文件,添加如下代码,终端进入example下ios目录执行pod install

s.vendored_frameworks = 'Framework/*.framework'

开发ios原生的实现接口

目录有点深,看图

3a1dee5864ed126a5f66285b56135648.png

JdsdkPlugin.m就是要实现的原生代码,handleMethodCall就是dart调用的函数。直接上代码,init 和openUrl就是上面lib目录定义的接口参数要一致,不然调用不到。

- (void)handleMethodCall:(FlutterMethodCall*)call result:(FlutterResult)result {

if ([@"getPlatformVersion" isEqualToString:call.method]) {

result([@"iOS " stringByAppendingString:[[UIDevice currentDevice] systemVersion]]);

} else if ([@"init" isEqualToString:call.method]) {

NSLog(@"init flutter");

//初始化sdk具体实现

NSString *appKey = call.arguments[@"appKey"];

NSString *appSecret = call.arguments[@"appSecret"];

NSLog (@"appKey is :%@", appKey);

NSLog (@"appSecret is :%@", appSecret);

[[KeplerApiManager sharedKPService]asyncInitSdk:appKey secretKey:appSecret sucessCallback:^(){

NSLog (@"success");

result(@"{status:1}");

}failedCallback:^(NSError *error){

NSLog (@"fail");

result(@"{status:0}");

}];

}else if ([@"openUrl" isEqualToString:call.method]) {

//打开京东任意url

NSString *url = call.arguments[@"url"];

if ([[UIApplication sharedApplication]canOpenURL:[NSURL URLWithString:[NSString stringWithFormat:@"openapp.jdmobile://"]]]) {//判断是否安装京东app

[ [KeplerApiManager sharedKPService]openKeplerPageWithURL:url userInfo:nil successCallback:^{

NSLog (@"success");

result(@"{status:1}");

} failedCallback:^(NSInteger code, NSString * _Nonnull url) {

NSLog (@"fail");

result(@"{status:0}");

}];

}else{

result(@"{status:0}");

}

}else {

result(FlutterMethodNotImplemented);

}

}

具体如何使用?

本文地址:https://blog.csdn.net/weixin_42797048/article/details/106750190

希望与广大网友互动??

点此进行留言吧!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值