React Native之微信分享(iOS Android)

React Native之微信分享(iOS Android)

在使用React Native开发项目的时候,基本都会使用到微信好友或者微信朋友圈分享功能吧,那么今天我就带大家实现以下RN微信好友以及朋友圈的分享功能。

一,应用申请审核

大家需要去微信开发平台去注册账号并且创建一个移动应用。(地址:https://open.weixin.qq.com),然后根据流程申请即可。但是需要注意的是Android需要获取签名信息:

下载安装上面的签名信息包apk,然后在上面输入android项目的包名,点击获取签名信息即可。android项目的包名路径:android/app/build.gradle中的applicationId标签数据。

二,Android安装配置

react-native-wechat库不仅支持微信分享,还支持微信登录,收藏以及微信支付的。但是登录,支付之类的功能需要开通开发者认证权限,需要300元一年。

2.1,npm install react-native-wechat --save

2.2,配置方法

1,在android/settings.gradle文件中添加如下代码:

1  include ‘:RCTWeChat‘
2  project(‘:RCTWeChat‘).projectDir = new File(rootProject.projectDir, ‘../node_modules/react-native-wechat/android‘)

2,在android/app/build.gradle文件中的dependencies标签中添加模块依赖:

1  ...
2
3 dependencies {
4
5    ...
6
7    implementation project(‘:RCTWeChat‘)    // Add this line only.
8
9 }

3,在MainActivity.java文件中添加如下代码:

 1 import com.theweflex.react.WeChatPackage; // Add this line before public class MainActivity
 2
 3   ...
 4
 5 @Override
 6 protected List<ReactPackage> getPackages() {
 7     return Arrays.<ReactPackage>asList(
 8         new MainReactPackage()
 9         , new WeChatPackage()        // Add this line
10     );
11 }

以上是手动配置的方法,当然也可一键配置:npm link react-native-wechat

4,在android项目中创建wxapi包名,com目录下创建wxapi,在该包名底下创建WXEntryActivity.java类,该类用于去微信获取请求以及响应。

 1 package your.package.wxapi;
 2
 3 import android.app.Activity;
 4 import android.os.Bundle;
 5
 6 import com.theweflex.react.WeChatModule;
 7
 8 public class WXEntryActivity extends Activity{
 9     @Override
10     protected void onCreate(Bundle savedInstanceState) {
11         super.onCreate(savedInstanceState);
12         WeChatModule.handleIntent(getIntent());
13         finish();
14     }
15 }

5,在AndroidManifest.xml文件中添加刚刚创建的Actiivty的配置

 1 <manifest>
 2   ...
 3   <application>
 4     ...
 5     <!-- 微信Activity -->
 6     <activity
 7       android:name=".wxapi.WXEntryActivity"
 8       android:label="@string/app_name"
 9       android:exported="true"
10       />
11   </application>
12 </manifest>

6,混淆设置,在proguard-rules.pro中添加如下代码,当然如果不混淆就不安全啦

1 -keep class com.tencent.mm.sdk.** {
2    *;
3 }

三,ios安装配置

1,在xcode中添加部分库依赖(Link Binary With Libraries) 在没有这些库的情况下:

  • SystemConfiguration.framework
  • CoreTelephony.framework
  • libsqlite3.0
  • libc++
  • libz

2,选中Targets-info配置中URL Types中配置刚申请下来的appid

3,为了iOS9.0的支持,在Targets-info中的Custom iOS Traget Properties标签中添加LSApplicationQueriesSchemes字段,值分别为wechat和weixin

4,接下来需要在APPDelete.m文件中做一下Linking的处理配置

1 #import <React/RCTLinkingManager.h>
2 ...
3
4 - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
5   sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
6 {
7   return [RCTLinkingManager application:application openURL:url
8                             sourceApplication:sourceApplication annotation:annotation];
9 }

四,react-native-wechat分享实例

上面我们已经把基本安装配置完成了,下面我们通过实例来进行演示一下,主要演示分享到好友/朋友圈的链接以及图片,关于更多的分享实例例如文件,图片,视频,语言,文本等等可以查看项目的说明文件即可。

分享实例步骤:

  • 注册应用
  • 好友/朋友圈分享
  • Android测试应用需要打包测试
  • iOS版本直接测试即可,代码和下面一样

3.1,注册应用

1 //应用注册
2  WeChat.registerApp(appid);

3.2,好友/朋友圈分享

1,图片分享

提到图片分享 在这儿就不得不讲到屏幕截图组件react-native-view-shot的简单使用

 1 import * as WeChat from ‘react-native-wechat‘;
 2 import ViewShot, { captureScreen, captureRef } from "react-native-view-shot";
 3
 4 ...
 5
 6 captureScreen({
 7                 format: "jpg",
 8                 quality: 0.8
 9             }).then(
10                 uri => {
11                     let Imageuri = (uri.toLowerCase()).includes(‘file://‘)?uri:‘file://‘+uri
12                     self.setState({ Imageuri: Imageuri })
13                 },
14                 error => console.log("Oops, snapshot failed==" + error)
15             );

分享给好友/群聊

 1 sharetoFrends = () => {
 2         let self = this;
 3         WeChat.isWXAppInstalled()
 4             .then((isInstalled) => {
 5                 if (isInstalled) {
 6                     WeChat.shareToSession({
 7                         type: ‘imageFile‘,
 8                         title: ‘邀请好友‘,
 9                         description: ‘‘,
10                         imageUrl: self.state.Imageuri // require the prefix on both iOS and Android platform
11                     })
12                         .catch((error) => {
13                             console.log(JSON.stringify(error));
14                         });
15                 } else {
16                     Toast.show(‘您还没有安装微信,请安装微信之后再试‘);
17                 }
18             });
19     }

分享到朋友圈

 1 sharetoPyq = () => {
 2         let self = this;
 3         WeChat.isWXAppInstalled()
 4             .then((isInstalled) => {
 5                 if (isInstalled) {
 6                     WeChat.shareToTimeline({
 7                         type: ‘imageFile‘,
 8                         title: ‘邀请好友‘,
 9                         description: ‘‘,
10                         imageUrl: self.state.Imageuri // require the prefix on both iOS and Android platform
11                     })
12                         .catch((error) => {
13                             console.log(JSON.stringify(error));
14                         });
15                 } else {
16                     Toast.show(‘您还没有安装微信,请安装微信之后再试‘);
17                 }
18             });
19
20     }

2,图文链接分享

分享给好友/群聊

 1  // 分享到好友与群聊
 2     sharetoFrends = () => {
 3         WeChat.isWXAppInstalled()
 4             .then((isInstalled) => {
 5                 if (isInstalled) {
 6                     WeChat.shareToSession({
 7                         title: ‘React Native之TextInput的介绍与使用(富文本封装与使用实例,常用输入框封装与使用实例)‘,
 8                         description: ‘TextInput是一个允许用户在应用中通过键盘输入文本的基本组件。‘,
 9
10  thumbImage:‘http://pic.58pic.com/58pic/10/97/02/30a58PICH7N.jpg‘,
11                         type: ‘news‘,
12                         webpageUrl: ‘https://www.cnblogs.com/jackson-zhangjiang/p/9524842.html‘
13                     })
14                         .catch((error) => {
15                             console.log(JSON.stringify(error));
16                         });
17                 } else {
18                     Toast.show(‘您还没有安装微信,请安装微信之后再试‘);
19                 }
20             });
21     }

分享到朋友圈

 1 // 分享到朋友圈
 2     sharetoPyq = () => {
 3         WeChat.isWXAppInstalled()
 4             .then((isInstalled) => {
 5                 if (isInstalled) {
 6                     WeChat.shareToTimeline({
 7                         title: ‘React Native之FlatList的介绍与使用实例‘,
 8                         description: ‘FlatList高性能的简单列表组件‘,
 9                         thumbImage: http://pic.58pic.com/58pic/10/97/02/30a58PICH7N.jpg‘‘,
10                         type: ‘news‘,
11                         webpageUrl: ‘https://www.cnblogs.com/jackson-zhangjiang/p/9523927.html‘
12                     })
13                         .catch((error) => {
14                             console.log(JSON.stringify(error));
15                         });
16                 } else {
17                     Toast.show(‘您还没有安装微信,请安装微信之后再试‘);
18                 }
19             });
20
21     }

原文地址:https://www.cnblogs.com/jackson-zhangjiang/p/9546850.html

时间: 2024-10-22 10:28:07

React Native之微信分享(iOS Android)的相关文章

30天React Native从零到IOS/Android双平台发布总结

前言 本人有近十年的技术背景,除了APP开发之外对后端.前端等都比较熟悉,近期做一个APP项目需要IOS.Android两个平台都需要,只能硬着头皮上.其实很早就想开发APP也很早就接触Android.IOS原生开发.Hybrid.HTML5 WebAPP等开发但一直也没有做一个完整的项目,更多只是技术上的验证和尝试.这回利用这个项目机会成功的基于RN技术发布了IOS和Android两个平台的APP,项目周期由于IOS审核(第一次提交审核,修改了四次才通过)和自己假期的时间用了一个半月,实际用于

Native VS React Native VS 微信小程序

随着React Native和 微信小程序的出现,Native一家独大的局面出现裂痕,很多小公司使用已经正在着手微信小程序和React Native了,我公司就已经走上React Native之路.那么,React Native 和 Native 和 微信小程序 三者比较起来到底哪者更强呢?今天从适应性(适合什么项目).开发限制.软件迭代更新.成本角度谈谈自己对三者的看法. 个人角度: 适应性(适应什么项目) 大项目.游戏项目:Native 中大型项目:react native 小项目:微信小程

搭建基于Windows的React Native 开发环境(For Android)

React Native号称能跨平台开发IOS和Android的原生应用,想来必定会成为一种趋势.刚好计划开发一款手机APP,又没有相应的开发资源,决定自己摸索着试试. 第一步是搭建开发环境,以下是官方文档.网上资料,结合本人实际操作的总结: 一.       准备工作 (1)安装安卓SDK 根据React Native官网的指示(http://facebook.github.io/react-native/docs/android-setup.html#content),首先需要安装Andro

微信分享—ios和安卓机制居然不一样!

实际项目中,在做微信分享追踪的时候,遇到了一个百思不得其解的问题. 在加入了用户分享追踪功能之后,页面已经加载完成的情况下,安卓分享功能没有任何问题,ios却总是分享失败. 关于ios和安卓设备的差别 项目需求是,我们需要对用户的分享行为做追踪,对用户从哪个人分享的链接进来的做记录.所以每个用户有一个唯一的分享码. 用户A分享出去,链接上带有他自己的分享码.用户B点进链接的一瞬间,把当前url上的分享码传给后端做记录,同时替换上自己的分享码. 我使用替换参数的方式是直接修改router的quer

【REACT NATIVE 系列教程之十二】REACT NATIVE(JS/ES)与IOS(OBJECT-C)交互通信

一用到跨平台的引擎必然要有引擎与各平台原生进行交互通信的需要.那么Himi先讲解React Native与iOS之间的通信交互. 本篇主要分为两部分讲解:(关于其中讲解的OC语法等不介绍,不懂的请自行学习) 1. React Native 访问iOS 2. iOS访问React Native     一:React Native 访问iOS 1. 我们想要JS调用OC函数,就要实现一个"RCTBridgeModule"协议的Objective-C类 所以首先我们先创建一个oc新类,  

react native报错处理com.android.build.api.transform.TransformException: com.android.builder.dexing.DexArchiveBuilderException: com.android.builder.dexing.DexArchiveBuilderException: Failed to process

背景:最近准备在使用react-native开发的app中接入友盟,来进行用户行为统计,分享,授权登录等操作. 在使用的过程中,遇到了一些错误信息,在此记录一下. 在修改android目录下的build.gradle等信息后,运行react-native run-android报错,错误信息如下: com.android.build.api.transform.TransformException: com.android.builder.dexing.DexArchiveBuilderExce

微信分享ios设备没有分享图标安卓有分享图标 (分享功能没有问题)

解决方案:去除 var sharedata = { title: $("#shareTitle").val(), desc: $("#shareContent").val(), imgUrl: $("#shareIcon").val(), link: $("#rq1").val() //success: null } wx.onMenuShareAppMessage(sharedata);//分享给朋友 wx.onMenuSh

react native仿微信性别选择-自定义弹出框

简述 要实现微信性别选择需要使用两部分的技术: 第一.是自定义弹出框: 第二.单选框控件使用: 效果 实现 一.配置弹出框 弹出框用的是:react-native-popup-dialog(Git地址:https://github.com/jacklam718/react-native-popup-dialog) 具体配置见Git文档~ 二.配置单选框 用的是:react-native-elements(Git地址:https://react-native-training.github.io/

React Native 学习资料分享

http://reactnative.cn/docs/0.25/getting-started.html