Android:Umeng(友盟)消息推送(二)
在已集成友盟统计的情况下:Android:Umeng(友盟)数据统计(一)
第一步:
个人中心---U-Push(消息推送)---添加新应用---从已有应用中添加 如图:
获得Appkey和secret:
第三步:
下载消息推送SDK:http://dev.umeng.com/push/android/sdk-download
第四步:
把下载的SDK里面的PushSDK当做Module导入自己的项目
第五步:
将PushSDKModule包下的manifest中的${applicationId}修改为app对应的包名,如图:
app包名可在build.gradle中找到:
第六步:
在PushSDKModule包下的manifest中添加Appkey和secret:
<meta-dataandroid:name="UMENG_APPKEY"android:value="xxxxxxxxxxxxxxxxxxxxxxxxxxxx" >
</meta-data>
<meta-dataandroid:name="UMENG_MESSAGE_SECRET"android:value="xxxxxxxxxxxxxxxxxxxxxxxxxxxx" >
</meta-data>
第七步:
在App入口(Application,此处BaseApplication为自己定义)中添加(结合上一篇文章统计分析):
public class BaseApplication extends Application{@Overridepublic void onCreate() {super.onCreate();initYoumeng();}private void initYoumeng(){//------------------友盟统计----------------------//禁止默认的页面统计方式MobclickAgent.openActivityDurationTrack(false);/** 设置是否对日志信息进行加密, 默认false(不加密). */AnalyticsConfig.enableEncrypt(!BuildConfig.DEBUG);//捕获程序崩溃日志MobclickAgent.setCatchUncaughtExceptions(true);//------------------友盟推送------------------final PushAgent mPushAgent = PushAgent.getInstance(this);//开启推送并设置注册的回调处理mPushAgent.enable(new IUmengRegisterCallback(){@Overridepublic void onRegistered(String registrationId){//onRegistered方法的参数registrationId即是device_token}});}}
第八步:
统计应用启动数据,在主Activity中添加(此处的BaseActivity为所有Activity的父类):
public class BaseActivity extends AppCompatActivity{protected Context mContext;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);mContext = getApplicationContext();//友盟统计应用启动数据PushAgent.getInstance(mContext).onAppStart();}@Overrideprotected void onResume() {super.onResume();MobclickAgent.onResume(this);//友盟统计}@Overrideprotected void onPause() {super.onPause();MobclickAgent.onPause(this);//友盟统计}
}
至此简单的消息推送集成完成。
测试:
通过mPushAgent.isEnabled()
来查询状态。状态表示有没有启用/关闭推送功能, 不表示推送后台服务的运行状态。
通过UmengRegistrar.getRegistrationId(context)来获取设备的device_token
进入友盟消息推送界面,选择测试模式,添加设备:
填写设备名称即获取到的device_token,即可开始测试;
深入了解 自定义消息处理:
实现一个类,继承 UmengBaseIntentService, 重写onMessage(Context context, Intent intent) 方法,并调用super.onMessage(context, intent)。
public class YouMengPushIntentService extends UmengBaseIntentService
{@Overrideprotected void onMessage(Context context, Intent intent){super.onMessage(context, intent);try{Intent data = new Intent(intent);data.setClass(context, DialogActivity.class);data.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//需为Intent添加Flag:Intent.FLAG_ACTIVITY_NEW_TASK,否则无法启动Activity。context.startActivity(data);} catch (Exception e){e.printStackTrace();}}
}
DialogActivity:
public class DialogActivity extends BaseActivity
{public static final String TAG = "DialogActivity";@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);try{//可以通过MESSAGE_BODY取得消息体final String message = getIntent().getStringExtra(BaseConstants.MESSAGE_BODY);if (TextUtils.isEmpty(message))return;final UMessage msg = new UMessage(new JSONObject(message));UTrack.getInstance(mContext).trackMsgClick(msg);Map<String, String> extra = msg.extra;Log.d(TAG, "message=" + message); //消息体 Log.d(TAG, "custom="+msg.custom); //自定义消息的内容 Log.d(TAG, "title="+msg.title); //通知标题 Log.d(TAG, "text=" + msg.text); //通知内容AlertDialog dialog;if (null != extra && extra.containsKey("msgType"))dialog = new AlertDialog.Builder(this).setTitle("消息提示").setMessage(msg.text).setCancelable(false).setPositiveButton("确认", new DialogInterface.OnClickListener(){@Overridepublic void onClick(DialogInterface dialog, int which){}}).create();elsedialog = new AlertDialog.Builder(this).setTitle("消息提示").setMessage(msg.text).setCancelable(false).setPositiveButton("确认", null).create();dialog.setOnDismissListener(new DialogInterface.OnDismissListener(){@Overridepublic void onDismiss(DialogInterface dialog){onBackPressed();}});dialog.show();} catch (Exception e){e.printStackTrace();}}}
在app AndroidManifest.xml 中声明:
<!-- 友盟推送service --><serviceandroid:name=".YouMengPushIntentService"android:process=":push" />
别忘了app AndroidManifest.xml 中声明 DialogActivity:
<activityandroid:name=".DialogActivity"android:launchMode="singleTask"android:screenOrientation="portrait"android:theme="@style/DialogBottom" />
在Application中调用:
mPushAgent.setPushIntentServiceClass(YouMengPushIntentService.class);
结合之前的代码,如图:
private void initYoumeng(){//------------------友盟统计----------------------//禁止默认的页面统计方式MobclickAgent.openActivityDurationTrack(false);/** 设置是否对日志信息进行加密, 默认false(不加密). */AnalyticsConfig.enableEncrypt(!BuildConfig.DEBUG);//捕获程序崩溃日志MobclickAgent.setCatchUncaughtExceptions(true);//------------------友盟推送------------------final PushAgent mPushAgent = PushAgent.getInstance(this);//开启推送并设置注册的回调处理mPushAgent.enable(new IUmengRegisterCallback(){@Overridepublic void onRegistered(String registrationId){//onRegistered方法的参数registrationId即是device_token}});// Toast.makeText(this, mPushAgent.isEnabled() + "", Toast.LENGTH_SHORT).show();mPushAgent.setPushIntentServiceClass(YouMengPushIntentService.class);}}
注:
1、在onMessage()中,请务必调用super.onMessage(context, intent);否则,后台无法统计消息的到达。
2、打开消息行为的数据统计:默认情况下,SDK将用户点击通知栏的行为定义为“打开消息”。使用PushIntentService自定义处理后,SDK只能记录消息送达的数据,无法记录消息打开的数据。要记录消息打开的数据,你可以在应用中定义打开消息的语义,并使用以下接口向服务器发送消息打开的数据以便统计:UTrack.getInstance(context).trackMsgClick(msg);
3、也可以根据需要对自定义处理的消息进行忽略统计:UTrack.getInstance(context).trackMsgDismissed(msg);
4、如果需要打开Activity,需为Intent添加Flag:Intent.FLAG_ACTIVITY_NEW_TASK,否则无法启动Activity。
5、如果使用了完全自定义处理后,又想恢复成友盟的默认的处理,可以通过如下设置来恢复mPushAgent.setPushIntentServiceClass(null);
Android:Umeng(友盟)消息推送(二)相关推荐
- 友盟消息推送服务器demo,umeng友盟消息推送功能集成
umeng友盟消息推送功能集成(本人使用的是eclipse开发) 1.首先请自行观看友盟消息推送集成的API文档. 观看地址如下: 2.集成步骤如下 下载sdk 注意:有两种sdk如果用户已经集成支付 ...
- 友盟推送 php,PHP 友盟消息推送类
这篇文章主要介绍了关于PHP 友盟消息推送类,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下<?php /** * 友盟消息 安卓 IOS 推送类 * */ class Allie ...
- 友盟+消息推送U-Push为无他相机 提供快速、高并发的推送服务
在"颜值即正义"的今天,相机类App已经成为让人变美的刚需类应用工具.自拍分享.假日游玩.美食推荐......相机类App已经深入到用户的生活点滴.瘦脸,拉腿,换滤镜,加贴纸,一张 ...
- 友盟 集成到 java web_友盟消息推送SDK集成
1.创建应用 在友盟有账号的情况下(没有的请自行创建),创建应用之前需要去苹果开发者网站申请一个App ID和配置一个用于推送的APNs证书,下载并安装APNs推送证书后,打开钥匙串从这个证书导出一个 ...
- 友盟消息推送SDK集成
1.创建应用 在友盟有账号的情况下(没有的请自行创建),创建应用之前需要去苹果开发者网站申请一个App ID和配置一个用于推送的APNs证书,下载并安装APNs推送证书后,打开钥匙串从这个证书导出一个 ...
- Android友盟消息推送
1. 申请应用消息推送账号 集成SDK之前, 请在 http://message.umeng.com 创建应用,获取应用对应的AppKey和Umeng Message Secret.并将自己服务器ip ...
- 友盟消息推送java服务端
基本概念 appkey:应用唯一标识 app_master_secret:服务器Key. device_token: 友盟后台对设备的唯一标识.注意, Android的device_token是44位 ...
- 友盟消息推送服务器demo,友盟消息推送总结
分享的文章连接 1 http://blog.csdn.net/shenjie12345678/article/details/41120637 2:http://dev.umeng.com/push ...
- android 友盟推送获取不到devicetoken,使用友盟消息推送中遇到的哪些问题--索引(开发者必读)...
友盟推送服务器容量如何?每天耗电.耗流量多少?开发者自己的推送如何与友盟推送系统进行通讯?用户如何关闭推送服务?集成中有哪些坑?等等等等,汇总贴,供参考. 先来介绍下友盟推送有啥功能吧. 第一,支持多 ...
最新文章
- VS2005快捷键大全
- NET面试题:C#中的lock关键字有何作用
- 公网mysql_(看图)为什么无法通过公网登录MySQL?
- 树莓派使用STEP6:安装git
- 程序员35岁之后的出路_35岁的程序员走向何方?
- 聚焦技术和实践,腾讯全面揭秘基础设施和大数据演进之路
- .DateTimeToStr函数专用优化版
- 【汇编语言与计算机系统结构笔记04】80x86计算机组织、保护模式、存储器、寄存器、计算机系统结构金字塔
- c语言删除文件remove_「Python」 - 文件基本操作
- perl语言入门级练习记录23章
- java office在线预览_Office文件在线预览(JAVA)
- 深度可分离卷积解析 - MobileNetV1
- 2017-2018-1 20155314 20155323 实验二 固件程序设计
- 数据预处理---将文本属性标签转换为数字标签的方法
- python re 正则提取中文
- 【数据结构】格洛克怎么上膛?栈的结构帮你解答!
- 如何检查NAS硬盘有坏没有
- 第28课:彻底解密Spark Sort-Based Shuffle排序具体实现内幕和源码详解
- 蒟阵P3390 【模板】矩阵快速幂
- SilkTest那些事儿_第一章 ST的HelloWord_录制回放1