您的位置:首页 > 移动开发 > Android开发

OnePush一个可拓展的Android消息推送SDK(使用介绍)

2017-05-27 13:48 756 查看
一、为啥会有OnePush

消息推送,在国内,要么自己做,要么集成第三方的sdk,现在第三方推送的sdk,有很多可以选择,友盟,极光,小米等,我们在选择消息推送的时候,肯定是需要一个能及时把消息推送给用户的sdk,那么问题来了,很多国产手机厂商都各自根据android修改的UI系统,各种的进程清理,导致消息推送的后台无法存活,特别是小米、华为的手机上,只要用户清理,基本上推送后台服务就死绝了,当然这个也不能怪人家手机厂商,主要是手机上的app,基本上每个app都有自己的后台推送服务,而且有的流氓程序,甚至还附加了很多其他的后台服务,这样就会导致用户手机耗电、卡顿,手机厂商为了解决既不耗电,也能及时收到消息通知,就推出了自己的推送SDK,比如小米,华为,魅族。如果你的app集成了该厂商的消息推送sdk,那么在该厂商手机上,就属于系统的级别的服务,就算手机被一键清理掉,消息还是能准时的推送到用户的手机上,但是在国内,生产手机的厂家不不止一个,而且每家都有自己的消息推送,如何做到快速的接入和切换推送呢?那么OnePush,就是解决根据不同的厂商手机,集成不同的推送,从而保证消息的及时送达,目前OnePush提供的小米推送,华为推送的实现,如果你还需要使用其他推送SDK,最多写两个类,就可以轻松接入OnePush。

二、怎么集成和使用OnePush

添加依赖

dependencies {
compile 'com.peng.library:one-push-core:1.0.1'
compile 'com.peng.library:one-push-huawei:1.0.1'
compile 'com.peng.library:one-push-xiaomi:1.0.1'
}


继承BaseOnePushReceiver重写里面的方法,并在AndroidManifest.xml中注册

<receiver android:name="com.peng.openpush.TestPushReceiver">
<intent-filter>
<action android:name="com.peng.one.push.ACTION_RECEIVE_NOTIFICATION" />
<action android:name="com.peng.one.push.ACTION_RECEIVE_NOTIFICATION_CLICK" />
<action android:name="com.peng.one.push.ACTION_RECEIVE_MESSAGE" />
<action android:name="com.peng.one.push.ACTION_RECEIVE_COMMAND_RESULT" />
</intent-filter>
</receiver>


在AndroidManifest.xml的application标签下,添加第三方推送实现类

<!--如果引入了one-push-huawei类库-->
<meta-data
android:name="OnePush_HuaWei_102"
android:value="com.peng.one.push.huawei.HuaweiPushClient" />

<!--如果引入了one-push-xiaomi库-->
<meta-data
android:name="OnePush_XiaoMi_101"
android:value="com.peng.one.push.xiaomi.XiaomiPushClient" />


关于标签书写规则:

* android:name 必须是以“ OnePush ”开头,并且以”_”进行分割(OnePush_平台名称_平台标识码),在初始化OnePush 的时候,根据标识码和当前手机系统,动态的使用不同平台消息推送。

* android:value 这个是继承IPushClient实现类,全类名路径。

添加第三方AppKey和AppSecret

如果使用了one-push-xiaomi,那么需要在AndroidManifest.xml添加小米的AppKey和AppSecret(注意下面的“\ ”必须加上,否则获取到的是float而不是String,就会导致id和key获取不到正确的数据)

<meta-data
android:name="MI_PUSH_APP_ID"
android:value="\ 2215463567096567312" />

<meta-data
android:name="MI_PUSH_APP_KEY"
android:value="\ 9889423330043400" />


如果OnePush使用了小米推送,需要注册小米推送权限

<!--注意下面的必须修改   -->
<permission
android:name="com.peng.one.push.permission.MIPUSH_RECEIVE"
android:protectionLevel="signature" />
<!--这里com.peng.one.push改成你的app的包名,以build.gralde中的applicationId为准-->
<uses-permission android:name="com.peng.one.push.permission.MIPUSH_RECEIVE" />
<!--这里com.peng.one.push改成你的app的包名,以build.gralde中的applicationId为准-->


初始化OnePush

//初始化的时候,回调该方法,可以根据platformCode和当前系统的类型,进行注册
//返回true,则使用该平台的推送,否者就不使用
OnePush.init(this, new OnOnePushRegisterListener() {
@Override
public boolean onRegisterPush(int platformCode, String platformName) {
//platformCode和platformName就是在<meta/>标签中,对应的"平台标识码"和平台名称
//华为手机使用华为推送,其他手机使用小米推送
if (RomUtils.isHuaweiRom() && platformCode == 102) {
Log.i(TAG, "onRegisterPush: 华为推送");
return true;
} else if (platformCode == 101) {
Log.i(TAG, "onRegisterPush: 小米推送");
return true;
}
return false;
}
});


关于添加其他消息推送SDK具体操作(如果你不满足OnePush提供的小米、华为推送,可根据下面步骤,将其他厂商提供的推送,添加到OnePush里面)

创建XXXClient 实现IPushClient接口,并且重写对应的方法,initContext(Context),会在初始化的使用进行调用,可以在在这里进行获取第三方推送注册需要的ID,KEY或者其他操作,建议在AndroidManifest.xml中的Application标签下添加,然后在initContext(Context)中进行获取。

创建三方消息推送的Receiver后者IntentService,重写三方推送的的接收透传消息和通知的方法,并且使用OneOneRepeater将具体的操作反馈,透传消息,通知,通知点击事件,转发到OnePush。

记得在OnePush注册的时候,进行消息推送平台的选择。

具体操作方法:详见one-push-xiaomi

三、相关api介绍

OnePush详细api

方法名称描述及解释
init(Context , OnOnePushRegisterListener)初始化OnePush,建议在Application中onCreate()方法
register()注册消息推送
unregister()取消注册消息推送
bindAlias(String)绑定别名
unBindAlias(String)取消绑定别名
addTag(String)添加标签
deleteTag(String)删除标签
getPushPlatFormCode()获取推送平台code(AndroidManifest.xml中注册)
getPushPlatFormName()获取推送平台name(AndroidManifest.xml中注册)
setDebug(boolean)设置是否为debug模式
OneRepeater详细api

方法名称描述及解释
transmitCommandResult(Context,int,int,String,String,String)转发操作反馈(具体type在OnePush.TYPE_XXX)
transmitMessage(Context,String,String,Map
intent://com.peng.one.push/notification?title=标题&content=通知内容&extraMsg=额外信息&keyValue={"key1":"value1","key2":"value2","key3":"value3"}#Intent;scheme=OnePush;launchFlags=0x10000000;end


七、开源地址

OnePush源代码

使用介绍

八、附点图吧,前面太多文字看着太累



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: