package com.yidian.bcommon.utils

import android.content.Context
import android.os.Bundle
import com.umeng.analytics.MobclickAgent
import com.umeng.commonsdk.UMConfigure
import com.umeng.message.entity.UMessage
import com.yidian.bcommon.constant.AppConfig
import com.yidian.bcommon.BuildConfig
import com.yidian.bcommon.constant.XRouterPathConstants
import com.yidian.xpage.XPageManager


/**
 * 友盟错误统计、push辅助类
 * */
class UMConfigUtils {
  companion object {

    /**
     * 预初始化
     */
    fun preInit(context: Context) {
      if (BuildConfig.IS_UMENG_RELEASE) {
        UMConfigure.preInit(context, AppConfig.UMAppKey, AppConfig.UMChannel)
      } else {
        UMConfigure.preInit(context, AppConfig.UMAppTestKey, AppConfig.UMTestChannel)
      }
    }

    /**
     * 正式初始化
     */
    fun init(context: Context) {
      //release环境上报错误信息，参数有：上下文、APPkey、渠道号、设备类型、推送密钥
      if (BuildConfig.IS_UMENG_RELEASE) {
        UMConfigure.init(context, AppConfig.UMAppKey, AppConfig.UMChannel, UMConfigure.DEVICE_TYPE_PHONE, AppConfig.UMPushSecret)
      } else {
        UMConfigure.init(
          context,
          AppConfig.UMAppTestKey,
          AppConfig.UMTestChannel,
          UMConfigure.DEVICE_TYPE_PHONE,
          AppConfig.UMTestPushSecret
        )
      }
//
//      // todo 分享设置,需要区分环境
//      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)
//
//      // todo 推送设置,需要区分环境
//      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)
//                }
//            }
//        }
  }
}
