React Native的微信插件, 包括登录、分享、react-native版本需要0.17.0及以上
npm install react-native-wx --save
rnpm link
在工程target的Build Phases->Link Binary with Libraries
中加入、libsqlite3.tbd、libc++、liz.tbd、CoreTelephony.framework
在Info->URL Types
中增加QQ的scheme: Identifier
设置为weixin
, URL Schemes
设置为你注册的微信开发者账号中的APPID
在你工程的AppDelegate.m
文件中添加如下代码:
#import "RCTLinkingManager.h"
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [RCTLinkingManager application:application openURL:url sourceApplication:sourceApplication annotation:annotation];
}
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
</true>
</dict>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>weixin</string>
<string>wechat</string>
</array>
在app的AndroidManifest.xml中<application>
标签中添加如下代码:
<meta-data android:name="WX_APPID" android:value="${WX_APPID}" />
android/app/build.gradle
里,defaultConfig栏目下添加如下代码:
manifestPlaceholders = [
WX_APPID: "微信的APPID" //在此修改微信APPID
]
确保你的MainActivity.java中有onActivityResult
的实现:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);
mReactInstanceManager.onActivityResult(requestCode, resultCode, data);
}
import * as WechatAPI from 'react-native-wx';
// 登录参数
config : {
scope: 权限设置, // 默认 'snsapi_userinfo'
}
返回一个Promise
对象。成功时的回调为一个类似这样的对象:
{
"code": "",
"appid": "",
"lang": "",
"country": "",
}
分享到朋友圈
分享到好友
// 分享文字
{
type: 'text',
text: 文字内容,
}
// 分享图片
{
type: 'image',
imageUrl: 图片地址,
title : 标题,
description : 描述,
}
// 分享网页
{
type: 'news',
title : 标题,
description : 描述,
webpageUrl : 链接地址,
imageUrl: 缩略图地址,
}
// 登录参数
data : {
partnerId: "",
prepayId: "",
nonceStr: "",
timeStamp: "",
package: "",
sign: "",
}
返回一个Promise
对象。成功时的回调为一个类似这样的对象:
{
"appid": "",
"returnKey": ""
}
通常出现这个原因是因为Manifest没有配置好,检查Manifest中有关Activity的配置。
通常出现这个原因是因为MainActivity.java中缺少onActivityResult的调用。