友盟消息推送快速开发

来源:互联网 发布:拉依达准则 c语言 编辑:程序博客网 时间:2024/06/05 15:11

友盟推送实现:
    #1 注册:
        注册友盟平台账号,进入管理后台
    
    #2 对应包名注册:appKey;
        我的产品-添加新应用

    #3 点击应用进入消息推送
        应用信息:添加包名—获取appkey、Message Secret

    #4 下载sdk ,加入到要实现推送项目的lib目录下

    #5 配置xml
        a.添加权限
        b.注册server、Activity等
        c.配置appkey、message secret 、channel

    #5 项目中具体代码操作:
  
        (1)在应用启动的MainActivity或SplashActivity的onCreate方法中
                    注册消息推送和获取设备的deviceToken;
                      a:注册推送:
                         mPushAgent = PushAgent.getInstance(mAppContext);
                         mPushAgent.enable();
                       
                      b:获取deviceToken:由于注册请求友盟后台,是异步的,所有获取deviceToken要在注册成功后的回调方法               中获取:

                mPushAgent.enable(new IUmengRegisterCallback() {
   
                           @Override
                           public void onRegistered(String arg0) {
                                //从sharedPreference获取设备信息:deviceToken ,如果有的话,不获取,没有的话,获取到,并存储到sharedPreference中去;
                                deviceToken = UtilsSharedPreferences.getStringValue(UtilsSharedPreferences.user, context,                                                               
                                                                      UtilsSharedPreferences.User.deviceToken.getAttribute(), "");

                          if(TextUtils.isEmpty(deviceToken)){
                                           deviceToken = UmengRegistrar.getRegistrationId(context);
                                            UtilsSharedPreferences.putStringValue(UtilsSharedPreferences.user, context,                     
                                            UtilsSharedPreferences.User.deviceToken.getAttribute(), deviceToken);
                            }
                           }
                  });


    获取友盟对应的设备唯一表示:在 mPushAgent.enable()之后
    String device_token = UmengRegistrar.getRegistrationId(this);

    (2)在所有Activity的oncreate方法中添加代码
            PushAgent.getInstance(context).onAppStart();

    (3)提供开启和关闭友盟推送的接口
            PushAgent mPushAgent = PushAgent.getInstance(context);
             mPushAgent.enable();//开启
            mPushAgent.disable();//关闭

至此,简单消息推送就集成完了,可以进行默认的消息推送了


添加别名: boolean addAlias = mPushAgent.addAlias("bao", "bieming");在 mPushAgent.enable()之后
    注意:要在异步中如:
  new MyAsyncTask() {
   
    @Override
    public void onPreExecute() {
     // TODO Auto-generated method stub
     
    }
   
    @Override
    public void onPostExecute() {
     // TODO Auto-generated method stub
     
    }
   
    @Override
    public void doInBackground() {
     try {
      boolean addAlias = mPushAgent.addAlias("bao", "bieming");
      System.out.println("baopengjian addAlias="+addAlias);
     } catch (Exception e) {
      e.printStackTrace();
     }
     
    }
   }.execute();

二、 消息
    友盟消息推送分为2种:通知消息(Notification)和 自定义消息(Message

    1.通知消息:
  • 打开应用
  • 使用系统默认浏览器打开指定网页
  • 打开指定页面(Activity)
            带String:参数带双引号;key="type" value="zhuazhangting"
            带对象:
    
  • 自定义行为
  • 更新应用

    2.自定义消息
    
  • 打开应用
  • 使用系统默认浏览器打开指定网页
  • 打开指定页面(Activity)
  • 自定义行为


    #1 消息处理:
  • 自定义行为:自定义行为的数据放在"custom" 字段。 在友盟后台或通过API发送消息时,在“后续动作”中的“自定义行为”中输入相应的值或代码即可实现。
  • 在应用自定义Application的oncreate()方法中,实现对消息的处理:
        PushAgent mPushAgent = PushAgent.getInstance(applicationContext);
    //处理通知消息     
   UmengNotificationClickHandler notificationClickHandler = new UmengNotificationClickHandler(){
    //打开页面(Activity)
   @Override
   public void openActivity(Context context, UMessage msg) {
    super.openActivity(context, msg);
    System.out.println("baopengjian msg="+msg);
    System.out.println("baopengjian msg="+msg.custom);
    System.out.println("baopengjian msg="+msg.random_min);
    System.out.println("baopengjian msg="+msg);
     Toast.makeText(context, msg.custom, Toast.LENGTH_LONG).show();
    /*
    String aday=arg1.custom;
    System.out.println("baopengjian message="+arg1);
    OfficialModel model = new OfficialModel();
    model.setAdays(aday);
    Intent intent = new Intent(applicationContext,PublicWithModel.class);
    intent.putExtra("model", model);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    applicationContext.startActivity(intent);*/
   }
    //自定义行为
      @Override
      public void dealWithCustomAction(final Context context, UMessage msg) {
       System.out.println("baopengjian msg="+msg.custom);
       Message message = new Message();
       message.obj = msg.custom;
       mHandler.sendMessage(message);
      }
  };

处理自定义消息(Message):
UmengMessageHandler messageHandler = new UmengMessageHandler(){
      @Override
      public void dealWithCustomMessage(final Context context, final UMessage msg) {
       Intent intent = new Intent(context,MyBroadcastReceiver.class);
       intent.putExtra("msg", msg.custom);
       context.sendBroadcast(intent);
       
          new Handler(getMainLooper()).post(new Runnable() {
              @Override
              public void run() {
                   Toast.makeText(context, msg.custom, Toast.LENGTH_LONG).show();
               }
          });
        }
    }
};

 mPushAgent.setMessageHandler(messageHandler);

自定义消息打开页面:在dealWithCustomMessage()的参数的run()方法中实现
I    ntent intent = new Intent(context,LoginActivity.class);
               intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
               context.startActivity(intent);

# 2 处理Notification
        UmengNotificationClickHandler:
    publicvoidlaunchApp(Context context, UMessage msg);
    publicvoidopenUrl(Context context, UMessage msg);
    publicvoidopenActivity(Context context, UMessage msg);
    publicvoiddealWithCustomAction(Context context, UMessage msg);

























友盟推送实现:
    #1 注册:
        注册友盟平台账号,进入管理后台
    
    #2 对应包名注册:appKey;
        我的产品-添加新应用

    #3 点击应用进入消息推送
        应用信息:添加包名—获取appkey、Message Secret

    #4 下载sdk ,加入到要实现推送项目的lib目录下

    #5 配置xml
        a.添加权限
        b.注册server、Activity等
        c.配置appkey、message secret 、channel

    #5 项目中具体代码操作:
  
        (1)在应用启动的MainActivity或SplashActivity的onCreate方法中
                    注册消息推送和获取设备的deviceToken;
                      a:注册推送:
                         mPushAgent = PushAgent.getInstance(mAppContext);
                         mPushAgent.enable();
                       
                      b:获取deviceToken:由于注册请求友盟后台,是异步的,所有获取deviceToken要在注册成功后的回调方法               中获取:

                mPushAgent.enable(new IUmengRegisterCallback() {
   
                           @Override
                           public void onRegistered(String arg0) {
                                //从sharedPreference获取设备信息:deviceToken ,如果有的话,不获取,没有的话,获取到,并存储到sharedPreference中去;
                                deviceToken = UtilsSharedPreferences.getStringValue(UtilsSharedPreferences.user, context,                                                               
                                                                      UtilsSharedPreferences.User.deviceToken.getAttribute(), "");

                          if(TextUtils.isEmpty(deviceToken)){
                                           deviceToken = UmengRegistrar.getRegistrationId(context);
                                            UtilsSharedPreferences.putStringValue(UtilsSharedPreferences.user, context,                     
                                            UtilsSharedPreferences.User.deviceToken.getAttribute(), deviceToken);
                            }
                           }
                  });


    获取友盟对应的设备唯一表示:在 mPushAgent.enable()之后
    String device_token = UmengRegistrar.getRegistrationId(this);

    (2)在所有Activity的oncreate方法中添加代码
            PushAgent.getInstance(context).onAppStart();

    (3)提供开启和关闭友盟推送的接口
            PushAgent mPushAgent = PushAgent.getInstance(context);
             mPushAgent.enable();//开启
            mPushAgent.disable();//关闭

至此,简单消息推送就集成完了,可以进行默认的消息推送了


添加别名: boolean addAlias = mPushAgent.addAlias("bao", "bieming");在 mPushAgent.enable()之后
    注意:要在异步中如:
  new MyAsyncTask() {
   
    @Override
    public void onPreExecute() {
     // TODO Auto-generated method stub
     
    }
   
    @Override
    public void onPostExecute() {
     // TODO Auto-generated method stub
     
    }
   
    @Override
    public void doInBackground() {
     try {
      boolean addAlias = mPushAgent.addAlias("bao", "bieming");
      System.out.println("baopengjian addAlias="+addAlias);
     } catch (Exception e) {
      e.printStackTrace();
     }
     
    }
   }.execute();

二、 消息
    友盟消息推送分为2种:通知消息(Notification)和 自定义消息(Message

    1.通知消息:
  • 打开应用
  • 使用系统默认浏览器打开指定网页
  • 打开指定页面(Activity)
            带String:参数带双引号;key="type" value="zhuazhangting"
            带对象:
    
  • 自定义行为
  • 更新应用

    2.自定义消息
    
  • 打开应用
  • 使用系统默认浏览器打开指定网页
  • 打开指定页面(Activity)
  • 自定义行为


    #1 消息处理:
  • 自定义行为:自定义行为的数据放在"custom" 字段。 在友盟后台或通过API发送消息时,在“后续动作”中的“自定义行为”中输入相应的值或代码即可实现。
  • 在应用自定义Application的oncreate()方法中,实现对消息的处理:
        PushAgent mPushAgent = PushAgent.getInstance(applicationContext);
    //处理通知消息     
   UmengNotificationClickHandler notificationClickHandler = new UmengNotificationClickHandler(){
    //打开页面(Activity)
   @Override
   public void openActivity(Context context, UMessage msg) {
    super.openActivity(context, msg);
    System.out.println("baopengjian msg="+msg);
    System.out.println("baopengjian msg="+msg.custom);
    System.out.println("baopengjian msg="+msg.random_min);
    System.out.println("baopengjian msg="+msg);
     Toast.makeText(context, msg.custom, Toast.LENGTH_LONG).show();
    /*
    String aday=arg1.custom;
    System.out.println("baopengjian message="+arg1);
    OfficialModel model = new OfficialModel();
    model.setAdays(aday);
    Intent intent = new Intent(applicationContext,PublicWithModel.class);
    intent.putExtra("model", model);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    applicationContext.startActivity(intent);*/
   }
    //自定义行为
      @Override
      public void dealWithCustomAction(final Context context, UMessage msg) {
       System.out.println("baopengjian msg="+msg.custom);
       Message message = new Message();
       message.obj = msg.custom;
       mHandler.sendMessage(message);
      }
  };

处理自定义消息(Message):
UmengMessageHandler messageHandler = new UmengMessageHandler(){
      @Override
      public void dealWithCustomMessage(final Context context, final UMessage msg) {
       Intent intent = new Intent(context,MyBroadcastReceiver.class);
       intent.putExtra("msg", msg.custom);
       context.sendBroadcast(intent);
       
          new Handler(getMainLooper()).post(new Runnable() {
              @Override
              public void run() {
                   Toast.makeText(context, msg.custom, Toast.LENGTH_LONG).show();
               }
          });
        }
    }
};

 mPushAgent.setMessageHandler(messageHandler);

自定义消息打开页面:在dealWithCustomMessage()的参数的run()方法中实现
I    ntent intent = new Intent(context,LoginActivity.class);
               intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
               context.startActivity(intent);

# 2 处理Notification
        UmengNotificationClickHandler:
    publicvoidlaunchApp(Context context, UMessage msg);
    publicvoidopenUrl(Context context, UMessage msg);
    publicvoidopenActivity(Context context, UMessage msg);
    publicvoiddealWithCustomAction(Context context, UMessage msg);
























0 0
原创粉丝点击