1. Eclipes友盟推送(Pushsdk)的集成
(1) 官网上下载sdk
(2) 将解压缩后的文件PushSdk项目导入eclipes
(3) 将PushSdk设置为library
(4) 对我们自己的项目添加pushsdk的引用
(5) 将pushsdk项目中的清单文件中的${applicationId}替换为我们的清单文件中的manifest中的包名
(6) 将eclipselibs文件夹中的okio-1.6.0.jar和wire-runtime-2.1.2.jar添加到pushsdk的lib中
(7) 在我们的项目的project.properties中添加manifestmerger.enabled=true
(8) 在友盟上添加我们的应用,包名是清单文件中mainfest中的package,添加成功后获取appkey和Umeng Message Secret。
(9) 在我们的项目中添加appkey和Umeng Message Secret
(10) 然后我们自己的项目就可以根据文档(文档的选择要看我们的pushsdk中的com.umeng.message_v2.8.1L_Beta.jar版本查找对应的文档)进行一个方法一个方法的调用了通过mPushAgent.enable()开启消息推送,通过UmengRegistrar.getRegistrationId(this);获取touken(token是友盟针对我们的设备上的这个应用生成的友盟的识别标识)
(11) 当项目启动后后台会运行一个push service,若我们除了我们自己的项目外还有项目使用了友盟推送,则push service长连接只会有一个,此时长连接是挂在其他项目上的,我们也可以通过这个长连接收到推送。(具体解释官方文档是:http://bbs.umeng.com/thread-10116-1-1.html)
(12) 当是上面的情况时,我们通过官网进行推送测试时,查看工具中的该设备时显示是离线的状态,但我们仍然可以收到消息。(具体官网的测试设备的使用和我遇到的问题)
(13) 对于开启服务一般放在application中,或主Activity中
(14) 我们可以使用自己的消息栏通知,也可以使用友盟规定消息通知格式,可以在友盟上设置推送的格式,和点击后跳转到达界面
2. 使用友盟进行消息推送的测试
(1) 登陆官网添加我们的应用
(2) 选择测试模式,一步一步根据提示添加
(3) 选择添加测试消息,进行测试,测试消息后续动作规定了跳转界面才会跳转到特定界面,规定了自定义行为才会进UmengNotificationClickHandler回调
(4) 工具中输入我们设备对应的友盟提供的token查询查看我们的这个应用的长连接状态,当我们的应用是挂在其他应用的长连接时,输出的状态是离线的,但仍然可以收到消息,若不可以,我们可以试着在后台关闭pushservice然后重新启动我们的应用,此时我们的应用的长连接就是在线的状态了。发送测试消息就可以收到了
(5) 设备状态查看解释http://bbs.umeng.com/forum.php?mod=viewthread&tid=14055&page=1&extra=#pid28997
(6) 测试模式中的添加测试设备:只是针对该应用在这个设备上的使用
3.在友盟中规定跳转到指定activity时,可以添加参数,添加的参数可以在指定activity中我们可以通过getIntent获取传值的Intent从而获取传递的值。
Intent intent= getIntent();
Bundle bundle = intent.getExtras();
String type = bundle.getString("type");
seqno = bundle.getString("djbh");
efid = bundle.getString("efid");
而对于自定的我们可以在application中定义UmengNotificationClickHandler,通过setNotificationClickHandler()设置监听,当来消息后若有参数可以通过Map<String, String> map= uMessage.extra;获取传递的参数
4. 使用代码
打开推送和数据统计获取token
mPushAgent =PushAgent.getInstance(this);
mPushAgent.enable(newIUmengRegisterCallback() {
@Override
public voidonRegistered(String registrationId) {
newHandler().post(new Runnable() {
@Override
publicvoid run() {
//onRegistered方法的参数registrationId即是device_token
}
});
}
});
mPushAgent.onAppStart();//
//mPushAgent.setMessageChannel("yanglinlin123456");
device_token = UmengRegistrar.getRegistrationId(this);
Log.e("TAG", device_token);
//
UmengNotificationClickHandlernotificationClickHandler = new UmengNotificationClickHandler() { // 点击通知的自定义行为
@Override
public voiddealWithCustomAction(Context context, UMessage uMessage) {
super.dealWithCustomAction(context,uMessage);
}
};
mPushAgent.setNotificationClickHandler(notificationClickHandler);
参考:http://bbs.umeng.com/thread-6200-1-1.html http://bbs.umeng.com/thread-11786-1-1.html