React-Native 消息推送--Android混合推送

背景

由于使用任何一种Android推送都很难在APP进程被杀死后收到推送,只有集成各厂商提供的系统级别推送才能完成此任务,故考虑小米、华为、魅族手机使用官方推送,其他手机使用个推推送!

项目GitHub地址:
https://github.com/wangheng3751/react-native-mixpush

安装:

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;
    
  //特别注意:此处继承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代码 } );

说明

后台推送使用各平台后台管理系统或自行集成SDK。

项目QQ交流群:516032289

你可能感兴趣的:(React-Native 消息推送--Android混合推送)