1***@qq.com
1***@qq.com
  • 发布:2023-07-24 02:15
  • 更新:2023-10-11 14:21
  • 阅读:1020

uniapp开发dapp浏览器

分类:uni-app

看到论坛上有人提过这个问题,回答也都是零零碎碎的,有没有大佬可以系统的讲解一下?

我把我自己的需求描述一下,我用uniapp写了一个虚拟货币的钱包app,现在需要在app中添加一个dapp的浏览器功能!

我用的uniapp vue页面放置了<web-view>的标签组件,打开一个远程的三方web3网站 (这个网站可以是任意的web3网站),根据uniapp的文档描述,一个vue页面就是一个webview,那么打开这个web3网站的webview就是一个子webview。由于这个子webview没有web3环境,我看论坛上也有人提出了说是要注入web3.js,我也根据文档利用 appedjsfile 注入了。

现在问题是,注入以后应该如何交互呢? 如何让打开的远程web3网站能识别到我钱包app中的地址,并且登录以后做签名,交易 这些动作呢?

按我的理解应该是app要与这个子webview通信,比如app需要提供dapp网站登录的地址和签名等等信息,然后操作web3网站的时候,比如需要交易,这个时候需要通知app让用户操作授权等等。

但是我搜索出来的 好像都是 webview打开自己的页面 (不管是本地还是远程,都是自己可控的页面)里面加入 uni.webview.js,然后 uni.postmessage 。那远程的不可控的网站这种如何操作?

不知道我上面理解的对不对,有没有懂的朋友说一下大概的流程?或者愿意交流的朋友可以跟帖探讨一下!

如果有写过的朋友愿意提供代码片段也可以有偿

2023-07-24 02:15 负责人:无 分享
已邀请:
喜欢技术的前端

喜欢技术的前端 - QQ---445849201

1、用appendJsFile给你的html注入web3.js
2、在web3.js中 重写一下 Provider,比如说获取eth_requestAccounts,当你切换钱包的时候,得把当前的address存到本地,dapp中获取eth_requestAccounts的时候,给返回去

  • 1***@qq.com (作者)

    感谢回复,这个第一点里面 appendjsfile web3.js 是注入到 打开web3网站的子webview中吗? 另外注入以后子webview如何跟app通信呢? 第二点 web3.js 重写 provider,这个不是用web3.min.js 这个吗?是需要自己写一个web3js ? 目前这些问题应该都是卡在了 如何验证 uniapp 的webview组件是否成功注入web3.js 和 这个子webview如何跟app通信问题上。

    2023-07-25 01:05

1***@qq.com

1***@qq.com (作者)

顶一下

Diligent_UI

Diligent_UI - 【插件开发】【专治疑难杂症】【多款插件已上架:https://ext.dcloud.net.cn/publisher?id=193663(微信搜索飘逸科技UI小程序直接体验)】【骗子请绕道】问题咨询请加QQ群:120594820,代表作灵感实用工具小程序

官网有webview如何跟app通信例子

  • 1***@qq.com (作者)

    官方是加载自己可控的url,然后引用uni.webview.js ,这个我是打开三方的远程url,不可控我尝试过注入uni.webview.js到子webview,然后evaljs uni.postmessage 不成功。

    2023-07-25 15:25

1***@qq.com

1***@qq.com (作者)

有其他看官可以给点思路或者方法不?

喜欢技术的前端

喜欢技术的前端 - QQ---445849201

1.在uni-app的页面中用plus.webview.create 创建一个窗口,窗口的地址就是dapp的地址,appendjsfile web3.js 是注入到dapp的这个页面中的

  1. 注入的web3.js 中,在原来的web3.js 中改造一下,重写 provider,dapp其实是和你的web3.js在交互
  • 1***@qq.com (作者)

    dapp其实是和web3.js在交互,这个没理解是怎么个交互方式!可以贴点代码吗?

    vue页面<web-view>这个标签创建的子webview 有@message 来监听子webview收到的消息,plus create创建的子webview如何监听它收到的来自app应用发送给它的消息呢?比如 地址和签名 这些信息 ?

    2023-07-26 00:41

  • 喜欢技术的前端

    回复 1***@qq.com: dapp要获取地址,不是直接发消息给app,而是被你改过的的web3.js 所拦截,地址是你在钱包中切换的时候,plus.storage.setItem存起来,在获取的时候 plus.storage.getItem取出来的

    2023-07-26 17:46

  • 1***@qq.com (作者)

    回复 喜欢技术的前端: 方便贴一下web3.js 代码吗? 是怎么个拦截法呢? 这个web3.js 是在官网下载回来的js里面添加拦截代码吗?还是单纯的就是自己写的拦截代码?

    2023-07-29 23:46

1***@qq.com

1***@qq.com (作者)

顶一下,期待更多大神一起交流

  • 2***@qq.com

    请问实现功能了吗?

    2023-10-11 17:44

3***@qq.com

3***@qq.com

可以去了解一下EIP-1193,把Ethereum对象重写就行很简单的

2***@qq.com

2***@qq.com

请问做出来了吗?

要回复问题请先登录注册