package com.base.appzxhy.business.pangle

import android.content.Context
import com.base.appzxhy.BuildConfig
import com.base.appzxhy.GlobalConfig
import com.base.appzxhy.R
import com.bytedance.sdk.openadsdk.api.PAGConstant.PAGChildDirectedType
import com.bytedance.sdk.openadsdk.api.PAGConstant.PAGDoNotSellType
import com.bytedance.sdk.openadsdk.api.PAGConstant.PAGGDPRConsentType
import com.bytedance.sdk.openadsdk.api.PAGConstant.PAGPAConsentType
import com.bytedance.sdk.openadsdk.api.PAGUserInfoForSegment
import com.bytedance.sdk.openadsdk.api.init.PAGConfig
import com.bytedance.sdk.openadsdk.api.init.PAGSdk
import com.bytedance.sdk.openadsdk.api.init.PAGSdk.PAGInitCallback

object PangleInit {

    //    var maxInitCallBack: (() -> Unit)? = null

    private fun buildNewConfig(context: Context): PAGConfig? {

        //根据穿山甲官方文档，准确设置用户属性可使eCPM提升15%-40%，但虚假信息将导致处罚
        val userInfo = PAGUserInfoForSegment.Builder()
            .setAge(11)//年龄
            .setGender(PAGUserInfoForSegment.GENDER_MALE)//性别
            .setChannel("pangle-mediation channel")//	主渠道标识
            .setSubChannel("pangle-mediation sub-channel")//子渠道标识
            .setUserId("12345")//用户唯一id
            .setUserValueGroup("pangle-mediation-group")//用户价值分组（如付费用户分组）
            .setCustomInfos(HashMap<String?, String?>())//自定义扩展属性
            .build()

        return PAGConfig.Builder()
            .appId(GlobalConfig.ID_PANGLE_APPLICATION)
            .appIcon(R.mipmap.logo)
            .debugLog(BuildConfig.DEBUG)
            .supportMultiProcess(false)

            //设置是否出售用户数据（CCPA 合规） 美国加州消费者隐私法案 (CCPA)
            //PAG_DO_NOT_SELL_TYPE_DEFAULT	默认状态（SDK 自动处理）
            //PAG_DO_NOT_SELL_TYPE_NOT_SELL	用户选择不出售数据
            //PAG_DO_NOT_SELL_TYPE_SELL	用户允许出售数据
            .setDoNotSell(PAGDoNotSellType.PAG_DO_NOT_SELL_TYPE_DEFAULT)

            //标识应用是否面向儿童（COPPA 合规） 美国儿童在线隐私保护法 (COPPA)
            //PAG_CHILD_DIRECTED_TYPE_DEFAULT	默认状态
            //PAG_CHILD_DIRECTED_TYPE_CHILD	应用主要面向13岁以下儿童
            //PAG_CHILD_DIRECTED_TYPE_NOT_CHILD	应用不面向儿童
            .setChildDirected(PAGChildDirectedType.PAG_CHILD_DIRECTED_TYPE_DEFAULT)

            //设置 GDPR 用户同意状态 欧盟通用数据保护条例 (GDPR)
            //PAG_GDPR_CONSENT_TYPE_DEFAULT	默认状态（未明确同意）
            //PAG_GDPR_CONSENT_TYPE_CONSENT	用户明确同意数据收集
            //PAG_GDPR_CONSENT_TYPE_NO_CONSENT	用户拒绝数据收集
            .setGDPRConsent(PAGGDPRConsentType.PAG_GDPR_CONSENT_TYPE_DEFAULT)

            //设置用户是否同意接收个性化广告的方法，主要针对中国大陆地区的《个人信息保护法》
            //PAG_PA_CONSENT_TYPE_CONSENT	用户同意个性化广告	投放个性化广告
            //PAG_PA_CONSENT_TYPE_NO_CONSENT	用户拒绝个性化广告	仅投放通用广告
            .setPAConsent(PAGPAConsentType.PAG_PA_CONSENT_TYPE_CONSENT)
            //用户分组,不懂不用调
//            .setConfigUserInfoForSegment(userInfo)

            .build()
    }

    fun initPangle(context: Context, next: ((isInit: Boolean) -> Unit)? = null) {

        //此方法一定要在初始化Pangle以及其他聚合之前调用
        PAGConfig.setIsMediation(true)

        val pAGInitConfig = buildNewConfig(context)
        PAGSdk.init(context, pAGInitConfig, object : PAGInitCallback {
            override fun success() {

                val version = PAGSdk.getSDKVersion()
                val isInitSuccess = PAGSdk.isInitSuccess()
                next?.invoke(isInitSuccess)
                //context.toast("pangle init success $version")
            }

            override fun fail(code: Int, msg: String?) {
                next?.invoke(false)
                //context.toast("pangle init fail code=$code msg=$msg")
            }
        })
    }


}