GithubHelp home page GithubHelp logo

yorkie / react-native-wechat Goto Github PK

View Code? Open in Web Editor NEW
2.9K 94.0 711.0 57.02 MB

🚀 WeChat login, share, favorite and payment for React-Native on iOS and Android platforms (QQ: 336021910)

Home Page: https://npmjs.org/package/react-native-wechat

License: MIT License

JavaScript 15.05% Objective-C 54.68% Java 22.69% Ruby 5.54% Python 2.04%
wechat wechat-sdk android ios react-native mit js

react-native-wechat's Introduction

React-Native-Wechat

React Native bridging library that integrates WeChat SDKs:

  • iOS SDK 1.7.2
  • Android SDK 221

react-native-wechat has the following tracking data in the open source world:

NPM Dependency Downloads Build
NPM version Dependency Status Downloads Build Status

Table of Contents

Getting Started

API Documentation

react-native-wechat uses Promises, therefore you can use Promise or async/await to manage your dataflow.

registerApp(appid)

  • 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-wechat';

WeChat.registerApp('appid');

registerAppWithDescription(appid, description)

  • appid {String} the appid you get from WeChat dashboard
  • description {String} the description of your app
  • returns {Boolean} explains if your application is registered done

This method is only available on iOS.

isWXAppInstalled()

  • returns {Boolean} if WeChat is installed.

Check if the WeChat app is installed on the device.

isWXAppSupportApi()

  • returns {Boolean} Contains the result.

Check if wechat support open url.

getApiVersion()

  • returns {String} Contains the result.

Get the WeChat SDK api version.

openWXApp()

  • returns {Boolean}

Open the WeChat app from your application.

sendAuthRequest([scope[, state]])

  • 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

class ShareMetadata

  • title {String} title of this message.
  • type {Number} type of this message. Can be {news|text|imageUrl|imageFile|imageResource|video|audio|file}
  • thumbImage {String} Thumb image of the message, which can be a uri or a resource id.
  • description {String} The description about the sharing.
  • webpageUrl {String} Required if type equals news. The webpage link to share.
  • imageUrl {String} Provide a remote image if type equals image.
  • videoUrl {String} Provide a remote video if type equals video.
  • musicUrl {String} Provide a remote music if type equals audio.
  • filePath {String} Provide a local file if type equals file.
  • fileExtension {String} Provide the file type if type equals file.

shareToTimeline(message)

  • message {ShareMetadata} This object saves the metadata for sharing
  • returns {Object}

Share a ShareMetadata message to timeline(朋友圈) and returns:

name type description
errCode Number 0 if authorization successed
errStr String Error message if any error occurred

The following examples require the 'react-native-chat' and 'react-native-fs' packages.

import * as WeChat from 'react-native-wechat';
import fs from 'react-native-fs';
let resolveAssetSource = require('resolveAssetSource');

// Code example to share text message:
try {
  let result = await WeChat.shareToTimeline({
    type: 'text', 
    description: 'hello, wechat'
  });
  console.log('share text message to time line successful:', result);
} catch (e) {
  if (e instanceof WeChat.WechatError) {
    console.error(e.stack);
  } else {
    throw 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 {
  let 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) {
  if (e instanceof WeChat.WechatError) {
    console.error(e.stack);
  } else {
    throw e;
  }
}

// Code example to share image file:
try {
  let rootPath = fs.DocumentDirectoryPath;
  let 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);
  let 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) {
  if (e instanceof WeChat.WechatError) {
    console.error(e.stack);
  } else {
    throw e;
  }
}

// Code example to share image resource:
try {
  let imageResource = require('./email-signature-262x100.png');
  let 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) {
  if (e instanceof WeChat.WechatError) {
    console.error(e.stack);
  } else {
    throw 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
// iOS code use DocumentDirectoryPath
try {
  let rootPath = fs.DocumentDirectoryPath;
  let fileName = 'signature_method.doc';
  /*
   * savePath on iOS may be:
   *  /var/mobile/Containers/Data/Application/B1308E13-35F1-41AB-A20D-3117BE8EE8FE/Documents/signature_method.doc
   **/ 
  let savePath = rootPath + '/' + fileName;

  await fs.downloadFile('https://open.weixin.qq.com/zh_CN/htmledition/res/assets/signature_method.doc', savePath);
  let 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) {
  if (e instanceof WeChat.WechatError) {
    console.error(e.stack);
  } else {
    throw e;
  }
}

//android code use ExternalDirectoryPath
try {
  let rootPath = fs.ExternalDirectoryPath;
  let fileName = 'signature_method.doc';
  /*
   * savePath on Android may be:
   *  /storage/emulated/0/Android/data/com.wechatsample/files/signature_method.doc
   **/
  let savePath = rootPath + '/' + fileName;
  await fs.downloadFile('https://open.weixin.qq.com/zh_CN/htmledition/res/assets/signature_method.doc', savePath);
  let 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) {
  if (e instanceof WeChat.WechatError) {
    console.error(e.stack);
  } else {
    throw e;
  }
}

shareToSession(message)

  • message {ShareMetadata} This object saves the metadata for sharing
  • returns {Object}

Similar to shareToTimeline but sends the message to a friend or chat group.

pay(payload)

  • payload {Object} the payment data
    • partnerId {String} 商家向财付通申请的商家ID
    • prepayId {String} 预支付订单ID
    • nonceStr {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

Installation

$ npm install react-native-wechat --save

Partners

React Native Starter Kit - is a mobile starter kit that allows your team to fully focus on development of the features that set your product apart from the competitors instead of building your app from scratch.

Community

IRC

Tutorials

Who's using it

Authors

GitHub Role Email
@yorkie Author [email protected]
@xing-zheng Emeriti
@tdzl2003 Emeriti [email protected]

License

MIT

react-native-wechat's People

Contributors

94cstyles avatar ace68723 avatar alsotang avatar anjianshi avatar buhe avatar dioxide avatar dvlprliu avatar febobo avatar gitter-badger avatar ineedtocopy avatar kennytian avatar kingamo avatar lijinchao2007 avatar litingjun2015 avatar liuchungui avatar llearn avatar messense avatar orzhtml avatar richard-cao avatar robinv8 avatar seanbot avatar simman avatar stepnov avatar sunxingz avatar tdzl2003 avatar xing-zheng avatar yorkie avatar youhan26 avatar zhigang1992 avatar zidail avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

react-native-wechat's Issues

Cannot run Example demo

Hi,guys! firstly, I installed the project with commmand : npm install react-native-wechat --save
secondly, I entered the directory ./node_modules/react-native-wechat/Example run with "npm install "
then , I clicked the "RUN" in Xcode,
finally, I got the error message -- "Unable to resolve module ./react-native-wechat.js from /Users/user/Development/Projects/node_modules/react-native-wechat/Example/index.ios.js : Invalid directory /User/user/Development/Projects/node_modules/react-native-wechat/Example/react-native-wechat.js"

How can I run successlly ? Hope your guys answer. Thanks your answer in anvance

[Android]How to use?

import WeChat from 'react-native-wechat';
but WeChat undefined
WeChatPackage I would import in Android studio

isWXAppInstalled always returns false

I installed the module, added the url scheme to xcode's info url types.

  WeChat.registerApp("wx81bfaa7ead2e5f7d", function (resultOne) {
            console.log(resultOne)
            WeChat.isWXAppInstalled(function (resultTwo) {
                console.log(resultTwo)
            })
        })

resultOne is null, resultTwo is false.

iPhone 6, WeChat 6.3.6, RN 0.14.2, RN-wechat 1.1.1

Any other configuration is required?

[ios] bundle error

bundle: Created ReactPackager
uncaught error Error: UnableToResolveError: Unable to resolve module EventEmitter from /Users/richardcao/workspace/reading/node_modules/react-native-wechat/index.js: Invalid directory /Users/node_modules/EventEmitter

But I never have folder /Users/node_modules.
How to solve?

@yorkie

How to get auth data

I am now able to use sendAuthRequest, it opens wechat as expected. How to receive the response data?

Is the onResp bridge missing?

WeChatSDK1.7 add module

最近微信开放平台更新的sdk1.7版本添加进微信模块里去,在项目里sdk的文件报错,感觉挺莫名其妙的

android分享不可用

您好,我是android客户端,但是用了两个分享的方法都不可以,全是屏幕一闪就结束了,也没有分享,不知道怎么解决?能否帮忙解决一下?

安卓环境下,文件能分享成功,但是在微信中有些问题

有两个问题:
1、在微信中,点击我分享的docx文件进入预览页面,点击“用其他应用打开”时,提示“程序未检测到可以打开此文件的应用”,但我在微信中用其他方式分享的docx文件能检测到应用可以打开。
2、分享文件的缩略图api当中是否可以指定?

分享时,图片url不能解析

你好,我用react native的 RCTImageStoreManager中的imageStoreManager方法返回了一个图片的URL(比如rct-image-store://0),但我想用这个url以emoticon的方式分享到微信时,并不能打开微信。请问这个问题能解决吗?

'RCTBridgeModule.h' file not found

I get this error when I upgrade to 1.3.0. how to fix this? 3q.

/Users/guipeng/Desktop/ldl/dashboard/node_modules/react-native-wechat/ios/RCTWeChat.h:10:9: 'RCTBridgeModule.h' file not found

android环境下rnpm链接的问题

当我另外clone工程的时候,使用rnpm install一键式安装所有package.json中的第三方组件时,Wechat导出了两个组件,一个是RCTWeChat,另外一个是react-native-wechat,我删除了其中一个和相关依赖就行了,能否修改下,让安装更方便

openWXApp(callback)

这个函数打开微信,返回后,再次点击,没有任何效果!

The function can't open wechat again after return from wechat.

connection refused

This program appeared only in real device iPhone,it‘s ok in simulator
image

希望能接手本模块的维护

您好,我是React Native中文网的站长,我们目前正在收集&整理&维护React Native的相关模块,我们希望能够在npm上接手本模块的持续维护更新,不知是否可以转让对应的npm包名?

谢谢。

Share file failed, got error "URI is not absolute: /data/com.bycloud_rn/files/test.docx"

I share text fine, but i got a error when i share a file.
Here's my code

  var filePath = RNFS.DocumentDirectoryPath + '/' + 'test.docx';
    await RNFS.downloadFile(url, filePath, (res) => {
      this.setState({
        contentLength: res.contentLength
      });
    },
    data => {
      this.setState({
        progress: data.bytesWritten/this.state.contentLength,
      });
    })
    .then(res => {
      this.setState({
        progress: data.bytesWritten/this.state.contentLength
      });
      var result = WeChat.shareToTimeline({
        type: 'file',
        description: 'I\'m Wechat, :)',
        filePath: filePath,
      });
    })
    .catch(err => {
      console.log("err");
    });

Error info:

URI is not absolute: /data/com.bycloud_rn/files/test.docx

checkURI
File.java: 220

<init>
File.java: 177

__jsonToFileMedia
WeChatModule.java: 399

_share
WeChatModule.java: 327

_share
WeChatModule.java: 225

shareToTimeline
WeChatModule.java: 159

data structure of shareToTimeline and shareToSession

I always failed to share image use these 2 api, image cant display in share page and would get a message tell me that image send failed.
I do this like below:
await WeChat.shareToTimeline({ type: 'image', imageUrl: 'http://pic3.nipic.com/3058118_113506073_2.jpg' });
Could you provide some sample code for these two APIs with parameter's data, to let me know how to share a image?

sendAuthRequest

What are param values that has to passed inside the sendAuthrequest Function , can you provoide any example for WeChat Authentication

Android上登录授权后闪退

使用版本1.4.0
sendAuthRequest可以resolve,调起微信并点确认后,返回时App crash。是Android上SendAuth.Resp的回调监听方面的问题?

PS:iOS上登录和分享都没有问题,Android上分享没问题

android: sendAuthReq Android

Can you give an example on how to use the sendAuthReq in Android please? I've been following the example in the iOS version but it only returns undefined after app registration.

Example does not work

I download the whole project(1.2.5) and "npm install" in Example folder. Then I got the error in xcode,do I forget anything?

`+ DEST=/Users/nxy/Library/Developer/Xcode/DerivedData/Example-cfmfprniuupqnbannjdswqirnyrs/Build/Products/Debug-iphonesimulator/Example.app

  • '[' -z '' ']'
  • export NVM_DIR=/Users/nxy/.nvm
  • NVM_DIR=/Users/nxy/.nvm
  • [[ -s /Users/nxy/.nvm/nvm.sh ]]
    ++ command -v brew
  • [[ -x /usr/local/bin/brew ]]
    ++ brew --prefix nvm
  • [[ -s /usr/local/Cellar/nvm/0.29.0/nvm.sh ]]
  • react-native bundle --entry-file index.ios.js --platform ios --dev true --bundle-output /Users/nxy/Library/Developer/Xcode/DerivedData/Example-cfmfprniuupqnbannjdswqirnyrs/Build/Products/Debug-iphonesimulator/Example.app/main.jsbundle --assets-dest /Users/nxy/Library/Developer/Xcode/DerivedData/Example-cfmfprniuupqnbannjdswqirnyrs/Build/Products/Debug-iphonesimulator/Example.app
    module.js:328
    throw err;
    ^

Error: Cannot find module 'promise'
at Function.Module._resolveFilename (module.js:326:15)
at Function.Module._load (module.js:277:25)
at Module.require (module.js:354:17)
at require (internal/module.js:12:17)
at Object. (buildBundle.js:13:17)
at Module._compile (module.js:398:26)
at loader (/Users/nxy/node_modules/babel-core/node_modules/babel-register/lib/node.js:127:5)
at Object.require.extensions.(anonymous function) as .js
at Module.load (module.js:344:32)
at Function.Module._load (module.js:301:12)
Command /bin/sh failed with exit code 1`

请问为什么分享给好友的图片不显示,好严重!

分享给好友的图片默认不显示,非要点击灰色默认图跳转到另一个页面,下载后才显示? 请请教大家一下是什么原因?

补充说明:Android 手机分享给 iOS 手机,分享代码如下:

await WeChat.shareToSession({
    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'
    imageUrl: 'http://img.tougudashi.com/share/1463218403.3611000.png'
});

分享的图片不显示

@yorkie @dongrenguang @cham1985 @yanghuxiao @shiguoqing @Leon1108 @ace68723 @hiwenny @xing-zheng @kitt1987 @letmeknowhow 请帮忙看看,不好意思,打扰到这么多人,谢谢!

Link RCTWeChat library from your node_modules/react-native-wechat/ios folder like react-native's [Linking Libraries iOS Guidance], Note: Don't forget to add it to "Build Phases" of your target project.

Thanks for the examples on Xcode,I am a real newer for react native,hoping to run this code on my Xcode,but as i read the ReadMe document,i have been blocked into the first step,How to Link RCTWeChat library from your node_modules/react-native-wechat/ios folder? I searched the https://facebook.github.io/react-native/
and found no answer.I guess is it to copy a node_modules file to the Object file? Hope for response!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.