package com.zswc.jpush;

import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.text.TextUtils;
import android.util.Log;

import com.zswc.jpush.utils.Alias;
import com.ysnows.base.base.BApp;
import com.ysnows.base.ccretrofit.CCRetrofit;
import com.ysnows.base.route.IApp;

import org.json.JSONException;
import org.json.JSONObject;

import cn.jpush.android.api.CustomMessage;
import cn.jpush.android.api.JPushInterface;
import cn.jpush.android.api.JPushMessage;
import cn.jpush.android.api.NotificationMessage;
import cn.jpush.android.service.JPushMessageReceiver;

public class PushMessageReceiver extends JPushMessageReceiver {
    /**
     * TODO 连接极光服务器
     */
    @Override
    public void onConnected(Context context, boolean b) {
        super.onConnected(context, b);
        Log.e("连接极光服务器", "onConnected");
    }

    /**
     * TODO 注册极光时的回调
     */
    @Override
    public void onRegister(Context context, String s) {
        super.onRegister(context, s);
        Log.e("注册极光时的回调", "onRegister" + s);
    }


    private final Handler mHandler = new Handler() {
        @Override
        public void handleMessage(android.os.Message msg) {
            super.handleMessage(msg);
            if (msg.what == 100) {
                JPushInterface.setAlias(BApp.instance().getApplicationContext(),Alias.INSTANCE.getTag(), Alias.INSTANCE.getAlias() );
            }
        }
    };

    /**
     * TODO 注册以及解除注册别名时回调
     */
    @Override
    public void onAliasOperatorResult(Context context, JPushMessage jPushMessage) {
        super.onAliasOperatorResult(context, jPushMessage);
        Log.e("注册以及解除注册别名时回调", jPushMessage.toString());
        if(jPushMessage.getErrorCode()==6002){//超时处理
            Message obtain = Message.obtain();
            obtain.what = 100;
           mHandler.sendMessageDelayed(obtain, 1000 * 10);//10秒后重新验证

        }
    }

    /**
     * TODO 接收到推送下来的通知
     * 可以利用附加字段（notificationMessage.notificationExtras）来区别Notication,指定不同的动作,附加字段是个json字符串
     * 通知（Notification），指在手机的通知栏（状态栏）上会显示的一条通知信息
     */
    @Override
    public void onNotifyMessageArrived(Context context, NotificationMessage notificationMessage) {
        super.onNotifyMessageArrived(context, notificationMessage);
        Log.e("接收到推送下来的通知", notificationMessage.toString());
    }

    /**
     * TODO 打开了通知
     * notificationMessage.notificationExtras(附加字段)的内容处理代码
     * 比如打开新的Activity， 打开一个网页等..
     */
    @Override
    public void onNotifyMessageOpened(Context context, NotificationMessage notificationMessage) {
        super.onNotifyMessageOpened(context, notificationMessage);

        String data=notificationMessage.notificationExtras;
        try {
            JSONObject mapJSON = new JSONObject(data);
            String android_url=mapJSON.getString("android_url");
            Log.e("-shy-", "type=:"+android_url);
            if(!TextUtils.isEmpty(android_url)){//type为1的时候跳到 消息列表
                CCRetrofit.instance()
                        .create(IApp.class)
                        .openMsgList(android_url)
                        .subscribe();
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }


        Log.e("打开了通知", notificationMessage.notificationExtras);
    }

    /**
     * TODO 接收到推送下来的自定义消息
     * 自定义消息不是通知，默认不会被SDK展示到通知栏上，极光推送仅负责透传给SDK。其内容和展示形式完全由开发者自己定义。
     * 自定义消息主要用于应用的内部业务逻辑和特殊展示需求
     */
    @Override
    public void onMessage(Context context, CustomMessage customMessage) {
        super.onMessage(context, customMessage);
        // 收到消息 显示通知
        Log.d("接收到推送下来的自定义消息", "onMessage: ");
//        processCustomMessage(context, customMessage.extra);
    }

//    //通知
//    private void processCustomMessage(Context context, String message) {
//
//        String channelID = "1";
//        String channelName = "channel_name";
//
//        // 跳转的Activity
//        Intent intent = new Intent(context, MainActivity.class);
//        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
//
//        PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);
//
//        NotificationManager notificationManager = (NotificationManager) context.getSystemService(NOTIFICATION_SERVICE);
//
//        //适配安卓8.0的消息渠道
//        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
//            NotificationChannel channel = new NotificationChannel(channelID, channelName, NotificationManager.IMPORTANCE_HIGH);
//            notificationManager.createNotificationChannel(channel);
//        }
//
//        NotificationCompat.Builder notification =
//                new NotificationCompat.Builder(context, channelID);
//
//        notification.setAutoCancel(true)
//                .setContentText(message)
//                .setContentTitle("我是Title")
//                .setSmallIcon(R.drawable.ic_launcher_background)
//                .setDefaults(Notification.DEFAULT_ALL)
//                .setContentIntent(pendingIntent);
//
//        notificationManager.notify((int) (System.currentTimeMillis() / 1000), notification.build());
//    }

}
