react native一键分享功能实现&原理和注意点(支持微信、qq、新浪微博等)

前言

目前使用一键分享比较主流的两个SDK:ShareSDK、友盟;

又因为友盟功能比较多且比较全,比如说友盟统计、友盟推送等,所以本文重点介绍的是友盟分享功能在rn上的应用以及要注意的点。

react native绑定SDK两种方案(一个原理):

  1.自己去要绑定的SDK官网下载SDK包,按照SDK安装指南分别在android/iOS上按步骤配置,然后在RN注册Package和Module实现RN和原生之间的通讯;

  2.使用别人已经写过的Package和Module+SDK本身的配置,直接拿到rn项目中用;

总结:可以看出来第二种其实是比较偷懒的方式,但是可以实现功能,而且Package和Module的书写几乎一样都是大同小异的代码(除了Module暴露调用方法的顺序不同之外),所以如果市面上已经有相应的绑定大可直接拿来使用。

一键分享实现方案

我们本文要使用的友盟分享库是:react-native-share

GitHub地址:https://github.com/songxiaoliang/react-native-share

配置详见上面GitHub里README部分,这里不在重复,本文重点要说的是注意事项。

注意事项(Android部分)

除了上文GitHub里面的10个步骤之后,接下来的配置也是必不可少的.

1.需要在app目录build.gradle文件dependencies里面添加如下配置:

dependencies {
    ...
  //友盟分享
  compile files('libs/weiboSDKCore_3.1.4.jar')
  compile files('libs/wechat-sdk-android-with-mta-1.1.6.jar')
  compile files('libs/umeng_social_tool.jar')
  compile files('libs/umeng_social_net.jar')
  compile files('libs/umeng_social_api.jar')
  compile files('libs/SocialSDK_WeiXin_Full.jar')
  compile files('libs/SocialSDK_Sina_Full.jar')
  compile files('libs/SocialSDK_facebook.jar')
  compile files('libs/SocialSDK_QQ_Full.jar')
  compile files('libs/SocialSDK_alipay.jar')
  compile files('libs/open_sdk_r5781.jar')
  compile files('libs/libapshare.jar')
  compile 'com.android.support:multidex:'
}

2.需要注意修改apshare、module、wxapi、WBShareActivity.java里面的包名改成自己项目的包名;

3.MainActivity.java需要添加引用:

import com.umeng.analytics.MobclickAgent;
import android.content.Intent;
import android.os.Bundle;
import com.umeng.socialize.UMShareAPI;

4.MainApplication.java需要添加引用:

import com.xxx.module.SharePackage;  //xxx为你的包名
import com.umeng.socialize.Config;
import com.umeng.socialize.PlatformConfig;
import com.umeng.socialize.UMShareAPI;

5.以上配置完毕,运行依然报错“com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65935”

解决方案:

①.在项目的build.gradle文件的dependencies 节中添加分包设置:

dependencies { 
   ... 
   compile 'com.android.support:multidex:' 
   ... 
}

②.通过在defaultConfig节中设置multiDexEnabled标签为true,开启multi-dexing支持.

defaultConfig { 
    ... 
    multiDexEnabled true 
    ... 
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算教程系列

​如何使用Nginx反向代理配置SSL加密的Jenkins

默认情况下,Jenkins自带内置的Winstone网络服务器,可以通过8080端口进行监听,方便入门。但是,只要您认真使用Jenkins,就应该使用SSL保护...

2984
来自专栏王肖的UT

Assimp Android 编译

3424
来自专栏别先生

Oozie如何和安装部署

1、Oozie的简单介绍: 1、Oozie是一个工作流引擎服务器,用于运行hadoop map/reduce和hive等任务工作流,同时Oozie还是一个Jav...

7109
来自专栏KaliArch

快捷安装不同版本Python

1325
来自专栏微服务生态

玩转Flume+Kafka原来也就那点事儿

好久没有写分享了,继前一个系列进行了Kafka源码分享之后,接下来进行Flume源码分析系列,望大家继续关注,今天先进行开篇文章Flume+kafka的环境配置...

1082
来自专栏xingoo, 一个梦想做发明家的程序员

Spring MVC那点事儿

自问自答 1 Spring MVC的启动原理? spring mvc是基于ioc容器的,因此需要先创建IOC容器,才能创建对应的spring mvc执行环境。 ...

1957
来自专栏云计算教程系列

如何在Ubuntu 16.04上安装和配置OrientDB

OrientDB是一个多模型NoSQL数据库,支持图形和文档数据库。它是一个Java应用程序,可以在任何操作系统上运行。它也完全支持ACID,支持多主复制,可轻...

1853
来自专栏JackieZheng

Spring Boot系列——如何集成Log4j2

上篇《Spring Boot系列——日志配置》介绍了Spring Boot如何进行日志配置,日志系统用的是Spring Boot默认的LogBack。

1622
来自专栏腾讯移动品质中心TMQ的专栏

从 Ant 到 Gradle 的迁移之路

前一段时间项目组打算将原来的 Ant 编译打包方式迁移到 Gradle 编译打包方式。现在迁移基本完成,我这里将迁移过程遇到的坑以及经验做一个总结,希望能给大家...

5670
来自专栏玩转JavaEE

Nginx+Tomcat搭建集群,Spring Session+Redis实现Session共享

小伙伴们好久不见!最近略忙,博客写的有点少,嗯,要加把劲。OK,今天给大家带来一个JavaWeb中常用的架构搭建,即Nginx+Tomcat搭建服务集群,然后通...

4396

扫码关注云+社区

领取腾讯云代金券