第三方服务之Bmob后端云的推送服务的集成和使用(三)
事先说明:这里的一切操作都是在集成了BmobSDK之后实现的,如果对Bmob还不了解的话,请关注我第一篇Bmob文章
步骤一:推送服务的集成
在app的build.gradle中添加compile依赖文件:
compile 'cn.bmob.android:bmob-push:0.8'
在manifests文件中
配置权限
:
<!-- 推送所需的权限 -->
<uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
在manifests文件中添加需要的配置:
<!-- BmobPush start -->
<service
android:name="cn.bmob.push.lib.service.PushService"
android:exported="true"
android:label="PushService"
android:permission="cn.bmob.permission.push"
android:process="cn.bmob.push">
<intent-filter>
<action android:name="cn.bmob.push.lib.service.PushService" />
</intent-filter>
</service>
<receiver android:name="cn.bmob.push.PushReceiver">
<intent-filter android:priority="2147483647">
<!-- 优先级加最高 -->
<!-- 系统启动完成后会调用 -->
<action android:name="android.intent.action.BOOT_COMPLETED" />
<!-- 解锁完成后会调用 -->
<action android:name="android.intent.action.USER_PRESENT" />
<!-- 监听网络连通性 -->
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
<receiver android:name=".Receiver.MyPushMessageReceiver">
<intent-filter>
<action android:name="cn.bmob.push.action.MESSAGE" />
</intent-filter>
</receiver>
<!-- BmobPush end -->
创建一个
Receiver
接受推送消息:
public class MyPushMessageReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
if(intent.getAction().equals(PushConstants.ACTION_MESSAGE)){
Log.d("bmob", "客户端收到推送内容:"+intent.getStringExtra("msg"));
}
}
}
在Activity的onCreate方法中
初始化
BmobPush:
//使用推送服务时的初始化操作
BmobInstallation.getCurrentInstallation(this).save();
//启动推送服务
BmobPush.startWork(this);
在Bmob后台管理中设置:
步骤二:推送服务的使用
可以在Bmob后台管理中直接发送推送:
也可以在代码中发送推送:(三种方式)
// 创建推送消息的对象
bmobPushManager = new BmobPushManager(this);
// 推送一条消息给所有安装此应用的设备
bmobPushManager.pushMessageAll("这是给所有设备推送的一条消息。");
// 创建Installation表的BmobQuery对象
BmobQuery<BmobInstallation> query = BmobInstallation.getQuery();
// 并添加条件为设备类型属于android
query.addWhereEqualTo("deviceType", "android");
// 设置推送条件给bmobPushManager对象。
bmobPushManager.setQuery(query);
// 设置推送消息,服务端会根据上面的查询条件,来进行推送这条消息
bmobPushManager.pushMessage("这是一条推送给所有Android设备的消息。");
// 创建推送消息的对象
if (bmobPushManager == null) {
bmobPushManager = new BmobPushManager(context);
}
// 创建Installation表的BmobQuery对象
BmobQuery<BmobInstallation> query = BmobInstallation.getQuery();
// 添加条件推送给指定的installationId
query.addWhereEqualTo("installationId", installationId);
// 设置推送条件给bmobPushManager对象。
bmobPushManager.setQuery(query);
// 设置推送消息,服务端会根据上面的查询条件,来进行推送这条消息
bmobPushManager.pushMessage("这是一条推送给指定installationId的消息");