[React Native] bridging library that integrates WeChat SDKs:
- iOS SDK 1.9.2
- Android SDK 6.8.0
首先向各位声明,本库是在 react-native-wechat-lib 基础上进行调整。
由于 react-native-wechat-lib 所使用的 WeChat SDK 已经是几年前的版本,考虑到自身使用和其它开发者的需要,最终决定开一个新仓库,提供给新项目使用。
最后
感谢 yorkie 和各位开发者为 react-native-wechat 做出的贡献。
感谢 little-snow-fox 和各位开发者为 react-native-wechat-lib 做出的贡献。
npm install react-native-mwechat --save
react-native link react-native-mwechat
本库支持 TypeScript
,使用 Promise
或 async/await
来接收返回。
接口名称和参数尽量跟腾讯官网保持一致性,除了嵌套对象变成扁平对象,你可以直接查看腾讯文档来获得更多帮助。
appid
{String} the appid you get from WeChat dashboard- returns {Boolean} explains if your application is registered done
This method should be called once globally.
import * as WeChat from 'react-native-mwechat';
WeChat.registerApp('appid', 'universalLink');
- returns {Boolean} if WeChat is installed.
Check if the WeChat app is installed on the device.
- returns {Boolean} Contains the result.
Check if wechat support open url.
- returns {String} Contains the result.
Get the WeChat SDK api version.
- returns {Boolean}
Open the WeChat app from your application.
scope
{Array|String} Scopes of auth request.state
{String} the state of OAuth2- returns {Object}
Send authentication request, and it returns an object with the following fields:
field | type | description |
---|---|---|
errCode | Number | Error Code |
errStr | String | Error message if any error occurred |
openId | String | |
code | String | Authorization code |
url | String | The URL string |
lang | String | The user language |
country | String | The user country |
ShareTextMetadata
name | type | description |
---|---|---|
text | String | 分享文本 |
scene | Number | 分享到, 0:会话 1:朋友圈 2:收藏 |
Return:
name | type | description |
---|---|---|
errCode | Number | 0 if authorization successed |
errStr | String | Error message if any error occurred |
import * as WeChat from 'react-native-mwechat';
WeChat.shareText({
text: 'Text content.',
scene: 0
})
ShareImageMetadata
name | type | description |
---|---|---|
imageUrl | String | 图片地址 |
scene | Number | 分享到, 0:会话 1:朋友圈 2:收藏 |
Return:
name | type | description |
---|---|---|
errCode | Number | 0 if authorization successed |
errStr | String | Error message if any error occurred |
import * as WeChat from 'react-native-mwechat';
WeChat.shareImage({
imageUrl: 'https://google.com/1.jpg',
scene: 0
})
ShareImageMetadata
name | type | description |
---|---|---|
imageUrl | String | 图片地址 |
scene | Number | 分享到, 0:会话 1:朋友圈 2:收藏 |
Return:
name | type | description |
---|---|---|
errCode | Number | 0 if authorization successed |
errStr | String | Error message if any error occurred |
import * as WeChat from 'react-native-mwechat';
WeChat.ShareLocalImage({
imageUrl: '/sdcard/test.png',
scene: 0
})
注意:图片路径必须在一个 Public 目录里,例如 Download 目录,否则微信没权限读取这张图片,导致图片发不出去。
ShareMusicMetadata
name | type | description |
---|---|---|
title | String | 标题 |
description | String | 描述 |
thumbImageUrl | String | 缩略图地址,本库会自动压缩到32KB |
musicUrl | String | 音频网页的URL地址 |
musicLowBandUrl | String | 供低带宽环境下使用的音频网页URL地址 |
musicDataUrl | String | 音频数据的URL地址 |
musicLowBandDataUrl | String | 供低带宽环境下使用的音频数据URL地址 |
scene | Number | 分享到, 0:会话 1:朋友圈 2:收藏 |
Return:
name | type | description |
---|---|---|
errCode | Number | 0 if authorization successed |
errStr | String | Error message if any error occurred |
import * as WeChat from 'react-native-mwechat';
WeChat.shareMusic({
title: 'Good music.',
musicUrl: 'https://google.com/music.mp3',
thumbImageUrl: 'https://google.com/1.jpg',
scene: 0
})
ShareVideoMetadata
name | type | description |
---|---|---|
title | String | 标题 |
description | String | 描述 |
thumbImageUrl | String | 缩略图地址,本库会自动压缩到32KB |
videoUrl | String | 视频链接 |
videoLowBandUrl | String | 供低带宽的环境下使用的视频链接 |
scene | Number | 分享到, 0:会话 1:朋友圈 2:收藏 |
Return:
name | type | description |
---|---|---|
errCode | Number | 0 if authorization successed |
errStr | String | Error message if any error occurred |
import * as WeChat from 'react-native-mwechat';
WeChat.shareVideo({
title: 'Interesting video.',
videoUrl: 'https://google.com/music.mp3',
thumbImageUrl: 'https://google.com/1.jpg',
scene: 0
})
ShareWebpageMetadata
name | type | description |
---|---|---|
title | String | 标题 |
description | String | 描述 |
thumbImageUrl | String | 缩略图地址,本库会自动压缩到32KB |
webpageUrl | String | HTML 链接 |
scene | Number | 分享到, 0:会话 1:朋友圈 2:收藏 |
Return:
name | type | description |
---|---|---|
errCode | Number | 0 if authorization successed |
errStr | String | Error message if any error occurred |
import * as WeChat from 'react-native-mwechat';
WeChat.shareWebpage({
title: 'Interesting web.',
videoUrl: 'https://google.com/music.mp3',
thumbImageUrl: 'https://google.com/1.jpg',
scene: 0
})
ShareMiniProgram
name | type | description |
---|---|---|
title | String | 标题 |
description | String | 描述 |
thumbImageUrl | String | 缩略图地址,本库会自动压缩到32KB |
userName | String | 小程序的 userName,填小程序原始id |
path | String | 小程序的页面路径 |
hdImageUrl | String | 小程序新版本的预览图二进制数据,6.5.9及以上版本微信客户端支持 |
withShareTicket | String | 是否使用带shareTicket的分享 |
miniProgramType | Number | 小程序的类型,默认正式版,1.8.1及以上版本开发者工具包支持分享开发版和体验版小程序 |
webpageUrl | String | 兼容低版本的网页链接 |
scene | Number | 分享到, 0:会话 1:朋友圈 2:收藏 |
Return:
name | type | description |
---|---|---|
errCode | Number | 0 if authorization successed |
errStr | String | Error message if any error occurred |
import * as WeChat from 'react-native-mwechat';
WeChat.shareMiniProgram({
title: 'Mini program.',
userName: 'gh_d39d10000000',
webpageUrl: 'https://google.com/show.html',
thumbImageUrl: 'https://google.com/1.jpg',
scene: 0
})
LaunchMiniProgramMetadata
name | type | description |
---|---|---|
userName | String | 填小程序原始id |
miniProgramType | Number | 可选打开 开发版,体验版和正式版 |
path | String | 拉起小程序页面的可带参路径,不填默认拉起小程序首页,对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar" |
Return:
name | type | description |
---|---|---|
errCode | Number | 0 if authorization successed |
errStr | String | Error message if any error occurred |
import * as WeChat from 'react-native-mwechat';
WeChat.launchMiniProgram({
userName: 'gh_d39d10000000',
miniProgramType: 1
})
payload
{Object} the payment datapartnerId
{String} 商家向财付通申请的商家IDprepayId
{String} 预支付订单IDnonceStr
{String} 随机串timeStamp
{String} 时间戳package
{String} 商家根据财付通文档填写的数据和签名sign
{String} 商家根据微信开放平台文档对数据做的签名
- returns {Object}
Sends request for proceeding payment, then returns an object:
name | type | description |
---|---|---|
errCode | Number | 0 if authorization successed |
errStr | String | Error message if any error occurred |
- returns {Object}
name | type | description |
---|---|---|
scene | Number | 重定向后会带上 scene 参数,开发者可以填 0-10000 的整形值,用来标识订阅场值 |
templateId | String | 订阅消息模板 ID,在微信开放平台提交应用审核通过后获得 |
reserved | String | 用于保持请求和回调的状态,授权请后原样带回给第三方。该参数可用于防止 csrf 攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加 session 进行校验,开发者可以填写 a-zA-Z0-9 的参数值,最多 128 字节,要求做 urlencode |
name | type | description |
---|---|---|
corpId | String | 关联的企业id |
url | String | 客服url |
Return:
name | type | description |
---|---|---|
errCode | Number | 0 if authorization successed |
errStr | String | Error message if any error occurred |
import * as WeChat from 'react-native-mwechat';
WeChat.openCustomerServiceChat({
corpId: 'wx123432324',
url: 'https://work.weixin.qq.com/kfid/kfc/123123123'
})
为了解决微信唤醒App时原生端先触发,但是ReactJs还未准备好,所以以下项目配置信息会缓存启动的时的数据,等调用handleLaunchAppReq时触发WeChat_Req
此方法会触发模块的WeChat_Req
,所以在调用此方法之前需要添加WeChat_Req
监听
import * as WeChat from 'react-native-mwechat';
WeChat.registerApp(config.wechat.appID, config.wechat.universalLink); //需要调用
let _wechatReq = DeviceEventEmitter.addListener('WeChat_Req', req => {
console.log(JSON.stringify(req));
});
WeChat.handleLaunchAppReq();
_wechatReq?.remove?.(); //销毁时记得移除监听
MIT