专栏首页王磊的博客react native一键分享功能实现&原理和注意点(支持微信、qq、新浪微博等)

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 条评论
登录 后参与评论

相关文章

  • C#下2\10\16进制互转代码总汇

    1、十进制转换其他:Convert.ToString(十进制数字, 2|8|16进制模式) //十进制转二进制 Convert.ToString(69, 2);...

    Java中文社群_老王
  • webstorm使用技巧

    WebStorm快捷键收集:模式visual studio 代码提示:ctrl + alt + 空格 代码补全:alt + / 代码换行:ctrl + shif...

    Java中文社群_老王
  • 深浅克隆面试题汇总——附详细答案

    可以看出,如果使用等号复制时,对于值类型来说,彼此之间的修改操作是相对独立的,而对于引用类型来说,因为复制的是引用对象的内存地址,所以修改其中一个值,另一个值也...

    Java中文社群_老王
  • TCP 三次握手的意义

    在网络的传输层协议中, 存在着两大悍将: TCP 和 UDP . 从前, 我傻傻的以为自己对他们虽谈不上精通, 但还是知道的, 但是, 我错了, 我被自己问住了...

    烟草的香味
  • 接口自动化对比工具实践

    接口自动化一直以来都是质量保障的重要一环,在接口自动化日常工作中,我们致力于场景的覆盖与结果校验。随着业务的高速发展,高效保质的迭代自动化用例成了我们的一个研究...

    有赞coder
  • TCP 三次握手的意义

    在网络的传输层协议中, 存在着两大悍将: TCP 和 UDP . 从前, 我傻傻的以为自己对他们虽谈不上精通, 但还是知道的, 但是, 我错了, 我被自己问住了...

    烟草的香味
  • Linux——远程登陆管理工具

    mathor
  • MYSQL 从如何尝试抛弃慢查询谈起

    MYSQL 的慢查询一般是开发人员和DBA,获取糟糕的SQL和可能缺少索引的一种方法,这样的方法已经伴随了MYSQL 一致到了MYSQL 5.7,但是否我们可以...

    AustinDatabases
  • MYSQL 8 Serialized Dictionary Information

    随着MYSQL 8 越来越稳定,并且开始使用的人和公司越来越多起来,掌握MYSQL 8 的工具变得越来越重要。不赶到别人前头,那就只能follower.

    AustinDatabases
  • 009.MySQL-Keepalived搭配脚本03

    木二

扫码关注云+社区

领取腾讯云代金券