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 
    ... 
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM