华为,小米,oppo,vivo,魅族,信鸽推送封装整合。

本文详细介绍了如何将华为、小米、OPPO、VIVO、魅族以及信鸽的推送服务进行封装整合,包括aar包的使用、应用配置、广播接收器的实现,以及如何处理点击通知栏的跳转。每个推送服务的集成步骤都有清晰的说明,并提供了相关代码示例。
摘要由CSDN通过智能技术生成

推送集成方案
1.介绍:
首先我们得aar包分为debug包,以及release包,其中release包做了混淆,开发者使用时候需要去混淆配置文件进行单独类配置,以防无法访问相应得类名。我们得aar包支持的推送分为(小米推送,华为推送,魅族推送,vivo推送,oppo推送,以及三方信鸽推送)。
2.使用:
1)将aar包拷贝到我们的项目的lib文件中,然后在我们的app build.gradle文件中添加
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar','*.aar'])
}
然后rebuild一下ok。
2)然后自己定义一个MyApplication继承BasePushApplication,这个是我们aar包自带的封装好的,可以供aar包支持的所有的推送,所以我们只需要继承这一个就ok,而且机型不需要我们自己进行判断了,只需要继承相应的方法就可以实现走相应机型的推送通道,然后别忘了在我们的清单文件中将我们自定义的MyApplication进行注册。
<application
    android:name=".MyApplication"
    xxx...>
    <activity android:name="xxx">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>
3)点击通知栏跳转到指定的Activity:
如果我们的需求有要求点击通知栏跳转到指定的activity界面的时候,需要我们在清单文件中进行跳转activity的注册,供用aar包中包含的所有推送通道的自定义界面。其中PushActivity名字可以根据自己项目自定义取,里面的配置都是
<!--所有推送得公共类。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。-->
<activity
    android:name=".PushActivity"
    android:launchMode="singleTask">
<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <data
        android:host="com.example.hwdemo"
        android:path="/notify_detail"
        android:scheme="customscheme" />
</intent-filter>
</activity>
2.1小米推送:
集成小米推送也很简单,其余复杂的事情我们的aar都处理过了,剩下的只是一些小的细节的问题,这里介绍一下使用小米推送我们要怎么做;
1)清单文件中的配置:
注意:com.xiaomi.mipushdemo 要换成自己项目中的包名
<!--小米推送权限。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<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.GET_TASKS" />
<uses-permission android:name="android.permission.VIBRATE" />
<permission
    android:name="com.xiaomi.mipushdemo.permission.MIPUSH_RECEIVE"
    android:protectionLevel="signature" /> <!-- 这里com.xiaomi.mipushdemo改成app的包名 -->
<uses-permission android:name="com.xiaomi.mipushdemo.permission.MIPUSH_RECEIVE" />

注意:com.xiaomi.mipushdemo.DemoMessageRreceiver要换成自己项目中的自定义的广播的类名。
-->
<!-- 配置小米的推送的服务和广播 -->
<service
    android:name="com.xiaomi.push.service.XMPushService"
    android:enabled="true"
    android:process=":pushservice" />
<service
    android:name="com.xiaomi.push.service.XMJobService"
    android:enabled="true"
    android:exported="false"
    android:permission="android.permission.BIND_JOB_SERVICE"
    android:process=":pushservice" /> <!-- 注:此service必须在3.0.1版本以后(包括3.0.1版本)加入 -->
<service
    android:name="com.xiaomi.mipush.sdk.PushMessageHandler"
    android:enabled="true"
    android:exported="true" />
<service
    android:name="com.xiaomi.mipush.sdk.MessageHandleService"
    android:enabled="true" /> <!-- 注:此service必须在2.2.5版本以后(包括2.2.5版本)加入 -->
<receiver
    android:name="com.xiaomi.push.service.receivers.NetworkStatusReceiver"
    android:exported="true">
    <intent-filter>
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />

        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</receiver>
<receiver
    android:name="com.xiaomi.push.service.receivers.PingReceiver"
    android:exported="false"
    android:process=":pushservice">
    <intent-filter>
        <action android:name="com.xiaomi.push.PING_TIMER" />
    </intent-filter>
</receiver>

<!-- 注册广播接收者 -->
<receiver
    android:name="com.xiaomi.mipushdemo.DemoMessageRreceiver"
    android:exported="true">
    <!-- 这里com.xiaomi.mipushdemo.DemoMessageRreceiver改成app中定义的完整类名 -->
    <intent-filter>
        <action android:name="com.xiaomi.mipush.RECEIVE_MESSAGE" />
    </intent-filter>
    <intent-filter>
        <action android:name="com.xiaomi.mipush.MESSAGE_ARRIVED" />
    </intent-filter>
    <intent-filter>
        <action android:name="com.xiaomi.mipush.ERROR" />
    </intent-filter>
</receiver>

2)使用:
非常简单,只需要在我们的自定义的MyApplication中调用BasePushApplication中的方法initXiaoMiPush,然后在initXiaoMiPush这个方法中调用setRegistXiaoMi(appId,appKey);这个方法进行小米推送的注册,其中appId和appKey,是我们在小米推送平台申请推送时候生成的,直接拿过来用就ok。
public class MyApplication extends BasePushApplication {
    @Override
    public void initXiaoMiPush() {
        super.initXiaoMiPush();
        String appId = AppParms.XmAppId;
        String appKey = AppParms.XmAppKey;
        setRegistXiaoMi(appId,appKey);
    }
}
然后是我们自定义的广播接收者,方法要运行在非ui线程中才可以。
public class XmPushReceiver extends PushMessageReceiver {
    /**
     * 1.PushMessageReceiver是一个抽象类,通过集成该类,实现小米推送注册之后的回调
     * 2.需要将IMIPushMessageReceiver注册到Manifest文件中
     * 3.通过onReceivePassThroughMessage方法处理服务器向客户端发送的透传消息
     * 4.通过onNotificationMessageClicked方法服务器向客户端发送通知消息,该回调方法会在用户点击通知之后触发
     * 5.通过onNotificationMessageArrived方法服务器向客户端发送通知消息,该回调方法会在通知消息到达客户端之后触发。另外应用在前台时不展示通知也在该方法中调用
     * 6.通过onCommandResult方法来接收客户端向服务器发送命令后的响应结果
     * 7.通过onReceiveRegisterResult方法接收客户端向服务器注册推送后响应的结果
     * 8.当前所有的操作都没有运行在UI线程
     */
    private String mRegId;
    private long mResultCode = -1;
    private String mReason;
    private String mCommand;
    private String mMessage;
    private String mTopic;
    private String mAlias;
    private String mUserAccount;
    private String mStartTime;
    private String mEndTime;
    @Override
    public void onReceivePassThroughMessage(Context context, 
MiPushMessage message) {
        mMessage = message.getContent();
        if(!TextUtils.isEmpty(message.getTopic())) {
            mTopic=message.getTopic();
        } else if(!TextUtils.isEmpty(message.getAlias())) {
            mAlias=message.getAlias();
        } else if(!TextUtils.isEmpty(message.getUserAccount())) {
            mUserAccount=message.getUserAccount();
        }
    }
    /**
     * 点击通知栏的推送
     * @param context
     * @param message
     */
    @Override
    public void onNotificationMessageClicked(Context context,
MiPushMessage message) {
    }
    @Override
    public void onNotificationMessageArrived(Context context,
MiPushMessage message) {
        mMessage = message.getContent();
        if(!TextUtils.isEmpty(message.getTopic())) {
            mTopic=message.getTopic();
        } else if(!TextUtils.isEmpty(message.getAlias())) {
            mAlias=message.getAlias();

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
含客户端和服务端 代码 亿级并发,秒级触达 稳定的大规模接入集群,同时与数亿移动智能终端保持稳定的长连接,支持十亿级并发 秒级触达用户,每天可发送百亿级的通知/消息 最省电省流量方案 智能识别网络环境,根据不同环境定制通讯协议,以最低消耗维护长连接,做到极致省电省流量 通知及消息高度压缩,节省流量的同时加密保证安全性 丰富标签,精准定向 特定标签人群,团队测试用户,全量用户,单个用户等多种推送范围选择 及时稳定地将信息送达到最相关的用户,形成用户粘性,避免骚扰 开放API接口,灵活自定义推送 开放推送能力,提供多种语言API ,括Java/PHP/Python/Node.js,业务自由集成 可视效果,实时监控 实时监控通知/消息的抵达用户量,点击转化量,点击转化率,推送效果一目了然 使用方法 登录后,创建应用,获取应用的唯一识别码AccessKey和密钥SecretKey; 下载对应平台的SDK,并参考开发文档完成SDK集成; 通过API调用或Web业务端方便快速地完成推送测试和实际发送,并实时查看推送效果。 使用场景 通知,定义为Android和iOS开发者指南中的Notifidoveion。服务器定向将信息实时送达手机,通过建立一条手机与服务器的连接链路,当有消息需要发送到手机时,通过此链路发送即可。通过推送一条用户可见的信息,引导用户进行有目的性的操作。通常用于产品信息知会、新闻推送和个性化消息等场景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值