Android应用开发Android 极光推送的集成
白羽 2019-03-12 来源 :网络 阅读 1473 评论 0

摘要:本文将带你了解Android应用开发Android 极光推送的集成,希望本文对大家学Android有所帮助。

    本文将带你了解Android应用开发Android 极光推送的集成,希望本文对大家学Android有所帮助。



Android应用开发Android 极光推送的集成


最近公司让集成极光推送,实现个人推送还有所有下载app   的推送。去极光官网看了下资料,发现极光更新了,从sdk.3.0.7   开始用新的设置别名和Tag的方法,以前的方法不再维护了。。。那肯定得研究新的方法,下面是我的一些心得体会,和大家分享下。
   
    一、极光推送集成:
   
      集成的过程官网写的很清晰,我就不在重复了,需要的可以访问极光推送官网:https://docs.jiguang.cn/jpush/client/Android/android_guide/
   
    二、推送到所有App 用户:
   
    使用JPushId 是最简单的方法:在你的代码中添加这句代码就可以了

    String jPushId = JPushInterface.getRegistrationID(this);
    三、推送到个人或者特定群体:
   
    我个人主要用的方法就是setAlias() 这个方法
   
    1、以前旧的方法,直接回调就可以设置别名成功,代码很简单:(可以参考JPush 官网中的代码)
   
   
    // 这是来自 JPush Example 的设置别名的 Activity 里的代码。一般 App   的设置的调用入口,在任何方便的地方调用都可以。
    private void setAlias() {
        EditText aliasEdit = (EditText)   findViewById(R.id.et_alias);
        String alias =   aliasEdit.getText().toString().trim();
        if (TextUtils.isEmpty(alias))   {
              Toast.makeText(PushSetActivity.this,R.string.error_alias_empty,   Toast.LENGTH_SHORT).show();
            return;
        }
        if   (!ExampleUtil.isValidTagAndAlias(alias)) {
              Toast.makeText(PushSetActivity.this,R.string.error_tag_gs_empty,   Toast.LENGTH_SHORT).show();
            return;
        }
     
        // 调用 Handler 来异步设置别名
          mHandler.sendMessage(mHandler.obtainMessage(MSG_SET_ALIAS,   alias));
    }
     
    private final TagAliasCallback mAliasCallback = new TagAliasCallback()   {
        @Override
        public void gotResult(int code,   String alias, Settags) {
            String logs ;
            switch (code) {
            case 0:
                logs = Set tag and alias   success;
                Log.i(TAG, logs);
                // 建议这里往 SharePreference   里写一个成功设置的状态。成功设置一次后,以后不必再次设置了。
                break;
            case 6002:
                logs = Failed to set   alias and tags due to timeout. Try again after 60s.;
                Log.i(TAG, logs);
                // 延迟 60 秒来调用 Handler   设置别名
                  mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_SET_ALIAS,   alias), 1000 * 60);
                break;
            default:
                logs = Failed with   errorCode =  + code;
                Log.e(TAG, logs);
            }
            ExampleUtil.showToast(logs,   getApplicationContext());
        }
    };
    private static final int MSG_SET_ALIAS = 1001;
    private final Handler mHandler = new Handler() {
    @Override
        public void handleMessage(android.os.Message   msg) {
              super.handleMessage(msg);
            switch (msg.what) {
                case MSG_SET_ALIAS:
                    Log.d(TAG, Set alias   in handler.);
                    // 调用 JPush   接口来设置别名。
                    JPushInterface.setAliasAndTags(getApplicationContext(),
                                                      (String) msg.obj,
                                                       null,
                                                       mAliasCallback);
                break;
            default:
                Log.i(TAG, Unhandled msg   -  + msg.what);
            }
        }                                     
    };

   
    2、sdk 3.0.7 开始使用新的设置别名的方法
   
    新的设置别名的方法不能直接回调获得设置结果,是通过JPushMessageReceiver   这个广播来响应设置别名的结果,这算是其最大的改变点。参考demo 我用新方法做了推送的别名设置。
   
    1)设置别名
   
   
    JPushInterface.setAlias(GlobalApplication.getContext(), KeyConfig.ALISE,   (String) msg.obj);  // 第二个参数sequenc   ,自己自定义的序列号; 第三个参数alias
   
    2)设置别名后在广播中做别名的响应操作
   
    public class JpushReciver extends JPushMessageReceiver {
     
        //设置别名反馈
        @Override
        public void   onAliasOperatorResult(Context context, JPushMessage jPushMessage) {
              TagAliasOperatorHelper.getInstance().onAliasOperatorResult(context,   jPushMessage);  //   这个方法就是我们设置别名后结果,根据JPushMessage 做处理
              super.onAliasOperatorResult(context, jPushMessage);
        }
    }
    // 通过JPushMessage 来获取ErrorCode ,来做设置别名成功还是失败的操作
   
   
   
    public void onAliasOperatorResult(Context context, JPushMessage   jPushMessage) {
            String alias =   jPushMessage.getAlias();
            if   (jPushMessage.getErrorCode() == 0) {
                  GlobalApplication.spUtils.put(KeyConfig.ALIAS, alias);
            } else {
                String logs = Failed to   set alias and tags due to timeout. Try again after   60s.极光推送别名设置失败,60秒后重试;
                LogUtils.e(logs);
                // 延迟 60 秒来调用 Handler   设置别名
                  mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_SET_ALIAS,   alias), 1000 * 60);
            }
        }
   
    四、附完整的TagAliasOperatorHelper 代码
   
   
    public class TagAliasOperatorHelper {
        private static final int   MSG_SET_ALIAS = 1;
        private static   TagAliasOperatorHelper mInstance;
        public Handler mHandler = new   Handler() {
            @Override
            public void   handleMessage(Message msg) {
                  super.handleMessage(msg);
                switch (msg.what) {
                    case   MSG_SET_ALIAS:
                        LogUtils.e(Set   alias in handler.);
                        //调用JPush   新接口来设置别名
                          JPushInterface.setAlias(GlobalApplication.getContext(),   KeyConfig.ALISE, (String) msg.obj);
                        break;
                    default:
                          LogUtils.e(Unhandled msg -  +   msg.what);
                }
            }
        };
     
        public static   TagAliasOperatorHelper getInstance() {
            if (mInstance == null)   {
                synchronized   (TagAliasOperatorHelper.class) {
                    if (mInstance ==   null) {
                        mInstance = new   TagAliasOperatorHelper();
                    }
    body{ }   



本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!

本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程