公司因为业务需要,开发安卓扫描枪打印快递单之类的,踩了一天的坑,终于在队友帮助下搞定

原理很简单,利用打印机的socket通信

话不多说,直接撸代码

因为js不支持Socket通信,所以需要自己编写原生去实现

@ReactMethod

public void print(String ip,Integer port, String msg, Promise promise) {

try{

Socket socket = new Socket(ip, port);

if (socket.isConnected() ) {

InputStream inputStream = socket.getInputStream();

OutputStream os = socket.getOutputStream();

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));

bw.write(msg);

bw.flush();

promise.resolve("success");

} else {

promise.reject("连接打印机失败");

}

}catch (Exception ex){

promise.reject(ex.fillInStackTrace());

}

}

上面是一个原生方法,怎么写原生我就不说了,百度下就知道

开始的时候也遇到个小坑,VSCode的import java Class 是在糟糕,求看到人推荐个好用的插件,总之就是尽然不识别 promise类!!

啊,尴尬,后来看了下react-native-camera的源码,看到的是加了

import com.facebook.react.bridge.Promise;

好吧,还是手动引入了(勿喷,本人之前没写过原生,总有第一次嘛,?)

之后的话就是在前端调用就可以了

import { NativeModules } from 'react-native'

NativeModules.PrintExtension.print(

printAddr.split(':')[0],

printAddr.split(':')[1]*1,

'^XA^FO100,75^BY3^B3N,N,100,Y,N^FD123ABC^XZ').then((c) => {

console.log(c)

if (c!=="success") {

Modal.alert('打印失败', c, [

{ text: '确定'},

])

}

},(c)=>{

console.log(c)

})

记得之前看过某个人写的文章说到,你写RN,就得有写原生的准备,嗯,现在也是深表同意

react怎么连接打印机_React Native Socket 连接打印机推送指令相关推荐

  1. React Native集成友盟推送

    React Native集成友盟推送 android推送集成 1.导入SDK: (1)push文件夹位置: (2)将push文件夹直接复制粘贴到rn项目android目录下,目录结构如下: 2.添加修 ...

  2. Python连接钉钉群机器人每天自动推送国外天气

    Python连接钉钉群机器人每天自动推送国外天气 一.天气获取 我使用的是openweather api,这个api的官方文档写的十分详细,链接:openweather 打开链接,界面如下: 目前只有 ...

  3. 三星s9系统更新无法连接服务器,三星 S9/S9+ 手机开始推送 One UI 2.1 系统固件更新...

    IT之家6月15日消息 外媒SamMobile报道,三星Galaxy S9和Galaxy S9+现在正在获取其最新的重大更新OneUI 2.1,今天开始在韩国和德国版三星S9/S9+中推送.上一周,德 ...

  4. React Native集成极光消息推送

    极光IOS消息推送证书一键生成地址:https://onesignal.com/provisionator 一.申请激光账号并创建应用:地址:https://www.jiguang.cn 二.IOS推 ...

  5. SpringBoot使用Socket向前端推送消息

    个人资源与分享网站:http://xiaocaoshare.com/ 1.对webSocket理解 WebSocket协议是基于TCP的一种新的网络协议.它实现了浏览器与服务器全双工(full-dup ...

  6. 引入react文件报错_React Native常见问题(一)

    以下是在开发产品3个月以来遇到多的问题,希望可以帮助到遇到同样问题的小伙伴们 一 node端口被占用(找不到入口): lsof -i:3009:查看所有3009端口 kill -9 14937 干掉1 ...

  7. native react 图片多选_React Native中加载图片的各种姿势

    初使用Image,由于在React Native中图片资源来源丰富,刚开始我也是一脸懵逼,在几番尝试以后,终于了然 加载项目目录图片 在项目目录中新建一个Directory,命名img,拷贝一张名为' ...

  8. native react 集成微信登录_React Native 接入微博、微信、QQ 登录功能

    在 App 开发中我们经常需要在用户登录模块接入 SNS 登录组件,这样会大大提高用户的注册体验.特别当一个不是刚性需求 App 推广的时候,这样会很大的降低用户体验的成本,没有人愿意忍受输入邮箱.手 ...

  9. native react 集成微信登录_react native 接入微信登陆(Android)

    添加依赖 api 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+' 包名.wxapi.WXEntryActivity.java pub ...

最新文章

  1. git ingore添加忽略文件无较的解决方法
  2. hive hql文档_30分钟入门 Hive SQL(HQL 入门篇)
  3. 【Java语法】抽象类、接口、内部类
  4. 如何在shell单元建立washer_如何成为一个优秀的工程师
  5. 【CF1204D】Kirk and a Binary String【结论题】【LIS】
  6. 每天两小时,吃透法国TOP双硕专家匠心打造的这套目标检测、卷积神经网络和OpenCV学习笔记(保姆级/20G高清/PPT/代码)...
  7. lua里面的客户端服务器协议,Lua 服务器与客户端实例(转)
  8. 如何更好地利用JavaScript数组
  9. 新生赛3 1003 字符串最小表示法题目
  10. Excel控件 Spire.XLS系列教程(2):C# 设置现有 Excel 图表的数据标签样式
  11. Silverlight Quick Starts翻译(二):第一章 创建一个Silverlight工程
  12. 中保车服灾备云,为保险公司“上保险”
  13. 静态反编译软件:IDA Pro for Mac
  14. MYSQL下载及安装完整教程
  15. JS原型与原型链总结
  16. oracle下的inventory文件夹,Oracle软件安装目录信息Inventory作用以及如何重建此目录 - 2...
  17. mysql pdo 端口_链接Mysql的api mysqli和pdo
  18. 在python中设置静态变量
  19. linux-patch用法
  20. execl筛选去重_Excel中表格筛选去重复项的操作方法

热门文章

  1. 加仓减仓口诀_加仓减仓的最佳方法:金字塔法则!
  2. 门禁闸机机芯编码器回位调节
  3. Python+Matplotlib可视化三次贝塞尔曲线的4个调和函数
  4. java holder_这个Holder 在Java中做什么? - java
  5. BMF文件一开始能用,SVN提交之后不可用
  6. Slicer学习笔记(三十九)slicer中Markups模块
  7. JS控制方块自动移动
  8. Kind Kubernetes | 通过 Helm 部署定制化 Prometheus-Operator 上传 Dockerhub?
  9. 【西安安泰】线束测试仪基于航天器低频电缆测试中的应用
  10. Unity3d解决Fbx动画不可用:The AnimationClip ‘xxx‘ used by the Animation component ‘xxx‘ must be marked...