项目突然要换SDK和做IOS内购,经过几天的忙终于搞定了。说说自己的经验吧。要接好androidSDK和做好IOS内购必须要有android和ios基础,不需要太精但是能看懂最起码。(还好自己对这两个都不是小白,都学过点时间)
先说IOS内购吧,在公司没有MAC只能到被IOS软件开发的同事那里build所以要吐槽下。IOS内购最烦人的不是代码而是申请key,还有就是上传二进制包,不知道别人如何我在这步卡了许久。还有一条就是IOS内购要小心处理已经有单在苹果商店但是还没成交的事态。
unity调用IOS :
[DLLIport("__Internal")]
static extern 定义IOS的函数()
IOS调用unity :
UnitySendMessage
再到androidSDK(这里我接的是百度SDK),1.修改androidxml加权限,加入需要手册里面的配置。2.写通用接口。3.定好订单的数据结构(我这里用的是json).4.主要不要在主线程里面做UI的操作所以用线程或者使用handler(推荐使用handler,原因我自己就用哈哈)
Android 调用Unity :
jc = new AndroidJavaClass("com.sdkapi.SDKAPI");
jc.CallStatic("Init");
Unity 调用Android:
com.unity3d.player.UnityPlayer.UnitySendMessage(objName, funName,parms);
再来。。。就是不能接只能为接一个SDK而接,要想使通用性。哈哈。怎么做呢?
1.肯定要写个通用的接口类。比如BaseSDK类,里面什么也不做就是定义些接口比如init,Login,LogOut,Pay,GameCentre...这些通用接口。
2.每个平台的区分都是继承这个接口来写。比如android 就是androidSDK ,IOS就是IOSSDK咯自己决定。那么里面都做些什么就是上面的接口分别实现调用unity.
3.跟着就是写一个SDKManager用来管理所有的SDK,里面函数都是和BaseSDK一样就是怎么说呢,就是隔离开所有的上面的androidSDK和IOSSDK,写如下面。
public SDKBase _sdkBase;
public SDKInterface.CallBack _loginCallBack;
public PayData _currentPayData; //订单结构
/// <summary>
/// 初始化
/// falg : 判断平台下那个SDK
/// </summary>
public void Init()
{
#if UNITY_EDITOR
_sdkBase = new SDKBase();
#elif UNITY_IPHONE
_sdkBase = new SDKForIOS();
#elif UNITY_ANDROID
_sdkBase = new SDKForAndroid();
#elif UNITY_STANDALONE_WIN
_sdkBase = new SDKBase();
#endif
_sdkBase.Init();
}
4.在android或者ios边同样的封装好接口,隐藏里面对sdk的细节部分,接口要和BaseSDK一样。那样就可以对接上了。
5.就是按照文档或者教程开始漫长的对接调试了。