React Native第三方平台分享Android,IOS双平台


React Native双平台分享功能一行代码,双平台分享源码已开源到Github:react-native-share

目前支持分享的平台有【QQ】【QQ空间】【微信】【朋友圈】【微博】【FaceBook】 欢迎大家star,fork.....


【Android平台配置】

1. app目录下创建libs文件夹,添加依赖文件直接复制源码中libs目录即可

2.app / src / main 目录下创建jniLibs目录,添加JNI文件直接复制源码中jniLibs目录即可

3. 包名目录下,添加Activity回调【直接复制源码中apsharewxapiWBShareActivity即可】

4. 在AndroidMainfest.xml文件添加权限【直接复制源码即可

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />

5. 在AndroidMainfest.xml文件下的 <application></application>中添加分享平台【直接复制源码即可

<activity
android:name=".WBShareActivity"
android:configChanges="keyboardHidden|orientation"
android:screenorientation="portrait" >
<intent-filter>
<action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name="com.sina.weibo.sdk.component.WeiboSdkbrowser"
android:configChanges="keyboardHidden|orientation"
android:windowSoftInputMode="adjustResize"
android:exported="false" >
</activity>
<serviceandroid:name="com.sina.weibo.sdk.net.DownloadService"
android:exported="false"></service>
<activity
android:name=".wxapi.WXEntryActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:screenorientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<activity
android:name="com.tencent.tauth.AuthActivity"
android:launchMode="singleTask"
android:noHistory="true" >

<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.broWSABLE" />
<data android:scheme="tencent100424468" />  <= 改为自己申请的QQkey
 </intent-filter>
</activity>
<activity
android:name="com.tencent.connect.common.AssistActivity"
android:screenorientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="orientation|keyboardHidden|screenSize"/>
<activity
android:name=".apshare.ShareEntryActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:screenorientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<Meta-data
android:name="UMENG_APPKEY"
android:value="561cae6ae0f55abd990035bf" >   <= 改为自己申请的友盟Key
</Meta-data>

6. 使用【keytool -genkey -v -keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000】生成签名文件,并将签名文件放入app目录

7. 在gradle.properties文件下,添加签名信息【直接复制源码即可

MYAPP_RELEASE_STORE_FILE=my-release-key.keystore
MYAPP_RELEASE_KEY_ALIAS=my-key-alias
MYAPP_RELEASE_STORE_PASSWORD=123456(填写自己设置的密码)
MYAPP_RELEASE_KEY_PASSWORD=123456(填写自己设置的密码)

8. 在app / build.gradle 文件下的添加签名配置【直接复制源码即可

android{
...
defaultConfig{
...
}
signingConfigs{
release{
storeFilefile(MYAPP_RELEASE_STORE_FILE)
storePasswordMYAPP_RELEASE_STORE_PASSWORD
keyAliasMYAPP_RELEASE_KEY_ALIAS
keyPasswordMYAPP_RELEASE_KEY_PASSWORD
}
}
buildTypes{
release{
...
signingConfigsigningConfigs.release
}
}
}

9. 在MainApplication中初始化分享直接复制源码即可

    @Override
    protected List<ReactPackage> getPackages() {
      return Arrays.<ReactPackage>asList(
          new MainReactPackage(),new SharePackage() <= 添加引用
      );
    }
  @Override
  public void onCreate() {
    super.onCreate();
    SoLoader.init(this,false);
    Config.shareType = "react native";
    UMShareAPI.get(this);
  }

  // 配置平台
  {
    PlatformConfig.setWeixin("wx083bf496cbc48aec","750e9075fa521c82274a9d548c399825");
    PlatformConfig.setQQZone("1106207359","3JjbG8aXMuh5w0sV");
    PlatformConfig.setSinaWeibo("2733400964","fac50980a44e3e3afd4bc968ea572887","www.baidu.com");
  }

10. 在MainActivity中初始化分享回调【直接复制源码即可

  @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ShareModule.initactivity(this);
    }

    @Override
    public void onActivityResult(int requestCode,int resultCode,Intent data) {
        super.onActivityResult(requestCode,resultCode,data);
        UMShareAPI.get(this).onActivityResult(requestCode,data);
    }

【IOS平台配置】


分享

import UShare from './share/share';
import SharePlatform from './share/SharePlatform';
      /**
         * 参数说明:
         * 1. 标题
         * 2. 内容
         * 3. 跳转链接
         * 4. 图片链接
         * 5. 分享平台
         * 6. 分享结果回调
         */
        UShare.share('标题','内容','http://baidu.com','http://dev.umeng.com/images/tab2_1.png',SharePlatform.QQ,(code,message) => {
                // 分享成功:code=200
                // ToastAndroid.show(message,ToastAndroid.SHORT);
                
        });

相关文章

一、前言 在组件方面react和Vue一样的,核心思想玩的就是组件...
前言: 前段时间学习完react后,刚好就接到公司一个react项目...
前言: 最近收到组长通知我们项目组后面新开的项目准备统一技...
react 中的高阶组件主要是对于 hooks 之前的类组件来说的,如...
我们上一节了解了组件的更新机制,但是只是停留在表层上,例...
我们上一节了解了 react 的虚拟 dom 的格式,如何把虚拟 dom...