摘要:序公司因为业务需要,开发安卓扫描枪打印快递单之类的,踩了一天的坑,终于在队友帮助下搞定原理很简单,利用打印机的通信话不多说,直接撸代码因为不支持通信,所以需要自己编写原生去实现连接打印机失败上面是一个原生方法,怎么写原生我就不说了,百度下就
序
公司因为业务需要,开发安卓扫描枪打印快递单之类的,踩了一天的坑,终于在队友帮助下搞定
原理很简单,利用打印机的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,就得有写原生的准备,嗯,现在也是深表同意
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/93721.html
摘要:前奏这篇文章仅对不熟悉在中使用的人以及入门者有帮助。基本介绍想要实现一种实时的双向通信聊天系统,你可能会想到轮询长或短,但你最想要的还是的实现。客户端的实现端的实现,才是我们应该关注的重点。 前奏 这篇文章仅对不熟悉在react中使用socket.io的人、以及websocket入门者有帮助。 下面这个动态图展示的聊天系统是用react+express+websocket搭建的,很模糊...
摘要:为了达到这种双向的实时消息传递,很明显地考虑用来实现。注意这个文件并不能用在实际的项目中,只是用来显示消息推送的效果而已。参考资料本文在我博客上的原地址利用实现消息实时推送 项目背景介绍 最近在写的项目中存在着社交模块,需要实现这样的一个功能:当发生了用户被点赞、评论、关注等操作时,需要由服务器向用户实时地推送一条消息。最终完成的项目地址为:socket-message-push,这里...
阅读 975·2023-04-25 19:35
阅读 2528·2021-11-22 09:34
阅读 3636·2021-10-09 09:44
阅读 1688·2021-09-22 15:25
阅读 2917·2019-08-29 14:00
阅读 3353·2019-08-29 11:01
阅读 2575·2019-08-26 13:26
阅读 1718·2019-08-23 18:08