手机:15966888888
电话:010-8888999
邮箱:imtoken@mail.com
地址:青岛润科翔电气有限公司
imtoken对接钱包说白了, 就是把事情变得直白, 意思就是让去中心化应用能够认出imtoken钱包, 并且调用它进行签名和交...
24小时咨询热线:4006666888
产品详情
imtoken对接钱包说白了, 就是把事情变得直白, 意思就是让去中心化应用能够认出imtoken钱包, 并且调用它进行签名和交易的功能。
我这个人以前前后后都给三个不同的项目做过这件事情, 遇到过的坑儿, 比顺顺利利走过的路还要多得多。这篇东西会把核心的整个过程都讲得清清楚楚的, 绝对不干虚头巴脑的那些事儿。
整个的流程分为三个具体的步骤。第一步是注入provider, 第二步是去监听账户的变动情况, 第三步则是进行sign或者send这样的调用操作。最关键的部分其实是在provider这个地方。
imtoken采用的是Injected Provider这种方式, 它的表现类似于MetaMask里面的window.ethereum。因为这个原因, 所以你不需要自己再去额外地引入什么SDK工具包。
但是移动端采用的是独立App的形式, 而不是浏览器插件这种形式, 所以必须要通过建立深链接的方式来引发跳转操作, 如果在Android系统上, 应当使用intent://这种方式来进行配置, 而如果在iOS系统上, 则应当使用自定义的URL scheme来进行配置, 一旦把这些技术细节写错了, 当用户去点击相关链接的时候, 就完全得不到任何反应结果, 此时用户就会错误地认为该项目已经完全崩溃并且挂掉了。

调整签名的逻辑和交易处理的流程, 都是去遵循那个标准的EIP-1193 Provider接口来进行操作, 这个实现方式跟MetaMask的做法基本上是一样的。
但是imtoken里面有一个比较隐蔽的问题需要注意, 就是它在连接成功之后,并不会直接把地址返回回来,这个信息需要开发者自己去调用eth_requestAccounts这个方法, 然后从这里边把地址给取出来才行。
在进行交易的环节里, imtoken会产生它自身确认界面, 你只需要把raw tx参数传送进去, 具体包含to、data、value、gas这些内容, 至于gas price它就会自行计算。
在我之前参与的项目工作当中, 存在着把gas写死的情况, 结果导致用户那边频繁出现交易失败的现象, 经过很长时间的排查, 最终才查明原因是因为imtoken的gas策略跟别的钱包不一样这一事情。
所有的陷阱其实是隐藏在细节里面的, 所以把官方的示例代码直接运行一遍, 这个事情的作用肯定是比看十篇教程还要大的。
相关推荐
鲁公安备11017697号 Powered:Z-BlogPHP Thems:GebiLaoli