Metamask 确认按钮为蓝色,但在移动应用程序中不响应点击(点击),但相同的 JS 代码在桌面上工作 - 自定义 BSC 令牌

问题描述 投票:0回答:4

Metamask 确认按钮不起作用,无法确认智能合约交易。

我使用JS和WalletConnectProvider(网站项目)。通过 WalletConnect 连接到 Metamask,然后调用自定义代币合约的转账函数。我在桌面上使用相同的代码,它可以工作并传输令牌。完全相同的代码不适用于移动设备(对于 Metamask 移动应用程序)。检查了 IOS 和 Android - 同样的问题。 请告诉我我的代码有什么问题:


<script src="https://cdn.jsdelivr.net/npm/@walletconnect/[email protected]/dist/umd/index.min.js"></script>
<script src="https://[mywebsitescriptspath]/web3.min.js"></script> // 1.8.0



<script type="text/javascript">

var contract
var accountFrom
const ABI = "... abi here....."

var provider = new WalletConnectProvider.default({
                        
infuraId: 'my infura id',
            
rpc: {
    1: "https://mainnet.infura.io/v3/[myinfuraid]",
    56: "https://bsc-dataseed.binance.org/"
    },
                
})


const contractAddress = '0xcontraddresshere'
const receiver = '0xreceiveraddresshere'

var connect = async () => {


await provider.enable()

var web3 = new Web3(provider)
                    
web3.givenProvider = web3.currentProvider
web3.eth.givenProvider = web3.currentProvider
web3.eth.accounts.givenProvider = web3.currentProvider



window.w3 = web3
        
contract = new w3.eth.Contract(ABI, contractAddress)



await w3.eth.getAccounts().then(accounts => {
                
    accountFrom = accounts[0]

    })

}

connect()

// function called after the button click
var sendtransaction = async () => {


let vall = 100
let calcAmount = w3.utils.toWei(vall.toString())

let transfer =  await contract.methods.transfer(receiver, calcAmount);

await transfer.send({from: accountFrom})
.on('transactionHash', function(hash){

   console.log(hash)

})



}


</script>

我尝试了很多不同的方法,但都不起作用。

在 wifi、4g、不同的移动浏览器、不同的智能手机(Android 和 IOS)上进行了测试。 没有成功。

问题从 5.9.0 Metamask 应用程序版本开始。

更新: 现在在 5.10.0 版本中,它无法识别自定义合约令牌。例如,当我想转移1个代币时,它显示1个BNB。 上一个版本更好:))

github 上有未解决的问题:

  1. https://github.com/MetaMask/metamask-mobile/issues/5193
  2. https://github.com/MetaMask/metamask-mobile/issues/5235
  3. https://github.com/MetaMask/metamask-mobile/issues/5260

14 天后,至今仍未找到解决方案。

javascript web3js metamask wallet-connect
4个回答
0
投票

更改版本元掩码,工作版本 - 5.7.0


0
投票

针对 IOS 16.1.1 更新的 Metamask 5.11.0 已解决此问题。将您的 Metamask 应用程序更新至 5.11.0。

参考:https://github.com/MetaMask/metamask-mobile/issues/5260


0
投票

是的,实际上他们没有解决问题。

就我而言,不同的ERC20代币有不同的结果。

在此令牌上,蓝色确认按钮不起作用。 https://etherscan.io/token/0x377e0c5d3738FAcd2D4c1CA192c774e978E8e95b#writeContract

但是在 USDC 上(0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48) 效果很好。

iOS 版本 16.1.2 MetaMask v5.12.0


0
投票

我一整年都在使用 MetaMask 时遇到这些问题。这只发生在我的 iPhone 上,因此我实际上必须通过桌面进行大部分交易。通常尝试连接到钱包或签署交易根本不会打开钱包。

© www.soinside.com 2019 - 2024. All rights reserved.