手机:15966888888
电话:010-8888999
邮箱:imtoken@mail.com
地址:青岛润科翔电气有限公司
ImToken的开放接入路径, 它主要就是两个样子, 一个是移动端SDK嵌入这个方式, 另外一个呢, 是基于WalletConn...
24小时咨询热线:4006666888
产品详情
ImToken的开放接入路径, 它主要就是两个样子, 一个是移动端SDK嵌入这个方式, 另外一个呢, 是基于WalletConnect和iframe去实现DApp唤起。
它的核心能力主要围绕钱包签名这一项、账户管理那一块儿, 还有链上交互这回事儿来展开, 这里头的私钥是不出用户设备的, 开发者从始至终都走用户的授权流程这样一套操作。
官方的GitHub仓库里面有SDK的相关文档, 这些文档覆盖了Android系统和iOS系统这两个平台。我在实际进行接入操作的时候发现, 文档里面关于RPC方法列表的更新速度要比npm这个包的发布速度快一些, 所以在去拉取代码之前, 最好先把提交记录翻一遍看看, 不要仅仅只是去看那些版本说明文档。
关于那个SDK初始化的代码, 它看起来虽然简单, 但是你需要清楚地知道, 错误处理回调函数里面其实是隐藏了超过三种不同的时间过长状况。技术文档里头仅仅用一句话就带过了这个事儿, 所以你必须自己去编写专门的测试用例, 只有这样才有可能把所有的情况都覆盖到。

我回想起来, 最开始的时候我在处理超时的问题上采取了一种很僵硬的做法, 直接把等待的时间设定为了三秒钟, 可是后来在实际观察当中我发现, 在网络信号比较差的那种环境之下, 也就是所谓的弱网的情况里, 链条上的各个节点做出回应所花费的时间竟然能够达到八秒钟这么久, 于是我就不得不做出改变, 把这个固定的数值调整成了一个可以被人自由设置的参数选项。
在签名的这个环节里, 大家最容易撞上的那个坑, 就在于chainId校验这一块儿。因为ImToken这个软件, 是在2.0这个版本之后, 把它的多链架构给重新改了改的, 那这就导致EIP-155加上的那个前缀, 还有原生币种用来算gas费的那个方法, 跟以前的老路子就不一样了。
所以, 如果那些比较老的项目, 在升级了SDK这个软件包之后, 不跟着去把这个rpc服务里的chainId参数也改掉, 那么用户那边的客户端, 就会直接弹出来一个“不支持的链”这样一个提示来让用户知道出事了。
我曾在 Polygon 项目那边遇到过同样的失误, 当用户点击确认进行交易的时刻, 整个流程直接卡住不动, 我们足足排查了整整两天, 最后才查明原因是 SDK 内部将 chainId 这个参数给写死了, 具体数值就是 1, 后来我们补上了一个切换到 eth 主链的兜底逻辑, 这才避免事故的发生。
将对接任务全部执行完毕以后, 请务必把SDK的版本号码进行锁定处理, 不要继续使用latest这种表示最新版本的字样。因为ImToken的发布频率是不低的, 所以在跨越大的版本之间时,接口的签名操作经常会出现断裂的情况, 对版本号码做锁定处理是为了至少给自己留下一点缓冲的时间与空间来应对这种状况。
鲁公安备11017697号 Powered:Z-BlogPHP Thems:GebiLaoli