package com.yidian.common.utils

import android.content.Context
import android.os.Bundle
import android.util.Log
import android.widget.Toast
import com.orhanobut.hawk.Hawk
import com.umeng.analytics.MobclickAgent
import com.umeng.commonsdk.UMConfigure
import com.umeng.message.IUmengRegisterCallback
import com.umeng.message.PushAgent
import com.umeng.message.UmengMessageHandler
import com.umeng.message.UmengNotificationClickHandler
import com.umeng.message.entity.UMessage
import com.umeng.socialize.PlatformConfig
import com.yidian.common.AppConfig
import com.yidian.common.BuildConfig
import com.yidian.common.HawkConfig
import com.yidian.common.XRouterPathConstants
import com.yidian.xpage.XPageManager


/**
 * 友盟错误统计、push辅助类
 * */
class UMConfigUtils {
  companion object {
    fun init(context: Context) {
      //release环境上报错误信息，参数有：上下文、APPkey、渠道号、设备类型、推送密钥
      if (BuildConfig.ENV_DEBUG) {
        UMConfigure.init(context, AppConfig.UMAppTestKey, AppConfig.UMChannel, UMConfigure.DEVICE_TYPE_PHONE, AppConfig.UMTestSecret)
      } else {
        UMConfigure.init(context, AppConfig.UMAppKey, AppConfig.UMChannel, UMConfigure.DEVICE_TYPE_PHONE, AppConfig.UMSecret)
      }
//
//      // 推送设置
//      PlatformConfig.setWeixin(AppConfig.WeChatAppKey, AppConfig.WeChatAppSecret)
//      PlatformConfig.setWXFileProvider(AppConfig.FileProvider)
//      PlatformConfig.setQQZone(AppConfig.QQAppKey, AppConfig.QQAppSecret)
//      PlatformConfig.setQQFileProvider(AppConfig.FileProvider)
//      PlatformConfig.setSinaWeibo(AppConfig.SinaAppKey, AppConfig.SinaAppSecret, AppConfig.SinaCallBackUrl)
//      val mPushAgent = PushAgent.getInstance(context)
//      mPushAgent.register(object : IUmengRegisterCallback {
//        override fun onSuccess(deviceToken: String) {
//          //注册成功会返回deviceToken deviceToken是推送消息的唯一标志
//          Log.i("umpush", "注册成功：deviceToken：-------->  $deviceToken")
//          Hawk.put(HawkConfig.UmToken, deviceToken)
//          addAlias()
//        }
//
//        private fun addAlias() {
//          val token = ToolsUtil.getYDEncryptionToken()
//          mPushAgent.addAlias(token, AppConfig.UMType) { isSuccess, message ->
//            Log.d("song_test", "addAlias 绑定成功与否 = $isSuccess  message = $message")
//          }
//        }
//
//        override fun onFailure(s: String, s1: String) {
//          Log.e("umpush", "注册失败：-------->  s:$s,s1:$s1")
//        }
//      })
//
//      // 接收自定义消息
//      val messageHandler = object : UmengMessageHandler() {
//        override fun dealWithCustomMessage(p0: Context?, p1: UMessage?) {
//          super.dealWithCustomMessage(p0, p1)
//          Log.e("umpush", "dealWithCustomMessage接收自定义消息：-------->  ${p1!!.custom}")
//        }
//      }
//
//      val notificationClickHandler: UmengNotificationClickHandler = object : UmengNotificationClickHandler() {
//        override fun dealWithCustomAction(context: Context, msg: UMessage) {
//          super.dealWithCustomAction(context, msg)
//          Toast.makeText(context, msg.custom, Toast.LENGTH_LONG).show()
//          Log.e("umpush", "dealWithCustomAction接收消息：-------->  ${msg.custom}")
//        }
//
//        override fun launchApp(p0: Context?, p1: UMessage?) {
//          super.launchApp(p0, p1)
//          goToJump(p1)
//        }
//
//        override fun openUrl(p0: Context?, p1: UMessage?) {
//          super.openUrl(p0, p1)
//          Log.e("umpush", "openUrl接收自定义消息：-------->  ${p1!!.custom}")
//        }
//
//        override fun openActivity(p0: Context?, p1: UMessage?) {
//          super.openActivity(p0, p1)
//          Log.e("umpush", "openActivity接收自定义消息：-------->  ${p1!!.custom}")
//        }
//
//
//      }
//      mPushAgent.notificationClickHandler = notificationClickHandler
//      mPushAgent.messageHandler = messageHandler

      //选择AUTO页面采集模式，统计SDK基础指标无需手动埋点可自动采集。建议在宿主App的Application.onCreate函数中调用此函数。
      MobclickAgent.setPageCollectionMode(MobclickAgent.PageMode.AUTO);
    }

    private fun goToJump(p1: UMessage?) {
      //点击跳转参数
      val paramsMap = HashMap<String, Any?>()
      //接收到的参数
      val extras: Map<String, String>? = p1?.extra
      val b = Bundle()
      if (extras != null) {
        for (key in extras.keys) {
          b.putString(key, extras[key])
        }
      }

      //配置数据
      if (b.get("rstype") != null && b.get("docid") != null) {
        paramsMap["jumpFrom"] = "PushJump"
        paramsMap["doc_id"] = b.get("docid")
        when (b.get("rstype")) {
          "normal" -> paramsMap["content_type"] = "text_detail"
          "video" -> paramsMap["content_type"] = "video_detail"
        }
        XPageManager.push(XRouterPathConstants.NEWS_MAIN, paramsMap)
      }
    }
//                true -> {
//                    //debug环境打开日志输出，默认关闭
//                    UMConfigure.setLogEnabled(true)
//                }
//            }
//        }
  }
}
