Unity在IOS和Android平台获取应用版本号

unity.jpeg

首先明确一下,VersionName和BuildCode。这里BuildCode应用版本号指的是开发者需要记录版本用的,VersionName应用版本名,是对于用户可以看到的,让用户知道他使用的版本是多少。

VersionName获取:

在Unity中获取非常简单:

var versionName = Application.version;

不需要区分平台,可直接获取。

BuildCode获取:

在Unity中获取:

var versionCode = PlayerSettings.Android.bundleVersionCode;
或者
var versionCode = PlayerSettings.iOS.buildNumber;

主要这里buildNumber获取到的是string类型,需要转一下,这里的api都是PlayerSettings下的,所有当你打包到Android或者IOS平台后,都不可用了,所有这里涉及到Unity和Android,IOS的梦幻联动了~

获取Android BuildCode的方法
public static int GetAppVersionCode()
    {
        AndroidJavaClass contextCls = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        AndroidJavaObject context = contextCls.GetStatic<AndroidJavaObject>("currentActivity");
        AndroidJavaObject packageMngr = context.Call<AndroidJavaObject>("getPackageManager");
        string packageName = context.Call<string>("getPackageName");
        AndroidJavaObject packageInfo =
            packageMngr.Call<AndroidJavaObject>("getPackageInfo", packageName, 0);
        return packageInfo.Get<int>("versionCode");
    }

代码直接copy到项目即可使用。

获取IOS BuildCode的方法

首先需要创建一个.m文件,把脚本挂在一个GameObject上,代码如下:

#import "UnityInterface.h"
extern "C" {
     int _getVersion() {
        //这里是获取VersionName
         NSString *ver = [[[NSBundle mainBundle] infoDictionary]
         objectForKey:@"CFBundleShortVersionString"];
    
        //这里是获取BuildCode
         NSString *build = [[[NSBundle mainBundle] infoDictionary]
         objectForKey:@"CFBundleVersion"];

         return build.intValue;
     }
}

在Unity中调用_getVersion方法:

public class UseOCCode : MonoBehaviour
{
#if UNITY_IOS
    [DllImport("__Internal")]
    private static extern int _getVersion();

    /// <summary>
    /// 在xCode中获取应用版本号
    /// </summary>
    /// <returns></returns>
    public static int GetIOSVersionCode()
    {
        return _getVersion();
    }
#endif
}

在需要调用出,需要先判断当前运行平台:

#if UNITY_IOS
            if (Application.platform == RuntimePlatform.IPhonePlayer)
            {
                var curStatus = ATTAuth.GetIOSVersionCode();
            }
#endif
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容