You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RainbowKit的PhantomWallet连接器在移动端无法正常显示

iOS Chrome中RainbowKit不显示Phantom钱包的解决方案

问题根源

iOS版Chrome受Apple WebKit沙盒机制限制,无法与Phantom这类原生钱包App完成交互,RainbowKit会自动隐藏当前环境不支持的钱包连接器,所以你看不到Phantom选项。

解决步骤

1. 强制显示Phantom钱包选项(需搭配提示)

你可以手动修改Phantom连接器的环境检测逻辑,让它在iOS Chrome中显示,但要注意用户点击后无法直接跳转App,必须配合提示引导用户换浏览器。修改代码如下:

import { connectorsForWallets } from '@rainbow-me/rainbowkit';
import { phantomWallet } from '@rainbow-me/rainbowkit/wallets';
import { createConfig, http } from '@wagmi/core';
import { arbitrumSepolia } from 'viem/chains';
import { fallback } from 'viem';

// 自定义Phantom连接器,强制在iOS Chrome环境下显示
const customPhantomWallet = {
  ...phantomWallet,
  isAvailable: () => {
    const isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
    const isChromeIOS = /CriOS/.test(navigator.userAgent);
    // 优先检测iOS Chrome,其他环境沿用原检测逻辑
    return isIOS && isChromeIOS ? true : phantomWallet.isAvailable();
  },
};

const connectors = connectorsForWallets(
  [
    {
      groupName: 'Recommended',
      wallets: [customPhantomWallet], // 使用自定义的连接器
    },
  ],
  {
    appName: '你的应用名称', // 替换成你的实际appName
    projectId: '你的WalletConnect ProjectID', // 替换成你的实际projectId
  }
);

const wagmiConfig = createConfig({
  connectors,
  ssr: false,
  chains: [arbitrumSepolia],
  transports: {
    [arbitrumSepolia.id]: fallback([
      http('https://sepolia-rollup.arbitrum.io/rpc'),
    ]),
  },
});

2. 添加环境提示

在连接按钮附近或弹窗中添加明确提示:

提示:iOS用户请使用Safari浏览器或Phantom内置浏览器打开应用,以正常连接Phantom钱包

3. 最优方案:引导用户使用兼容浏览器

iOS上只有以下方式能正常连接Phantom钱包:

  • 直接使用Phantom App内置的浏览器打开你的应用
  • 使用Safari浏览器访问应用

内容的提问来源于stack exchange,提问作者Petr Stoklas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 12:10:13