Bmob 推送功能Demo
来源:互联网 发布:放置类挂机游戏源码 编辑:程序博客网 时间:2024/06/05 02:16
这个Demo使用Bmob实现了一个小的推送功能 ,顺便整理下学过的知识.
初始化Bmob请看这篇文章
Bmob的简单应用 — HelloWorld
Bmob推送功能简介
通过云推送,你可以随时随地的向应用程序的用户推送通知或消息,与用户保持积极互动提升用户留存率,活跃度和用户体验度。
Bmob配置
- 先下载推送SDK,后将jar包放在libs目录下,然后添加到项目,ADT和AS配置过程一样.
- 添加权限
<!-- BmobSDK所需的权限 --> <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.WRITE_EXTERNAL_STORAGE" /> <!--推送所需的权限--> <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
- 配置Bmob的Service和BroadCast
<service android:label="PushService" android:name="cn.bmob.push.lib.service.PushService" android:process="cn.bmob.push" android:exported="true"> <intent-filter> <action android:name="cn.bmob.push.lib.service.PushService"/> </intent-filter></service><receiver android:name="cn.bmob.push.PushReceiver"> <intent-filter><!--优先级加最高--> <!-- 系统启动完成后会调用 --> <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>
这些都是文档上的内容,可以从官网上查看,Bmob使用一种心跳机制维持Socket的长连接,即每次定时会发送自定义结构体进行保活.
初始化Bmob及推送
/** * Created by yangtianrui on 16-6-10. * 初始化Bmob */public class BaseActivity extends AppCompatActivity { @Override public View onCreateView(String name, Context context, AttributeSet attrs) { // 初始化BmobSDK Bmob.initialize(this, "887fb8cdafa392424a938a99673a1388"); // 使用推送服务时的初始化操作 BmobInstallation.getCurrentInstallation(this).save(); // 启动推送服务 BmobPush.startWork(this); // 向服务端发送推送请求,手动进行推送// BmobPushManager manager = new BmobPushManager(this);// manager.pushMessage("test"); return super.onCreateView(name, context, attrs); }}
自定义广播接收Bmob推送
/** * Created by yangtianrui on 16-6-10. * 接收Bmob发出的推送 */public class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(PushConstants.ACTION_MESSAGE)) { // 收到广播时,发送一个通知 String jsonStr = intent.getStringExtra(PushConstants.EXTRA_PUSH_MESSAGE_STRING); String content = null; try { // 处理JSON JSONObject jsonObject = new JSONObject(jsonStr); content = jsonObject.getString("alert"); } catch (JSONException e) { e.printStackTrace(); } NotificationManager manager = (NotificationManager) context.getSystemService(context.NOTIFICATION_SERVICE); Notification notify = new Notification.Builder(context) .setSmallIcon(R.mipmap.ic_launcher) .setContentTitle("收到一条推送") .setContentText(content) .build(); manager.notify(1, notify); } }}
此处intent.getAction().equals(PushConstants.ACTION_MESSAGE即为收到的通知,使用广播对收到的信息进行过滤,解析出推送的消息.
ManiFest文件中配置
<!-- 自定义消息接收器,对收到的消息进行处理 --> <receiver android:name=".MyReceiver"> <intent-filter > <action android:name="cn.bmob.push.action.MESSAGE"/> </intent-filter> </receiver>
现在就可以在后台进行推送了
模拟机上看到的结果
顺便整理下Notification的知识吧
API 16 以上使用Notification.Builder构造通知对象
使用NotificationManager发送通知,该对象从SystemService中获取
构造Notification对象
使用PendingIntent创建点击时响应
一个简单的通知DEMO
public void text_notify(View view) { // 获取系统通知对象 // 用于推送通知 NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); // 使用PendingIntent延时执行Intent PendingIntent intent = PendingIntent.getActivity(this, 0, new Intent(this, MainActivity.class), 0); // 使用Builder构造通知对象 Notification notify = new Notification.Builder(this) .setSmallIcon(R.mipmap.ic_launcher) // 必须设置图片,否则无法正常推送 .setContentInfo("Message Content") .setTicker("This is Ticker") // 直接在标题栏里显示的通知 .setContentTitle("Content Title") .setContentIntent(intent) // 点击事件 .setOngoing(false) // 允许用户删除// .setNumber(1) .build(); // 不会自动消失 // notify.flags |= Notification.FLAG_NO_CLEAR; // FLAG的一些熟悉 //FLAG_AUTO_CANCEL 该通知能被状态栏的清除按钮给清除掉 //FLAG_NO_CLEAR 该通知不能被状态栏的清除按钮给清除掉 //FLAG_ONGOING_EVENT 通知放置在正在运行 //FLAG_INSISTENT 是否一直进行,比如音乐一直播放,知道用户响应 // 点击通知时,自动清除 notify.flags |= Notification.FLAG_AUTO_CANCEL; notify.defaults = Notification.DEFAULT_ALL; manager.notify(1, notify); }
Builder的一些其它属性
// .setContent(RemoteViews)//自定义的remoteviews // .setFullScreenIntent(p, true)//不会再通知栏直接显示,但拉下后可以显示内容 Only for use with extremely high-priority notifications demanding the user's immediate attention, such as an incoming phone call or alarm clock that the user has explicitly set to a particular time. // .setDeleteIntent(null)// 通知消失时的动作 // .setContentIntent(p)//点击的动作 相当于点击button // .setLights(new Color().BLACK, 1000, 1000)//俺的手机不支持..无反应 // .setNumber(22)// // .setOngoing(true)//不能被用户x掉,会一直显示,如音乐播放等 // .setPriority(2)//优先级 // .setProgress(max, progress, indeterminate)//进度条 // .setSound(uri)//声音提示 // .setSound(sound, streamType)//科设置 streamtype // .setStyle(style)//style设置 http://developer.android.com/reference/android/app/Notification.Style.html // .setVibrate(long[])//设置震动
就先介绍这么多了,随后讲解其他功能
0 0
- Bmob 推送功能Demo
- 基于Bmob平台的推送功能
- Bmob移动支付学习Demo
- bmob实现短信验证功能
- Bmob文档阅读6-消息推送
- 使用Bmob ---扩展服务(Android消息推送)
- Bmob文档阅读4-Bmob特色功能粗略汇总
- bmob
- Bmob
- bmob
- Bmob用户功能详解(一)
- Bmob用户功能详解(二)
- Bmob用户功能详解(三)
- Bmob用户功能详解(一)
- Android--利用Bmob实现头像上传下载功能
- Bmob-App用户登陆注册功能
- windowsphone7 消息推送Demo
- android消息推送demo
- c++中的抽象类
- 开启FTP客户端(编程)
- [jvm解析系列][八]方法表集合,Code属性和Exceptions属性,你的字节码存在哪里了?
- 柴俊理金:美指企稳转危为安,黄金反弹原油走软
- http not supported or disabled in libcurl 和 未将对象引用到实例的解决办法
- Bmob 推送功能Demo
- UltraISO 为ThinkPad品牌的X100e系列通过U盘来安装
- Swift中的willSet与didSet
- jquery自己写表单验证
- import,mysql,urldecode操作
- PHP分页代码
- SmartUpload上传文件中文乱码解决
- Nginx源码分析之基本数据结构
- 乐学成语