zoukankan      html  css  js  c++  java
  • 友盟各个插件的使用方法

    使用友盟提供的功能之前需要获取应用的AppKey

    一:应用统计

      开发文档:http://dev.umeng.com/analytics/android-doc/integration

      session统计 

      在每个Activity的onResume方法中调用 MobclickAgent.onResume(Context), onPause方法中调用MobclickAgent.onPause(Context)

    1. 确保在所有的Activity中都调用 MobclickAgent.onResume() 和MobclickAgent.onPause()方法
    2. 请不要同时在父和子Activity中重复添加onPause和onResume方法,否则会造成重复统计,导致启动次数异常增高
    3. 当应用在后台运行超过30秒(默认)再回到前端,将被认为是两个独立的session(启动),例如用户回到home,或进入其他程序,经过一段时间后再返回之前的应用。可通过接口:MobclickAgent.setSessionContinueMillis(long interval) 来自定义这个间隔(参数单位为毫秒)
    4. 调用Process.kill或者System.exit之类的方法杀死进程之前调用MobclickAgent.onKillProcess(Context context)方法,用来保存统计数据。
    5.     @Override
          public void onResume() {
              super.onResume();
              MobclickAgent.onResume(this);
          }
      
          @Override
          public void onPause() {
              super.onPause();
              MobclickAgent.onPause(this);
          }

      页面统计

    1. 只有Activity的应用:只需添加session统计的代码即可
    2. 包含Activity、Fragment、View的应用
    • 使用 onResume 和 onPause 方法统计时长, 这和基本统计中的情况一样(针对Activity) 
      public void onResume() {
          super.onResume();
          MobclickAgent.onResume(this);       //统计时长
      }
      public void onPause() {
          super.onPause();
          MobclickAgent.onPause(this);
      }
    • 使用 onPageStart 和 onPageEnd 方法统计页面(针对页面,页面可能是Activity 也可能是FragmentView)
      public void onResume() {
          super.onResume();
          MobclickAgent.onPageStart("MainScreen"); //统计页面
      }
      public void onPause() {
          super.onPause();
          MobclickAgent.onPageEnd("MainScreen"); 
      }

      行为的统计

    1. 计数事件,统计发生的次数
      MobclickAgent.onEvent(Context context, String eventId);
    2. 计算事件,统计数值型变量的值得分布,如事件持续时间、每次付款金额等,可以调用如下方法:
      MobclickAgent.onEventValue(Context context, String id, Map<String,String> m, int du)
      //示例:统计一次音乐播放,包括音乐类型,作者和播放时长,可以在音乐播放结束后这么调用:
      int
      duration = 12000; //开发者需要自己计算音乐播放时长   Map<String, String> map_value = new HashMap<String, String>();   map_value.put("type", "popular");   map_value.put("artist", "JJLin"); MobclickAgent.onEventValue(this, "music", map_value, duration);

      在线参数

      在线参数使您可以在网站上动态配置预设好的参数的参数值。例如: 动态修改应用的欢迎语,修改应用中开关选项的"on"或"off",以及类似游戏中虚拟物品的价格等。

      需要在程序的入口 Activity 中添加

        

    MobclickAgent.updateOnlineConfig( mContext );

    String value = MobclickAgent.getConfigParams( mContext, "xxxx" );

      错误统计

      在try-catch捕获到异常后使用

    public static void reportError(Context context, String error)   
    //
    public static void reportError(Context context, Throwable e)

    二:自动更新

      优点

    • 快速集成,只需添加一行代码即可集成自动更新组件。开发者在需要发布新版本时,在后台上传最新的安装包、填写更新内容,旧版本的用户即可收到升级提示。
      //只需在需要的地方添加
      UmengUpdateAgent.update(this);
    • 流量优化与体验优化,开发者可以设置只在特定网络环境(如WiFi)下进行更新,优先使用本地已下载过的安装包,为用户节省宝贵流量。还能设置版本更新检测的时间间隔,防止频繁弹出更新提示。
    • 按渠道更新,Android平台发布渠道众多,更新繁琐,友盟自动更新支持不同渠道更新不同升级包,有效提升运营效率。
    • 增量更新,Android平台SDK在2.0版本后支持增量更新,默认下载增量包,节省时间和流量。
    • 多样展现:开发者可以自定义各种UI样式。

      原理

      友盟自动更新服务首先将用户终端上的应用版本信息(version code)与友盟服务器上开发者上传的应用版本信息进行比较。如果服务器的应用版本更高,则会提示用户有新的应用版本(提示如下图所示,开发者可自定义界面)。用户选择更新之后,友盟自动更新则开始下载新版本应用,然后安装此应用。

      上传App

      

    1. 右上角选中应用
    2. 点击"组件"
    3. 点击右侧菜单“自动更新”

      手动更新

    UmengUpdateAgent.setUpdateAutoPopup(false);
    UmengUpdateAgent.setUpdateListener(new UmengUpdateListener() {
        @Override
        public void onUpdateReturned(int updateStatus,UpdateResponse updateInfo) {
            switch (updateStatus) {
            case UpdateStatus.Yes: // has update
                UmengUpdateAgent.showUpdateDialog(mContext, updateInfo);
                break;
            case UpdateStatus.No: // has no update
                Toast.makeText(mContext, "没有更新", Toast.LENGTH_SHORT).show();
                break;
            case UpdateStatus.NoneWifi: // none wifi
                Toast.makeText(mContext, "没有wifi连接, 只在wifi下更新", Toast.LENGTH_SHORT).show();
                break;
            case UpdateStatus.Timeout: // time out
                Toast.makeText(mContext, "超时", Toast.LENGTH_SHORT).show();
                break;
            }
        }
    });
    UmengUpdateAgent.update(this);
    

      自定义更新

        修改自定义文件:umeng_update_dialog.xml

    三:用户反馈

      使用默认的反馈功能

    //跳转到友盟默认的反馈页面
    mFeedbackAgent.startFeedbackActivity();

    //回复通知
    mFeedbackAgent.sync();

      自定义反馈:

    1. 自定义布局页面
    2. 设置用户信息
      UserInfo info = agent.getUserInfo();
      if (info == null)
        info = new UserInfo();
      Map<String, String> contact = info.getContact();
      if (contact == null)
      contact = new HashMap<String, String>();
      String contact_info = contactInfoEdit.getEditableText()
      .toString();
      contact.put(KEY_UMENG_CONTACT_INFO_PLAIN_TEXT, contact_info);
      
      contact.put("email", "*******");
      //contact.put("qq", "*******");
      //contact.put("phone", "*******");
      //contact.put("plain", "*******");
      info.setContact(contact);
      
      // optional, setting user gender information.
      info.setAgeGroup(1);
      info.setGender("male");
      //info.setGender("female");
      
      agent.setUserInfo(info);
      
      new Thread(new Runnable() {
                  @Override
                  public void run() {
                      boolean result = fb.updateUserInfo();
                  }
              }).start();

      

  • 相关阅读:
    android cocos2d-x视频
    Android OpenGL 学习笔记 --开始篇
    Nginx配置详解
    扩展RBAC用户角色权限设计方案
    几种序列化与Get、Set方法的关系
    Kettle大量数据快速导出的解决方案(利用SQL导出百万级数据,挺快的)
    SpringBoot 标准集成MyBatis的2种方式
    Apache Commons io FileUtils 详解
    SpringBoot在工具类中读取配置文件(ClassPathResource)
    利用guava封装RateLimiter 令牌桶算法(AOP实现)
  • 原文地址:https://www.cnblogs.com/horrywu/p/4745637.html
Copyright © 2011-2022 走看看