簡體   English   中英

使用 react-native 檢查手機上是否安裝了 Metamask 應用程序

[英]Check if Metamask app is installed on the phone using react-native

我正在使用react-native構建一個應用程序。 我正在使用 React Native 的Linking API 在手機上安裝的 metamask 應用程序中打開我的網站鏈接。 如果設備上安裝了 metamask 應用程序,則Linking.opneURl(url)可以正常工作。 問題在於,如果設備上未安裝 Metamask,它會在瀏覽器中打開鏈接。
我想要做的是應用檢查,如果設備上未安裝 Metamsk 應用程序,將要求用戶安裝該應用程序,否則它應該在 metamask 應用程序中正常打開。 到目前為止,我已經使用了linking API 和react-native-check-app但我沒有得到我想要的結果。

您需要通過 metamask 移動應用程序瀏覽器從移動應用程序打開您的鏈接。 我們目前知道的方式是,您可以將 url 鏈接到 metamask, Linking是 React Native 的內置功能。 單擊按鈕后,選擇 metamask 將在 metamask 瀏覽器中打開metamask-auth.ilamanov.repl.co作為http://metamask-auth.ilamanov.repl.co 單擊連接錢包后,您可以選擇 metamask 移動應用程序,在自行瀏覽您的 dApp 鏈接后,它可以使用 metamask 進行身份驗證。

import React, { useCallback } from "react";
import { Alert, Button, Linking, StyleSheet, View } from "react-native";
const yourDappLink = "metamask-auth.ilamanov.repl.co"  // change or create yourself
const supportedURL = "https://metamask.app.link/dapp/"+yourDappLink;


const OpenURLButton = ({ url, children }) => {
  const handlePress = useCallback(async () => {
    // Checking if the link is supported for links with custom URL scheme.
    const supported = await Linking.canOpenURL(url);

    if (supported) {
      // Opening the link with some app, if the URL scheme is "http" the web link should be opened
      // by some browser in the mobile
      await Linking.openURL(url);
    } else {
      Alert.alert(`Don't know how to open this URL: ${url}`);
    }
  }, [url]);

  return <Button title={children} onPress={handlePress} />;
};

const App = () => {
  return (
    <View style={styles.container}>
      <OpenURLButton url={supportedURL}>Connect Wallet</OpenURLButton>
    </View>
  );
};

const styles = StyleSheet.create({
  container: { flex: 1, justifyContent: "center", alignItems: "center" },
});

export default App;

請參考官方文檔中的這一部分。 從文檔中提取:

確定已安裝的應用程序是否可以處理給定的 URL。 該方法返回 Promise object。 當判斷給定的URL是否可以處理時,promise就解決了,第一個參數是是否可以打開。

然后你可以 go 像這樣實際使用:

const isInstalled = await Linking.canOpenURL("yourUrl");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM