Android: 渠道号获取

前言:
游戏后期上线各个平台市场,需要接各自平台市场的SDK,而为了区别各个SDK,使用渠道号是个比较简单的方法。这里简单介绍下,使用方法过程。

Android 代码:

// 获取渠道号
public static String getChannel(){
    String channel = "";
    try{
        ApplicationInfo info = m_instance.getPackageManager().
                getApplicationInfo(m_instance.getPackageName(), PackageManager.GET_META_DATA);
        if(info != null && info.metaData != null){
            String metaData = info.metaData.getString("CP_CHANNEL");
            if(!metaData.isEmpty()){
                channel = metaData;
            }
        }
    }catch (PackageManager.NameNotFoundException e){
        e.printStackTrace();
    }
    Log.e(LOG_TAG, "当前渠道为:"+ channel);
    return channel;
}

// 获取 手机 Imei
public static String getIMEI(){
    TelephonyManager tm = (TelephonyManager)m_instance.getSystemService(TELEPHONY_SERVICE);
    return tm.getDeviceId();
}

Manifest.xml:
在Application 里添加这句:

     // value:是每次接SDK而在Manifext 配置的渠道号,如:百度:CP_BAIDU, 360:CP_QIHOO
     <meta-data android:name="CP_CHANNEL" android:value="CP_TENCENT"/>

Unity(C#) 代码:

    /// <summary>
    /// 获取渠道名
    /// </summary>
    /// <returns>返回渠道名</returns>
    public static string GetChannel()
    {
        #if(UNITY_ANDROID)
        AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
        return jo.CallStatic<string>("getChannel");
        #endif
        return null;
    }
        /// <summary>
        /// 获取设备IMEI
        /// </summary>
        /// <returns>返回设备IMEI</returns>
        public static string GetIMEI()
        {
            #if(UNITY_ANDROID)
            AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
            AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
            return jo.CallStatic<string>("getIMEI");
            #endif
            return null;
        }

猜你喜欢

转载自blog.csdn.net/JeterPong/article/details/80264199