日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/10 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 京东下单接口sdk java,Flutter 插件开发-接入京东SDK唤醒(ios篇) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Flutter 插件開發-實戰京東SDK喚醒(ios)

本項目基于Flutter版本1.12開發,功能是flutter可以通過京東的sdk喚醒京東app打開商品的詳情。項目中的appkey需要自己申請,在這文章主要記錄本人學習寫插件的過程。

項目地址

總體的效果如下所示:

創建插件工程

通過Android stuido 工具來創建插件工程,其他方式可以用命令來創建。

寫上包名就可以,這里默認不選,指的是插件以java和oc的實現。下一步等待創建完成。

創建后的工程目錄

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

打開xcode工程,通過下面的方式打開,還可以使用example目錄下的ios目錄打開也一樣

JDSDK.bundle的添加,這里選擇了copy item和Create groups。這個bundle下面只有一張safe.jpg的安全圖片,需要到京東官方后天管理去下載生成才可以用。

4.Framework的添加

新建Framework文件夾,并將SDK的framework拉入該文件夾下。

回到xcode工程,添加剛剛framework,彈框不用選擇copy。

添加幾個系統的庫,這是接入文檔要求的。

最后在插件podspec文件,添加如下代碼,終端進入example下ios目錄執行pod install

s.vendored_frameworks = 'Framework/*.framework'

開發ios原生的實現接口

目錄有點深,看圖

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

希望與廣大網友互動??

點此進行留言吧!

總結

以上是生活随笔為你收集整理的京东下单接口sdk java,Flutter 插件开发-接入京东SDK唤醒(ios篇)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。