集成友盟推送android

这几天项目要集成友盟推送,官网虽然有很全文档 ,但是不够详细,写个博客记录一下。

使用感受

*文档不那么详细,不那么通熟易懂。

*推送消息发送,延迟好高!

*消息状态即使显示为发送成功了,到达客户端也许还是要等。

*没有说清楚各个方法会在什么时候调用。


*首先去官网 打开友盟的文档  此时版本是2.7.0 ,前面简单的就不多说了。


*下载demo看一下 格式就是这样的



注:PushExample是推送的demo,PushSDK是demo所需要的包。

        在Eclipse里面PushSDK就是liarbry,在AndroidStudio里面就是module


在应用的主Activity onCreate() 函数中开启推送服务

PushAgent mPushAgent = PushAgent.getInstance(context);
mPushAgent.enable();//打开客户端通知服务mPushAgent.disable();//关闭客户端通知服务mPushAgent.isEnabled();//返回推送服务是否可用PushAgent.getInstance(context).onAppStart();//统计日活数据,需要在应用主要的activity里面调用此方法。(请务必)
String device_token = UmengRegistrar.getRegistrationId(context)//获取device_token,此参数可以用于测试模式,发消息时可以只让这个用户收到消息。

友盟可以的自定义

*自定义消息和。

*自定义消息的行为。

*自定义消息点击事件。


*自定义消息

自定义消息发送到客户端响应  dealWithCustomMessage(fianl Context context,final UMessage msg)

推送消息发送到客户端响应      getNotification(fianl Context context,final UMessage msg)

两者不同事执行,互不影响。

UmengMessageHandler messageHandler = new UmengMessageHandler(){
         /**
          * 参考集成文档的1.6.3
          * http://dev.umeng.com/push/android/integration#1_6_3
          * */
         @Override
         public void dealWithCustomMessage(final Context context, final UMessage msg) {
            new Handler().post(new Runnable() {
               
               @Override
               public void run() {
                  // TODO Auto-generated method stub
                  // 对自定义消息的处理方式,点击或者忽略
                  boolean isClickOrDismissed = true;

                        Toast.makeText(context,"-自定义消息"+msg.text,Toast.LENGTH_SHORT).show();

                  if(isClickOrDismissed) {
                     //自定义消息的点击统计
                     UTrack.getInstance(getApplicationContext()).trackMsgClick(msg);
                  } else {
                     //自定义消息的忽略统计
                     UTrack.getInstance(getApplicationContext()).trackMsgDismissed(msg);
                  }
//                Toast.makeText(context, msg.custom, Toast.LENGTH_LONG).show();
               }
            });
         }



         
         /**
          * 参考集成文档的1.6.4
          * http://dev.umeng.com/push/android/integration#1_6_4
          * */
         @Override
         public Notification getNotification(Context context,
               UMessage msg) {

                Toast.makeText(context, "收到一条消息"+msg.custom, Toast.LENGTH_LONG).show();

                Log.e("---->getNotification","msg.builder_id = "+msg.builder_id+"  msg.title = "+msg.title+"  msg.text"+msg.text+"  msg.ticker"+msg.ticker);

            switch (msg.builder_id) {
            case 1:
               NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
               RemoteViews myNotificationView = new RemoteViews(context.getPackageName(), R.layout.notification_view);
               myNotificationView.setTextViewText(R.id.notification_title, msg.title);
               myNotificationView.setTextViewText(R.id.notification_text, msg.text);
               myNotificationView.setImageViewBitmap(R.id.notification_large_icon, getLargeIcon(context, msg));
               myNotificationView.setImageViewResource(R.id.notification_small_icon, getSmallIconId(context, msg));
               builder.setContent(myNotificationView)
               .setContentTitle(msg.title)
                    .setSmallIcon(getSmallIconId(context, msg))
               .setContentText(msg.text)
               .setTicker(msg.ticker)
               .setAutoCancel(true);
               Notification mNotification = builder.build();
               //由于Android v4包的bug,在2.3及以下系统,Builder创建出来的Notification,并没有设置RemoteView,故需要添加此代码
               mNotification.contentView = myNotificationView;





               return mNotification;
            default:
               //默认为0,若填写的builder_id并不存在,也使用默认。
               return super.getNotification(context, msg);
            }
         }
      };
      mPushAgent.setMessageHandler(messageHandler);



*自定义行为

launchApp、openUrl、openActivity这三个方法可以由消息推送SDK自动完成

自定义行为在点击推送消息时触发。




*自定义推送消息点击事件。

自定义推送消息点击事件在代码里面  msg.custom为自定义消息的内容,推送消息的msg.custom为""。

UmengNotificationClickHandler notificationClickHandler = new UmengNotificationClickHandler(){
   @Override
   public void dealWithCustomAction(Context context, UMessage msg) {
              
      Toast.makeText(context, "点击"+msg.custom, Toast.LENGTH_LONG).show();
   }
};
//使用自定义的NotificationHandler,来结合友盟统计处理消息通知
//参考http://bbs.umeng.com/thread-11112-1-1.html
//CustomNotificationHandler notificationClickHandler = new CustomNotificationHandler();
mPushAgent.setNotificationClickHandler(notificationClickHandler);





友盟消息封装在  Umessage 类中

没有更多推荐了,返回首页