React-Native bridge static library for WeChat SDK.
Requires react-native >= 0.20.0
$ npm install react-native-wechat --save
RCTWeChat
library from your node_modules/react-native-wechat/ios
folder like its
described here.
Don't forget to add it to "Build Phases" of project.URL Schema
as your app id for URL type
in Targets - info
wechat
and weixin
into LSApplicationQueriesSchemes
in 'Targets - info - Custom iOS Target Properties'Note: Make sure you have these code in AppDelegate.m
to enable LinkingIOS
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
return [RCTLinkingManager application:application openURL:url
sourceApplication:sourceApplication annotation:annotation];
}
android/settings.gradle
include ':RCTWeChat'
project(':RCTWeChat').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-wechat/android')
android/app/build.gradle
in section dependencies
...
dependencies {
...
compile project(':RCTWeChat') // Add this line only.
}
MainActivity.java
import com.theweflex.react.WeChatPackage; // Add this line before public class MainActivity
...
/**
* A list of packages used by the app. If the app uses additional views
* or modules besides the default ones, add more packages here.
*/
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage()
, new WeChatPackage() // Add this line
);
}
package your.package.wxapi;
import android.app.Activity;
import android.os.Bundle;
import com.theweflex.react.WeChatModule;
public class WXEntryActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
WeChatModule.handleIntent(getIntent());
finish();
}
}
<manifest>
...
<application>
...
<!-- 微信Activity -->
<activity
android:name=".wxapi.WXEntryActivity"
android:label="@string/app_name"
android:exported="true"
/>
</application>
</manifest>
-keep class com.tencent.mm.sdk.** {
*;
}
appid
the appid you get from WeChat dashboardOnly available on iOS.
appid
the appid you get from WeChat dashboardappdesc
the description of your appCheck if wechat installed in this app.
Check if wechat support open url.
Get api version of WeChat SDK.
Open WeChat app with an optional callback argument.
Send authentication request.
scope
Scopes of auth request.state
the state of OAuth2Share a message to timeline (朋友圈).
data
contain the message to send
thumbImage
Thumb image of the message, which can be a uri or a resource id.type
Type of this message. Can be {news|text|imageUrl|imageFile|imageResource|video|audio|file}webpageUrl
Required if type equals news
. The webpage link to share.imageUrl
Provide a remote image if type equals image
.videoUrl
Provide a remote video if type equals video
.musicUrl
Provide a remote music if type equals audio
.filePath
Provide a local file if type equals file
.fileExtension
Provide the file type if type equals file
.These example code need 'react-native-chat' and 'react-native-fs' plugin.
import * as WeChat from 'react-native-wechat';
import fs from 'react-native-fs';
var resolveAssetSource = require('resolveAssetSource'); // along with Image component
// Code example to share text message:
try {
var result = await WeChat.shareToTimeline({type: 'text', description: 'I\'m Wechat, :)'});
console.log('share text message to time line successful', result);
}
catch (e) {
console.log('share text message to time line failed', e);
}
// Code example to share image url:
// Share raw http(s) image from web will always fail with unknown reason, please use image file or image resource instead
try {
var result = await WeChat.shareToTimeline({
type: 'imageUrl',
title: 'web image',
description: 'share web image to time line',
mediaTagName: 'email signature',
messageAction: undefined,
messageExt: undefined,
imageUrl: 'http://www.ncloud.hk/email-signature-262x100.png'
});
console.log('share image url to time line successful', result);
}
catch (e) {
console.log('share image url to time line failed', e);
}
// Code example to share image file:
try {
var rootPath = fs.DocumentDirectoryPath;
var savePath = rootPath + '/email-signature-262x100.png';
console.log({savePath});
/*
* savePath on iOS may be:
* /var/mobile/Containers/Data/Application/B1308E13-35F1-41AB-A20D-3117BE8EE8FE/Documents/email-signature-262x100.png
*
* savePath on Android may be:
* /data/data/com.wechatsample/files/email-signature-262x100.png
* */
await fs.downloadFile('http://www.ncloud.hk/email-signature-262x100.png', savePath);
var result = await WeChat.shareToTimeline({
type: 'imageFile',
title: 'image file download from network',
description: 'share image file to time line',
mediaTagName: 'email signature',
messageAction: undefined,
messageExt: undefined,
imageUrl: "file://" + savePath // require the prefix on both iOS and Android platform
});
console.log('share image file to time line successful', result);
}
catch (e) {
console.log('share image file to time line failed', e);
}
// Code example to share image resource:
try {
var imageResource = require('./email-signature-262x100.png');
var result = await WeChat.shareToTimeline({
type: 'imageResource',
title: 'resource image',
description: 'share resource image to time line',
mediaTagName: 'email signature',
messageAction: undefined,
messageExt: undefined,
imageUrl: resolveAssetSource(imageResource).uri
});
console.log('share resource image to time line successful', result);
}
catch (e) {
console.log('share resource image to time line failed', e);
}
// Code example to download an word file from web, then share it to WeChat session
// only support to share to session but time line
try {
var rootPath = fs.DocumentDirectoryPath;
var fileName = 'signature_method.doc';
var savePath = rootPath + '/' + fileName;
console.log({savePath});
/*
* savePath on iOS may be:
* /var/mobile/Containers/Data/Application/B1308E13-35F1-41AB-A20D-3117BE8EE8FE/Documents/signature_method.doc
*
* savePath on Android may be:
* /data/data/com.wechatsample/files/signature_method.doc
* */
await fs.downloadFile('https://open.weixin.qq.com/zh_CN/htmledition/res/assets/signature_method.doc', savePath);
var result = await WeChat.shareToSession({
type: 'file',
title: fileName, // WeChat app treat title as file name
description: 'share word file to chat session',
mediaTagName: 'word file',
messageAction: undefined,
messageExt: undefined,
filePath: savePath,
fileExtension: '.doc'
});
console.log('share word file to chat session successful', result);
}
catch (e) {
console.log('share word file to chat session failed', e);
}
Similar to shareToTimeline
but send message to a friend or a groups.
Adds a listener to be invoked when events of the specified type are emitted. An optional calling context may be provided.
Return a object like {remove: function}
which can be used to remove this listener.
Similar to addListener, except that the listener is removed after it is invoked once.
Removes all of the registered listeners, including those registered as listener maps.
Receive result for sendAuthRequest - errCode {int} - errStr {String} Error message if any error occured. - openId {String} - code {String} Authorize code - url {String} - lang {String} - country {String}
Receive result for shareToTimeline and shareToSession - errCode {int} be 0 if auth successed. - errStr {String} Error message if any error occured.
For more details, visit WeChat SDK Documentation
MIT @ WeFlex,Inc
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。