极光推送配置TagAndAlias,实现个推效果

在推送集成以后,和服务端约定好与用户相关的唯一标识,每次在打开应用时发送给服务端。

我是写在用户登陆以后。

/**
     * 设置标签与别名
     */
    private void initJPush() {
        /**
         *这里设置了别名,在这里获取的用户登录的信息
         *并且此时已经获取了用户的userId,然后就可以用用户的userId来设置别名了
         **/
        Set tags = new HashSet();
        //这里可以设置你要推送的人,一般是用户uid 不为空在设置进去 可同时添加多个
        if (!TextUtils.isEmpty(SharePref.getUserId(null))) {
            tags.add(SharePref.getUserId(null));//设置tag
        }
//        if (!TextUtils.isEmpty(SharePref.getUserId(null))){
//            tags.add("tag1000");//设置tag
//        }
        //上下文、别名【Sting行】、标签【Set型】、回调
        JPushInterface.setAliasAndTags(this, SharePref.getUserId(null), tags,
                new TagAliasCallback() {
                    @Override
                    public void gotResult(int code, String alias, Set set) {
                        switch (code) {
                            case 0:
                                //这里可以往 SharePreference 里写一个成功设置的状态。成功设置一次后,以后不必再次设置了。
                                //UserUtils.saveTagAlias(getHoldingActivity(), true);
                                LogUtils.e("Set tag and alias success极光推送别名设置成功");
                                break;
                            case 6002:
                                //极低的可能设置失败 我设置过几百回 出现3次失败 不放心的话可以失败后继续调用上面那个方面 重连3次即可 记得return 不要进入死循环了...
                                LogUtils.e("Failed to set alias and tags due to timeout. Try again after 60s.极光推送别名设置失败,60秒后重试");
                                break;
                            default:
                                LogUtils.e("极光推送设置失败,Failed with errorCode = " + code);
                                break;
                        }
                    }
                });
    }
唯一标识上传完,接下来就是监听后台发送的通知,前端做及时处理,极光是安卓原声的广播接收:
在Manifest文件里位置广播:
  
        
            

                
                
                
                
                
                
                
                
                
                
                
                

                
            
        
最后就是对自定义广播消息进行处理:

public class JPushReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Bundle bundle = intent.getExtras();
        if (JPushInterface.ACTION_REGISTRATION_ID.equals(intent.getAction())) {
            /**
             * 用户注册SDK的intent
             */
            LogUtils.e("onReceive1: ");
        } else if (JPushInterface.ACTION_MESSAGE_RECEIVED.equals(intent.getAction())) {
            /**
             * 用户接受SDK消息的intent
             */
            LogUtils.e("收到了自定义消息消息是2");

        } else if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(intent.getAction())) {
            /**
             * 用户接收SDK通知栏信息的intent
             */
            LogUtils.e("收到了自定义消息消息是3");
            //保存服务器推送下来的消息的标题。
            String extra1 = bundle.getString(JPushInterface.EXTRA_TITLE);
            LogUtils.e("消息的标题是extra1:" + extra1);
            //消息内容
            String extra2 = bundle.getString(JPushInterface.EXTRA_MESSAGE);
            LogUtils.e("消息内容是extra2:" + extra2);
            //附加字段。这是个 JSON 字符串。
            String extra3 = bundle.getString(JPushInterface.EXTRA_EXTRA);
            LogUtils.e("附加字段。这是个 JSON 字符串是extra3:" + extra3);
            //唯一标识消息的 ID, 可用于上报统计等。
            String extra4 = bundle.getString(JPushInterface.EXTRA_MSG_ID);
            LogUtils.e("唯一标识消息的 ID是extra4:" + extra4);
            //通知的标题
            String extra5 = bundle.getString(JPushInterface.EXTRA_NOTIFICATION_TITLE);
            LogUtils.e("通知的标题extra5:" + extra5);
            //通知内容
            String extra6 = bundle.getString(JPushInterface.EXTRA_ALERT);
            LogUtils.e("通知内容extra6:" + extra6);
            //通知栏的Notification ID,
            //如果服务端内容(alert)字段为空,则notification id 为0
            String extra7 = bundle.getString(JPushInterface.EXTRA_NOTIFICATION_ID);
            LogUtils.e("通知栏的Notification ID+extra7:" + extra7);
            //通知推送下载的HTML的文件路径,用于展现WebView
            String extra8 = bundle.getString(JPushInterface.EXTRA_RICHPUSH_HTML_PATH);
            LogUtils.e("通知推送下载的HTML的文件路径,用于展现WebView+extra8:" + extra8);
            //通知推送下载的图片资源的文件名,多个文件名用 “,” 分开。
            // 与 “JPushInterface.EXTRA_RICHPUSH_HTML_PATH” 位于同一个路径。
            String extra9 = bundle.getString(JPushInterface.EXTRA_RICHPUSH_HTML_RES);
            LogUtils.e("通知推送下载的图片资源的文件名,多个文件名用+extra9:" + extra9);
            //JSON
            String extra10 = bundle.getString(JPushInterface.EXTRA_EXTRA);
            LogUtils.e("JSON+extra10:" + extra10);
        } else if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent.getAction())) {
            /**
             * 用户打开自定义通知栏的intent 此处处理跳转事件
             */
            String extra3 = bundle.getString(JPushInterface.EXTRA_EXTRA);
            JPushBean jPushBean = JSON.parseObject(extra3, JPushBean.class);
            if (jPushBean.getSubType().equals("deliveryPush") && jPushBean.getType().equals("user")) {
                String extra6 = bundle.getString(JPushInterface.EXTRA_ALERT);
                LogUtils.e("跳转公告详情url" + jPushBean.getUrl());
                //跳转公告详情
                String url =  jPushBean.getUrl();
                Intent intent1 = new Intent(context, WebViewActivity.class);
                intent1.putExtra("title", context.getResources().getString(R.string.title_notice_detail));
                intent1.putExtra("url", url);
                intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                context.startActivity(intent1);
            }
        } else {
            LogUtils.e("Unhandled intent - " + intent.getAction());
            LogUtils.e("收到了自定义消息消息extra是5:");
        }
    }
参考链接地址:极光推送官网文档集成,以及http://blog.csdn.net/qq_34536167/article/details/76694830




你可能感兴趣的:(安卓开发,安卓基础)