推送、 数据统计、 代码版本管理工具
2015-09-23 19:52
561 查看
推送
以百度推送为例,昨天已给出manifest的例子,这里给出Receiver,继承PushMessageReceiver,复写其中的方法,其中最重要的是onMessage、onNotificationClicked、onNotificationArrived三个方法。package com.example.administrator.mysensordemo; import android.content.Context; import android.content.Intent; import android.util.Log; import com.baidu.android.pushservice.PushMessageReceiver; import org.json.JSONException; import org.json.JSONObject; import java.util.List; /** * Created by Administrator on 2015/9/23. */ public class MyPushMessageReceiver extends PushMessageReceiver { @Override public void onBind(Context context, int i, String s, String s1, String s2, String s3) { } @Override public void onUnbind(Context context, int i, String s) { } @Override public void onSetTags(Context context, int i, List<String> list, List<String> list1, String s) { } @Override public void onDelTags(Context context, int i, List<String> list, List<String> list1, String s) { } @Override public void onListTags(Context context, int i, List<String> list, String s) { } @Override public void onMessage(Context context, String message, String customContentString) { String messageString = "透传消息 message=\"" + message + "\" customContentString=" + customContentString; Log.d(TAG, messageString); } @Override public void onNotificationClicked(Context context, String title, String description, String customContentString) { String notifyString = "通知点击 title=\"" + title + "\" description=\"" + description + "\" customContent=" + customContentString; Log.d("MyPush", "接收到的消息"+"onNotificationClicked"+notifyString); try { JSONObject object = new JSONObject(customContentString); String className = object.getString("startActivity"); Intent intent = new Intent(context,Class.forName(context.getPackageName()+"."+className)); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); } catch (JSONException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } @Override public void onNotificationArrived(Context context, String title, String description, String customContentString) { String notifyString = "onNotificationArrived title=\"" + title + "\" description=\"" + description + "\" customContent=" + customContentString; Log.d(TAG, notifyString); } }
数据统计
数据统计主要有两个作用,用户分析和应用分析,其中用户分析是针对地域、下载渠道、用户年龄等等,而应用分析是针对错误日志、界面停留时间、应用打开次数等等。以百度数据统计为例,同样需要导入jar包和so文件,同样需要用包名申请key,同样需要加入权限。因为所有的Activity都需要复写onResume和onPause方法,所以写一个BaseActivity继承Activity,复写两个方法,然后所有的Activity都继承BaseActivity。下面给出manifest和BaseActivity的例子。
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.administrator.mylocationdemo" > <!-- 这个权限用于进行网络定位--> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission> <!-- 这个权限用于访问GPS定位--> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission> <!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位--> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> <!-- 获取运营商信息,用于支持提供运营商信息相关的接口--> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> <!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位--> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission> <!-- 用于读取手机当前的状态--> <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission> <!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据--> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> <!-- 访问网络,网络定位需要上网--> <uses-permission android:name="android.permission.INTERNET" /> <!-- SD卡读取权限,用户写入离线定位数据--> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER"/> <uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" /> <uses-permission android:name="android.permission.DISABLE_KEYGUARD" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 必须申明的权限 --> <uses-permission android:name="android.permission.INTERNET" > </uses-permission> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" > </uses-permission> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" > </uses-permission> <uses-permission android:name="android.permission.READ_PHONE_STATE" > </uses-permission> <uses-permission android:name="android.permission.WRITE_SETTINGS" > </uses-permission> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <!-- 您从百度网站获取的APP KEY --> <meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="yrDY98WCG2Dt1X010SBxYv3R" /> //key:开发者申请的key <meta-data android:name="BaiduMobAd_STAT_ID" android:value="8594056ea9" /> <!-- abcd1234 --> <!-- 渠道商编号 --> <meta-data android:name="BaiduMobAd_CHANNEL" android:value="Baidu Market" /> <!-- 是否开启错误日志统计,默认为false --> <meta-data android:name="BaiduMobAd_EXCEPTION_LOG" android:value="true" /> <!-- 日志发送策略,可选值:APP_START、ONCE_A_DAY、SET_TIME_INTERVAL,默认为APP_START --> <meta-data android:name="BaiduMobAd_SEND_STRATEGY" android:value="APP_START" /> <!-- 日志发送策略 为SET_TIME_INTERVAL时,需设定时间间隔(取消下行注释)。取值为1-24的整数,默认为1 --> <!-- <meta-data android:name="BaiduMobAd_TIME_INTERVAL" android:value="2" /> --> <!-- 日志仅在wifi网络下发送,默认为false --> <meta-data android:name="BaiduMobAd_ONLY_WIFI" android:value="false" /> <!-- 是否获取基站位置信息 ,默认为true --> <meta-data android:name="BaiduMobAd_CELL_LOCATION" android:value="true" /> <!-- 是否获取GPS位置信息,默认为true --> <meta-data android:name="BaiduMobAd_GPS_LOCATION" android:value="true" /> <!-- 是否获取WIFI位置信息,默认为true --> <meta-data android:name="BaiduMobAd_WIFI_LOCATION" android:value="true" /> <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote"> </service> </application> </manifest>
package com.example.administrator.mylocationdemo; import android.app.Activity; import android.content.Context; import com.baidu.mobstat.StatService; /** * Created by Administrator on 2015/9/23. */ public class BaseActivity extends Activity { @Override protected void onResume() { super.onResume(); StatService.onResume(this); } @Override protected void onPause() { super.onPause(); StatService.onPause(this); } }
代码管理工具
代码管理工具有两种,SVN和Git,一般公司常用的是SVN。SVN分服务器和客户端,下面给出两个的下载链接:
服务器:https://www.visualsvn.com/downloads/
客户端:http://tortoisesvn.net/downloads.html
相关文章推荐
- eclipse启动不了
- ListView在removeFooterView时报java.lang.ClassCastException错问题
- Java 设计模式(2)工厂模式
- 无锁编程(六) - seqlock(顺序锁)
- Unable to locate Spring NamespaceHandler for XML schema namespace
- 无锁编程(六) - seqlock(顺序锁)
- POJ C++程序设计 编程题#7:字符串排序
- Python 学习 (二) Python中的循环
- Google apac 在线笔试round2
- C#中数组、ArrayList和List三者的区别
- C++函数返回引用
- JAVA WEB 总结 Servlet篇
- string c++ 详解 erase find .
- c++设计模式----解释器模式interpreter
- python属性详解
- 【c++ templates读书笔记】【2】类模板
- 【c++ templates读书笔记】【2】类模板
- YII 授权
- Myeclipse_Pro_GA_2014的服务器视图(Servers)中的MyEclipse Derby选项如何去掉
- c# 了解委托