前言:
游戏后期上线各个平台市场,需要接各自平台市场的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;
}