在已集成友盟统计的情况下: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(友盟)消息推送(二)相关推荐

  1. 友盟消息推送服务器demo,umeng友盟消息推送功能集成

    umeng友盟消息推送功能集成(本人使用的是eclipse开发) 1.首先请自行观看友盟消息推送集成的API文档. 观看地址如下: 2.集成步骤如下 下载sdk 注意:有两种sdk如果用户已经集成支付 ...

  2. 友盟推送 php,PHP 友盟消息推送类

    这篇文章主要介绍了关于PHP 友盟消息推送类,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下<?php /** * 友盟消息 安卓 IOS 推送类 * */ class Allie ...

  3. 友盟+消息推送U-Push为无他相机 提供快速、高并发的推送服务

    在"颜值即正义"的今天,相机类App已经成为让人变美的刚需类应用工具.自拍分享.假日游玩.美食推荐......相机类App已经深入到用户的生活点滴.瘦脸,拉腿,换滤镜,加贴纸,一张 ...

  4. 友盟 集成到 java web_友盟消息推送SDK集成

    1.创建应用 在友盟有账号的情况下(没有的请自行创建),创建应用之前需要去苹果开发者网站申请一个App ID和配置一个用于推送的APNs证书,下载并安装APNs推送证书后,打开钥匙串从这个证书导出一个 ...

  5. 友盟消息推送SDK集成

    1.创建应用 在友盟有账号的情况下(没有的请自行创建),创建应用之前需要去苹果开发者网站申请一个App ID和配置一个用于推送的APNs证书,下载并安装APNs推送证书后,打开钥匙串从这个证书导出一个 ...

  6. Android友盟消息推送

    1. 申请应用消息推送账号 集成SDK之前, 请在 http://message.umeng.com 创建应用,获取应用对应的AppKey和Umeng Message Secret.并将自己服务器ip ...

  7. 友盟消息推送java服务端

    基本概念 appkey:应用唯一标识 app_master_secret:服务器Key. device_token: 友盟后台对设备的唯一标识.注意, Android的device_token是44位 ...

  8. 友盟消息推送服务器demo,友盟消息推送总结

    分享的文章连接 1  http://blog.csdn.net/shenjie12345678/article/details/41120637 2:http://dev.umeng.com/push ...

  9. android 友盟推送获取不到devicetoken,使用友盟消息推送中遇到的哪些问题--索引(开发者必读)...

    友盟推送服务器容量如何?每天耗电.耗流量多少?开发者自己的推送如何与友盟推送系统进行通讯?用户如何关闭推送服务?集成中有哪些坑?等等等等,汇总贴,供参考. 先来介绍下友盟推送有啥功能吧. 第一,支持多 ...

最新文章

  1. VS2005快捷键大全
  2. NET面试题:C#中的lock关键字有何作用
  3. 公网mysql_(看图)为什么无法通过公网登录MySQL?
  4. 树莓派使用STEP6:安装git
  5. 程序员35岁之后的出路_35岁的程序员走向何方?
  6. 聚焦技术和实践,腾讯全面揭秘基础设施和大数据演进之路
  7. .DateTimeToStr函数专用优化版
  8. 【汇编语言与计算机系统结构笔记04】80x86计算机组织、保护模式、存储器、寄存器、计算机系统结构金字塔
  9. c语言删除文件remove_「Python」 - 文件基本操作
  10. perl语言入门级练习记录23章
  11. java office在线预览_Office文件在线预览(JAVA)
  12. 深度可分离卷积解析 - MobileNetV1
  13. 2017-2018-1 20155314 20155323 实验二 固件程序设计
  14. 数据预处理---将文本属性标签转换为数字标签的方法
  15. python re 正则提取中文
  16. 【数据结构】格洛克怎么上膛?栈的结构帮你解答!
  17. 如何检查NAS硬盘有坏没有
  18. 第28课:彻底解密Spark Sort-Based Shuffle排序具体实现内幕和源码详解
  19. 蒟阵P3390 【模板】矩阵快速幂
  20. SilkTest那些事儿_第一章 ST的HelloWord_录制回放1

热门文章

  1. 【干货】数据产品经理如何快速了解业务
  2. 计算两个时间戳之间的自然天数
  3. qq飞车与服务器未响应,QQ飞车游戏安装失败系统错误提示问题解决方法_QQ飞车游戏安装失败怎么办_游戏堡...
  4. 基本概念:转发和重定向
  5. 一文看懂大数据矩阵运算利器-Spark Distributed Matrix
  6. 数据库基础的SQL语句
  7. 阿里正式开源通用算法平台Alink,“双11”将天猫推荐点击率提升4%
  8. 红外视频中的移动目标检测
  9. 图像的配准——MATLAB实现
  10. R语言统计入门第六章——回归与相关性