# react-native-mixpush **Repository Path**: shuidao_admin/react-native-mixpush ## Basic Information - **Project Name**: react-native-mixpush - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-05-25 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # react-native-mixpush 集成小米推送、华为推送、魅族推送及个推推送的React-Native版本! 由于使用任何一种Android推送都很难在APP进程被杀死后收到推送,只有集成各厂商提供的系统级别推送才能完成此任务,故考虑小米、华为、魅族手机使用官方推送,其他手机使用个推推送! 注:本项目仅适用于android平台(ios统一的apns推送机制较为稳定,只需自行选择一种推送集成即可)。 >QQ交流群:516032289 # 安装: npm install --save react-native-mixpush-android # 使用: ## 1、android/settings.gradle ... include ':react-native-mixpush-android' project(':react-native-mixpush-android').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-mixpush-android') ## 2、app/build.gradle manifestPlaceholders = [ PACKAGE_NAME : "你的包名", //测试环境 GETUI_APP_ID : "个推APPID", GETUI_APP_KEY : "个推APPKEY", GETUI_APP_SECRET : "个推APPSECRE" ] dependencies { ... compile project(":react-native-mixpush-android") } ## 3、android/build.gradle allprojects { repositories { mavenLocal() jcenter() ... //个推 maven { url "http://mvn.gt.igexin.com/nexus/content/repositories/releases/" } //华为推送 maven {url 'http://developer.huawei.com/repo/'} } } ## 4、AndroidManifest.xml ### manifest节点下添加: ### application节点下添加: ## 5、注册推送 ### MainApplication中引用组件: import com.duanglink.rnmixpush.MixPushReactPackage; protected List getPackages() { return Arrays.asList( new MainReactPackage(), ... new MixPushReactPackage() ); } }; ### MainActivity中注册推送: import com.duanglink.huaweipush.HuaweiPushActivity; public class MainActivity extends HuaweiPushActivity { @Override public void onCreate(Bundle savedInstanceState) { if(savedInstanceState==null){ savedInstanceState=new Bundle(); } savedInstanceState.putString("meizuAppId","魅族AppId"); savedInstanceState.putString("meizuAppKey","魅族AppKey"); savedInstanceState.putString("xiaomiAppId","小米AppId"); savedInstanceState.putString("xiaomiAppKey","小米AppKey"); super.onCreate(savedInstanceState); } ... } ## 6、React-Native客户端接收事件: var { NativeAppEventEmitter } = require('react-native'); NativeAppEventEmitter.addListener( 'receiveRemoteNotification', (notification) => { Alert.alert('消息通知',JSON.stringify(notification)); } ); ## 7、React-Native客户端方法说明: import MixPush from 'react-native-mixpush-android'; MixPush.setAlias(alias); //设置别名
MixPush.unsetAlias(alias); //取消设置别名
MixPush.setTags(tags); //设置用户标签
MixPush.unsetTags(tags); //取消设置用户标签
MixPush.getClientId(); //获取客户端ID
     >以上方法均不支持华为手机
       说明:getClientId获取到的ID为用户在推送平台的唯一标识(小米:regId,魅族:pushId;个推:clientId),用于定向推送;
    >此外,所有推送平台在APP推送注册成功后会往客户端发送一次注册成功事件(包含华为:deviceToken),事件名为:"receiveClientId",并携带clientId,可使用该事件与getClientId方法配合使用达到获取clientId的目的。
实例:    //主动获取
   MixPush.getClientId((cid)=>{       alert("cid:"+cid);//自行处理cid代码 });    //监听事件
   NativeAppEventEmitter.addListener( 'receiveClientId', (cid) => { alert("cid:"+cid);//自行处理cid代码 } ); # 特别说明 本项目参考了另外一个大神的开源项目 [joyrun/MixPush](https://github.com/joyrun/MixPush) !  由于本人非原生开发者,不妥之处请指正,邮箱:wangheng3751@qq.com !  目前项目处于持续完善更新中...