React native 分享 友盟分享SDK
APP專案中用到分享功能是很常見的,比如我本次專案中可能還要用到推送、統計相關,所以目前選擇了友盟SDK,本文主要是針對安卓。
首先放官方
跟著整合文件操作,目錄不明白的可以參考DEMO。用 https://developer.umeng.com/sdk/reactnative 的橋接檔案(.java)(其中的js裡的ShareUtil.js可以放到我們自己的元件components資料夾裡,最後呼叫的時候會用到,用法就相當於封裝好的一個元件),用https://developer.umeng.com/sdk/android的最新jar,根據需要整合下載並放到對應的目錄。
只是分享的話,目錄大概是:(注意res資料夾裡的檔案也要複製過來,不然可能會閃退——缺少資原始檔)
接下來要將上面一幅圖中新引進來的幾個橋接檔案(.java)中引用包名的地方, com.umeng.soexample.invokenative 改成 (包名).invokenative,這時候應該就能看懂這個是怎麼用的了吧,要靈活點哦,比如 WXEntryActivity.java 裡應該是 (包名).wxapi,根據我的目錄結構,相對的之前的 MainActivity.java 就直接是 (包名)。還有我們暫時不用的東西要先註釋掉,比如 DplusReactPackage.java 裡面的
// 因為這些的橋接檔案.java和.jar目前沒有放進專案,直接用了會報錯
// modules.add (new PushModule(reactContext)); // 推送相關
// modules.add(new AnalyticsModule(reactContext)); // 統計
接著文件,在 MainActivity.java 、MainActivity.java裡面加程式碼,這個時候就應該結合DEMO裡的相應檔案來改了,因為新增方法之前肯定是需要引入(import)的,但文件中沒有提。但也不是把DEMO裡頭部的 import 都引進來,因為DEMO裡是把推送和統計功能都做了,所以我們根據文件裡新增的方法和欄位選擇性的複製過來(import中若有com.umeng.soexample
,需換成包名。不在目錄內的不
import com.umeng.socialize.PlatformConfig;
),如果沒有引,執行的時候會報錯到相應方法。
到這裡我們應該能調通微信分享了(打包後apk,未打包的會一閃而過,因為微信分享需要驗證包名+appid+appsecret),要想調通QQ等,需要跟著文件Share-Android最後有個 “分享其它工程配置請參照分享工程配置”的入口,我們主要根據這個工程配置 http://dev.umeng.com/sdk_integate/android_sdk/android_share_doc#1_5 在 android/app/src/main/AndroidManifest.xml
里加一些東西:sdk中需要的Activity:新浪、QQ等,其中QQ請使用完整版(即使SDK引的是精簡版,測試精簡版Activity會報錯),當然這些也可以直接從DEMO裡對應的檔案讀取。
至此,重新編譯執行一下應該就能呼叫分享元件了,若報錯不能deleted…什麼的,手動刪除 android / app / build 下的所有檔案即可。