自定义信鸽推送通知(样式)
来源:互联网 发布:comic 软件 编辑:程序博客网 时间:2024/05/16 22:01
公司要求做这个推送(自定义通知),因为官方文档写的太简洁了,自己参照各种文档,才从坑了爬出来…
public class XGMessageReceiver extends XGPushBaseReceiver { private Intent intent = new Intent("tdotapp.com.xingedemo.activity.UPDATE_LISTVIEW"); public static final String LogTag = "TPushReceiver"; private void show(Context context, String text) { Toast.makeText(context, text, Toast.LENGTH_SHORT).show(); } @Override public void onRegisterResult(Context context, int i, XGPushRegisterResult xgPushRegisterResult) { } @Override public void onUnregisterResult(Context context, int i) { if (context == null) { return; } String text = ""; if (i == XGPushBaseReceiver.SUCCESS) { text = "反注册成功"; } else { text = "反注册失败" + i; } Log.d(LogTag, text); show(context, text); } @Override public void onSetTagResult(Context context, int i, String s) { if (context == null) { return; } String text = ""; if (i == XGPushBaseReceiver.SUCCESS) { text = "\"" + s + "\"设置成功"; } else { text = "\"" + s + "\"设置失败,错误码:" + i; } Log.d(LogTag, text); show(context, text); } @Override public void onDeleteTagResult(Context context, int i, String s) { } //消息透传 @Override public void onTextMessage(Context context, XGPushTextMessage message) { // TODO Auto-generated method stub show(context, "haha"); String text = "收到消息:" + message.toString(); // 获取自定义key-value String customContent = message.getCustomContent(); if (customContent != null && customContent.length() != 0) { try { JSONObject obj = new JSONObject(customContent); // key1为前台配置的key if (!obj.isNull("key")) { String value = obj.getString("key"); Log.d(LogTag, "get custom value:" + value); } } catch (JSONException e) { e.printStackTrace(); } } // APP自主处理消息的过程... XGLocalMessage localMessage = new XGLocalMessage(); localMessage.setTitle("haha"); localMessage.setContent(message.getContent()); XGCustomPushNotificationBuilder build = new XGCustomPushNotificationBuilder(); build.setSound( RingtoneManager.getActualDefaultRingtoneUri( context, RingtoneManager.TYPE_ALARM)) // 设置声音 // setSound( // Uri.parse("android.resource://" + getPackageName() // + "/" + R.raw.wind)) 设定Raw下指定声音文件 .setDefaults(Notification.DEFAULT_VIBRATE) // 振动 .setFlags(Notification.FLAG_NO_CLEAR); // 是否可清除 // 设置自定义通知layout,通知背景等可以在layout里设置 build.setLayoutId(R.layout.layout_notification); // 设置自定义通知标题id build.setLayoutTitleId(R.id.title); // 设置自定义通知图片id build.setLayoutIconId(R.id.icon); // 设置自定义通知图片资源 build.setLayoutIconDrawableId(R.drawable.ic_launcher); // 设置状态栏的通知小图标 build.setIcon(R.drawable.ic_launcher); // 设置时间id build.setLayoutTimeId(R.id.time); // 若不设定以上自定义layout,又想简单指定通知栏图片资源 build.setNotificationLargeIcon(R.drawable.tenda_icon); // 客户端保存build_id XGPushManager.setDefaultNotificationBuilder(context, build); XGPushManager.addLocalNotification(context, localMessage); Log.d(LogTag, text); show(context, text); } private void sendIconCountMessage(Context context) { Intent it = new Intent("android.intent.action.APPLICATION_MESSAGE_UPDATE"); it.putExtra("android.intent.extra.update_application_component_name", "com.example.wujie.xungetest/.MainActivity"); String iconCount = "50"; it.putExtra("android.intent.extra.update_application_message_text", iconCount); context.sendBroadcast(it); }//通知点击回调 @Override public void onNotifactionClickedResult(Context context, XGPushClickedResult message) { if (context == null || message == null) { return; } String text = ""; sendIconCountMessage(context); // samsungShortCut(context, "25"); if (message.getActionType() == XGPushClickedResult.NOTIFACTION_CLICKED_TYPE) { // 通知在通知栏被点击啦。。。。。 // APP自己处理点击的相关动作 // 这个动作可以在activity的onResume也能监听,请看第3点相关内容 text = "通知被打开 :" + message; } else if (message.getActionType() == XGPushClickedResult.NOTIFACTION_DELETED_TYPE) { // 通知被清除啦 // APP自己处理通知被清除后的相关动作 text = "通知被清除 :" + message; } Toast.makeText(context, "广播接收到通知被点击:" + message.toString(), Toast.LENGTH_SHORT).show(); // 获取自定义key-value String customContent = message.getCustomContent(); if (customContent != null && customContent.length() != 0) { try { JSONObject obj = new JSONObject(customContent); // key1为前台配置的key if (!obj.isNull("ID")) { String value = obj.getString("ID"); Log.d(LogTag, "get custom value:" + value); } } catch (JSONException e) { e.printStackTrace(); } } // APP自主处理的过程 show(context, text); } //通知展示栏 @Override public void onNotifactionShowedResult(Context context, XGPushShowedResult xgPushShowedResult) { if (context == null || xgPushShowedResult == null) { return; } show(context, "您有1条新消息, " + "通知被展示 , " + xgPushShowedResult.toString()); }}
**private Intent intent = new Intent(“tdotapp.com.xingedemo.activity.UPDATE_LISTVIEW”);
tdotapp.com.xingedemo要替换自己的包名,不然点击推送直接黑屏
自定义推送还有其他的方法,个人认为这样比较通俗易懂
1 0
- 自定义信鸽推送通知(样式)
- 腾讯信鸽自定义推送通知
- 极光推送自定义通知栏样式
- 利用信鸽推送提示评论通知
- iOS 关于信鸽推送点击推送通知的处理
- 信鸽推送_使用自定义参数
- 信鸽推送
- 信鸽推送
- 信鸽推送
- 信鸽推送
- 信鸽推送接收通知点击打开相应Activity
- XG(信鸽推送)
- 安卓信鸽推送
- 腾讯信鸽推送
- <iOS>信鸽推送
- 信鸽推送遇到问题
- iOS 信鸽推送
- 信鸽推送集成
- PHP内核--Zend引擎
- 正则表达式 笔记 regExpression Regular expression
- linux笔记-grep及正则表达式
- java的静态变量
- javascript 异步浅谈
- 自定义信鸽推送通知(样式)
- JS中正则表达式的应用
- (Leetcode)72. Edit Distance(hard)
- linux中几种查找文件方式的比较
- grep 指令进行搜索
- linux笔记-bash脚本编程(上)
- PAT乙级1012
- 2016.10.20
- 安卓接口定义语言基础