package com.webclip.base;

/**
 * **********************
 *
 * @Author bug machine
 * 创建时间： 2026/3/11 14:10
 * 用途
 * **********************
 */
import android.content.Context;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GoogleApiAvailability;

public class FcmCheckUtil {
    // FCM要求的最低Google Play服务版本
    private static final int MIN_GOOGLE_PLAY_SERVICES_VERSION = 19000000;

    /**
     * 检查设备是否支持FCM
     * @param context 上下文
     * @return true=支持，false=不支持
     */
    public static boolean isFcmSupported(Context context) {
        GoogleApiAvailability googleApi = GoogleApiAvailability.getInstance();
        // 检查Google Play服务是否可用
        int resultCode = googleApi.isGooglePlayServicesAvailable(context);

        // 只有当服务完全可用且版本达标时，才判定支持FCM
        return resultCode == ConnectionResult.SUCCESS
                && googleApi.getApkVersion(context) >= MIN_GOOGLE_PLAY_SERVICES_VERSION;
    }

    /**
     * 获取详细的FCM支持状态（用于调试/用户提示）
     * @param context 上下文
     * @return 状态描述
     */
    public static String getFcmSupportStatus(Context context) {
        GoogleApiAvailability googleApi = GoogleApiAvailability.getInstance();
        int resultCode = googleApi.isGooglePlayServicesAvailable(context);

        switch (resultCode) {
            case ConnectionResult.SUCCESS:
                if (googleApi.getApkVersion(context) >= MIN_GOOGLE_PLAY_SERVICES_VERSION) {
                    return "设备支持FCM（Google Play服务可用且版本达标）";
                } else {
                    return "Google Play服务版本过低，不支持FCM（需更新）";
                }
            case ConnectionResult.SERVICE_MISSING:
                return "未安装Google Play服务，不支持FCM";
            case ConnectionResult.SERVICE_DISABLED:
                return "Google Play服务已禁用，不支持FCM";
            case ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED:
                return "Google Play服务需要更新，暂不支持FCM";
            default:
                return "设备不支持FCM（错误码：" + resultCode + "）";
        }
    }


    /**
     * 获取详细的FCM支持状态（用于调试/用户提示）
     * @param context 上下文
     * @return 状态描述
     */
    public static boolean getFcmSupport(Context context) {
        LogUtils.i("支持FCM："+getFcmSupportStatus(context));
        GoogleApiAvailability googleApi = GoogleApiAvailability.getInstance();
        int resultCode = googleApi.isGooglePlayServicesAvailable(context);

        switch (resultCode) {
            case ConnectionResult.SUCCESS:
              return true;
            case ConnectionResult.SERVICE_MISSING:
                return false;
            case ConnectionResult.SERVICE_DISABLED:
                return false;
            case ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED:
                return false;
            default:
                return false;
        }
    }
}
