react-native開源組件react-native-wechat學習

轉載鏈接:http://www.ncloud.hk/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/react-native-open-source-components-react-native-wechat-learning/

由於最近工作的需要用到微信分享,於是我就找開源組件庫(react-native-wechat),下面是具體的使用方法。

一、進入到項目的目錄中執行如下命令:

$ npm install react-native-wechat --save

二、IOS:打開你的Xcode工程

2.1 從node_modules/react-native-wechat/ios中鏈接RCTWeChat到庫文件中,不要忘記將它添加到"Buid Phases"中(如下圖所示。注:具體的可以參考facebook官網的方法http://facebook.github.io/react-native/docs/linking-libraries-ios.html)

 

 

2.2 添加一下庫文件(Build Phase->Link Binary With Libraries):SystemConfiguration.framework,CoreTelephony.framework ,libsqlite3.0,libc++,libz  

2.3添加app id (Targets->info->URL types)注:URL Schemes填寫的是APP ID 需要去微信開發者平臺註冊。

2.4爲了適配IOS9需要在LSApplicationQueriesSchemes (Target-info-Custom IOS Target Properties)添加微信爲白名單。我們需要修改info.plist文件,

然後添加如下的代碼:

<key>LSApplicationQueriesSchemes</key>
 <array>
    <!-- 微信 URL Scheme 白名單-->
    <string>wechat</string>
    <string>weixin</string>
    <!-- 新浪微博 URL Scheme 白名單-->
    <string>sinaweibohd</string>
    <string>sinaweibo</string>
    <string>sinaweibosso</string>
    <string>weibosdk</string>
    <string>weibosdk2.5</string>
    <!-- QQ、Qzone URL Scheme 白名單-->
    <string>mqqapi</string>
    <string>mqq</string>
    <string>mqqOpensdkSSoLogin</string>
    <string>mqqconnect</string>
    <string>mqqopensdkdataline</string>
    <string>mqqopensdkgrouptribeshare</string>
    <string>mqqopensdkfriend</string>
    <string>mqqopensdkapi</string>
    <string>mqqopensdkapiV2</string>
    <string>mqqopensdkapiV3</string>
    <string>mqzoneopensdk</string>
    <string>wtloginmqq</string>
    <string>wtloginmqq2</string>
    <string>mqqwpa</string>
    <string>mqzone</string>
    <string>mqzonev2</string>
    <string>mqzoneshare</string>
    <string>wtloginqzone</string>
    <string>mqzonewx</string>
    <string>mqzoneopensdkapiV2</string>
    <string>mqzoneopensdkapi19</string>
    <string>mqzoneopensdkapi</string>
    <string>mqzoneopensdk</string>
    <!-- 支付寶  URL Scheme 白名單-->
    <string>alipay</string>
    <string>alipayshare</string>
</array>

2.5因爲需要使用LinkingIOS,還需要在AppDelegate.m中添加如下代碼:

#import "../Libraries/LinkingIOS/RCTLinkingManager.h"

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {

  return [RCTLinkingManager application:application openURL:url sourceApplication:sourceApplication annotation:annotation];

}

三、API文檔

3.1 registerApp(appid)
	{string} appid  你的appid
	return {promise} 返回一個promise對象
3.2 registerAppWithDescription(appid,appdesc) ->僅支持IOS
	{string} appid  (同上)
	{String} appdesc 你的app的說明
	return {promise}
3.3 isWXAppInstalled() 檢查微信是否初始化
3.4 isWXAppSupportApi()檢查微信是否支持url
3.5 getApiVersion()    獲得微信SDK的版本
3.6 openWXApp()        打開微信app
3.7 sendAuthRequest([scope[,state]]) 發送默認請求,scope:登錄時所申請的權限默認爲get_simple_userinfo.需要
多個權限的時候以逗號分隔開。

3.8  shareToTimeline(data) 分享信息到朋友圈

      {Object } data 包含以下發送信息

       {string} thumbImage  可以是一個uri或者資源id

       {string} type  信息的類型,可以是 {news|text|p_w_picpathUrl|p_w_picpathFile|p_w_picpathResource|video|audio|file}

       {string} webpageUrl  如果類型是news,分享一個網頁鏈接

       {string}  p_w_picpathUrl      如果類型是p_w_picpath,提供一個遠程的圖片鏈接

       {string}  videoUrl       如果類型是video,提供一個視頻

       {string} musicUrl        如果是audio,提供一個音樂

       {string} filePath          提供本地文件

以下例子需要'react-native-wechat'和'react-native-fs'組件

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 p_w_picpath url:
// Share raw http(s) p_w_picpath from web will always fail with unknown reason, please use p_w_picpath file or p_w_picpath resource instead
try {
    var result = await WeChat.shareToTimeline({
        type: 'p_w_picpathUrl',
        title: 'web p_w_picpath',
        description: 'share web p_w_picpath to time line',
        mediaTagName: 'email signature',
        messageAction: undefined,
        messageExt: undefined,
        p_w_picpathUrl: 'http://www.ncloud.hk/email-signature-262x100.png'
    });
    console.log('share p_w_picpath url to time line successful', result);
}
catch (e) {
    console.log('share p_w_picpath url to time line failed', e);
}

// Code example to share p_w_picpath file:
try {
    var rootPath = fs.DocumentDirectoryPath;
    var savePath = rootPath + '/email-signature-262x100.png'; // like /var/mobile/Containers/Data/Application/B1308E13-35F1-41AB-A20D-3117BE8EE8FE/Documents/email-signature-262x100.png

    await fs.downloadFile('http://www.ncloud.hk/email-signature-262x100.png', savePath);

    var result = await WeChat.shareToTimeline({
        type: 'p_w_picpathFile',
        title: 'p_w_picpath file download from network',
        description: 'share p_w_picpath file to time line',
        mediaTagName: 'email signature',
        messageAction: undefined,
        messageExt: undefined,
        p_w_picpathUrl: savePath
    });

    console.log('share p_w_picpath file to time line successful', result);
}
catch (e) {
    console.log('share p_w_picpath file to time line failed', e);
}

// Code example to share p_w_picpath resource:
try {
    var p_w_picpathResource = require('./email-signature-262x100.png');
    var result = await WeChat.shareToTimeline({
        type: 'p_w_picpathResource',
        title: 'resource p_w_picpath',
        description: 'share resource p_w_picpath to time line',
        mediaTagName: 'email signature',
        messageAction: undefined,
        messageExt: undefined,
        p_w_picpathUrl: resolveAssetSource(p_w_picpathResource).uri
    });
    console.log('share resource p_w_picpath to time line successful', result);
}
catch (e) {
    console.log('share resource p_w_picpath to time line failed', e);
}

  3.9 shareToSession(data) 用法和shareToTimeline用法相似,發送信息給一個朋友或者羣組

  3.10 addListener(eventType,listener[,context]) 當事件觸發時,會調用一個監聽器,返回一個對象

  3.11  once(eventType,listener[,context]) 用法和addListener相似

  3.12  removeAllListener()   刪除所有的註冊監聽器  


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章