最近又接了一次平台SDK,顺带着也学习了接IOS的SDK。IOS的也是边做边学的,现在还没这么清楚,就不讲了。还是来说下安卓SDK的接法,因为平台需求,我用了2种方式来接平台SDK。随便总结下,方便以后查阅。3种方式是我目前知道的,我不清楚是否还有其他接法。个人认为第一种和第三种是比较麻烦的。
1.Unity导出Andorid工程,再导入SDK库,开始写SDK代码,然后就可以打APK。这个比较简单粗暴,就不多说了。
2.SDK导出aar包,作为插件导入Unity,然后Unity生成APK,这个方式比较好,也是我刚开始采用的,基于此,还写了个一键打包方法。
3.Unity导出aar包,作为插件导入Android工程,开始写SDK代码,然后就可以打APK。其实这跟第一种方法类似,但由于平台要弄聚合SDK,我们这安卓SDK代码不需要自己写,由平台方写,所以后续采用了这种方式。
先上SDK代码
SDK管理类:
public class SDKManager : MonoBehaviour
{
#region 单例
private static SDKManager _instance;
public static SDKManager Instance
{
set { _instance = value; }
get { return _instance; }
}
#endregion
private SDKBase sdk;
#region sdk 参数
public int GetPlatformId()
{
if (sdk != null)
{
AddResult("GetPlatformId: " + sdk.GetPlatformId() + "---");
return sdk.GetPlatformId();
}
return 0;
}
public string GetUID()
{
if (sdk != null)
{
AddResult("GetUID: " + sdk.GetUid() + "---");
return sdk.GetUid();
}
return "";
}
#endregion
private void Awake()
{
_instance = this;
}
private void Start()
{
#if UNITY_EDITOR
sdk = new SDKBase();
#elif UNITY_ANDROID
sdk = new SDKForAndroid();
#elif UNITY_IPHONE
sdk = new SDKForIphone();
#endif
SDKInit();
}
/// <summary>
/// SDK初始化
/// </summary>
public void SDKInit()
{
if (sdk == null) return;
AddResult("SDKInit");
sdk.Init();
}
/// <summary>
/// SDK登录
/// </summary>
public void SDKLogin()
{
if (sdk == null) return;
AddResult("SDKLogin");
sdk.Login();
}
/// <summary>
/// SDK登出
/// </summary>
public void SDKLogout()
{
if (sdk == null) return;
AddResult("SDKLogout");
sdk.Logout();
}
/// <summary>
/// SDK付费
/// </summary>
public void SDKPay()
{
if (sdk == null) return;