Uma biblioteca React Native para suporte a APIs Wechat em Android e iOS
Consulte Expo Native Wechat
A maioria dos desenvolvedores que usam React Native para construir aplicativos não estão equipados com habilidades de desenvolvimento nativas, sem mencionar a conexão de seus aplicativos com o WeChat.
Especialmente, o WeChat OpenSDK é algo chato por causa de documentos de merda onde muitas APIs não são claras e intuitivas. Para ajudar os desenvolvedores que usam React Native, tentei ao máximo criar esta biblioteca. E espero que você se beneficie disso e fique menos frustrado com o WeChat.
Antes de invocar qualquer API, é essencial registrar o Native WeChat invocando registerApp
.
import { registerApp } from 'native-wechat' ;
useEffect ( ( ) => {
return registerApp ( 'wx964290141ebe9b7b' ) ;
} , [ ] )
Ao invocar registerApp
, haverá um ouvinte para receber eventos do Wechat. registerApp
retorna uma função para remover o ouvinte e nenhum evento será recebido do Wechat.
Agora é a hora de invocar a API. Por exemplo, enviaremos uma solicitação de autenticação ao Wechat e receberemos o código. Você pode usar a API chamada sendAuthRequest
aqui.
import { registerApp , sendAuthRequest } from 'native-wechat' ;
import { Button , Text } from 'react-native' ;
import { verifyWechatCode } from '@/api/auth/wechat'
useEffect ( ( ) => {
registerApp ( 'wx964290141ebe9b7b' ) ;
} , [ ] )
const onButtonClicked = async ( ) => {
const { data : { code } } = await sendAuthRequest ( ) ;
await verifyWechatCode ( code ) ;
}
return < Button onClick = { onButtonClicked } >
< Text > Send Auth Request </ Text >
</ Button >
A maioria das APIs no Native WeChat são prometidas. O mesmo acontece com sendAuthRequest
, que retornará uma promessa. Quando o usuário confirma a solicitação no Wechat, a promessa é resolvida como dados com um código. Todas as APIs prometidas retornam um tipo genérico chamado NativeWechatResponse
.
export type NativeWechatResponse < T = Record < string , unknown > > = {
type : string ;
errorCode : number ;
errorStr : string | null ;
data : T ;
} ;
Se você tiver problemas para usar esta biblioteca, não hesite em abrir um problema. Estou sempre aqui para ajudar.