几个IOS版本的坑

0

1. 使用HTTP请求的设置
游戏使用HTTP请求下载进行配置更新,但如果在IOS9版本直接使用的话是连不上的,要在Info.plist中添加一些东西,具体我是不知道,反正是要加:
clipboard
截图中的NSAppTrasportSecurity输入之后会自动变成App Transport Security Settings。

2. unity导出IOS 64位版本
unity要导出IOS的64版本需要在PlayerSetting中设置:
clipboard[5]

导出XCODE之后,在XCODE的 BuildSetting -> Architectures中的Architectures选择StandardXXX,即支持arm64的即可(如果不是的话)
同时在上传到苹果审核的时候如果提示什么ipad,ipod什么的关于屏幕的问题,这个可以在General->Deployment Info 中勾上 Requires full screen

3. XCODE编译的时候提示某些libraries没找到
这个主要是出现在添加了第三方库什么的时候,明明都按着步骤添加正确,但还是会出现这种奇怪的问题。解决方法是在BuildSettings中的SearchPaths的Library路径中带双引号的,把引号删掉。

4. web服务器下载不到最新内容
web服务器更新配置文件,遇到个问题,其他平台都很正常,就是IOS虽然检测到需要重新下载,但下载下来的还是旧的版本。最后是在请求URL中加入一个时间戳类似 xxx?201502020202之类,保证每次请求发送的URL都是不同的,这样就可以更新下最新的来了

5. 出现’System.Int32[]::System.Collections.Generic.ICollection`1.CopyTo’ for which no ahead of time (AOT) code was generated.错误
我是在安装了Bugly之后,由Bugly上传的这个错误,游戏中也确实有很多地方出现了错误。
主要原因是“代码中有使用int[]的ToList方法,而此方法在iOS上是没有实现”
比如
int[] xxx = new int[3];
List<int> lst = new List<int>(xxx) 或 lst.AddRange(xxx) 都会导致这个问题
数组转给List只能使用for循环给list了

6. 出XCODE开发版本提示An App ID with Identifier ” is not available. Please enter a different string的问题。

我做了一些动作,也不知道是不是所有的动作都有用,包括重新下载证书什么的,最后一步是
XCode->preferenc->Account->选择账号->View Details->Download All -》 Done. 重启。再出就可以了。估计是最后这一步管的用。
另外说一句,历史上Archive过的可以通过 Window->Organizer打开那个窗口查看

Unity3D 插件方式接渠道IOS SDK

0

一般渠道都会提供Unity3D版本的接口插件脚本的,但林子太大嘛,总有那么几个不考虑我们的感受,所以偏偏没有,只能自己去动手写。

其实也不是很难,主要难点就是你到底会多少Objective C的内容。。反正我是几乎不会,所以在实际开始之前就看了两天的OC的语法相关的东西,本来还想在Windows下装什么IDE来着可以写OC代码,但这样太浪费时间了,而且也没什么必要要将OC学得多深,其实现在看来就两个文件,一个.h,一个.mm。

可能不同的SDK它提供的东西不一样吧,我这个SDK在OC中提供了一个单例,所以我只需要在我的代码中直接使用这个单例就好。而且该SDK还提供了委托,所以我要实现这个委托中的方法来 被回调。
委托,在C# 中我当然是好理解的,而且用的出神入化~~,但一到了OC中我彻底就蒙了,学了两天OC其中一天半是在搞明白这TM怎么用。我根本不想知道它的原理是个毛,我只想知道SDK提供了这个我TM怎么用。
我纠结牢骚的过程就不说了,总之最后还是老老实实的看些例子,用我的聪明才智理解一下文档中的部分关键词,总算明白是怎么回事了~~

写完了两个文件,可以在XCode工程中放到里面,也可以放到Unity工程的Plugins/IOS 目录下面,这样到处XCode工程的时候这两个文件会自动被加入到Libraries中。

然后其他内容可以看下Unity的提供的例子:http://docs.unity3d.com/Manual/PluginsForIOS.html

另外我将那两个例子贴一下吧,反正这也没什么,我就贴一下,说不定就帮助了哪个跟我一样纠结我就想知道TM怎么用的人:

SDK_7659.h

   1: #import <Foundation/Foundation.h>

   2: #import <xsdkFramework/XSDK.h>

   3: @interface SDK_7659:NSObject<XSDKDelegate>

   4:  

   5: @end

SDK_7659.mm

   1: #import "SDK_7659.h"

   2: #define SDKEvent "RecieveEventObjName"

   3: @implementation SDK_7659

   4:  

   5: -(void)XSDKCheckUpdateCallBack

   6: {

   7:     NSLog(@"XSDKCheckUpdateCallBack!!!!!!");

   8:     UnitySendMessage(SDKEvent, "eventXSDKCheckUpdateCallBack", "");

   9: }

  10: -(void)XSDKLoginCallBack:(NSString *)tokenKey

  11: {    

  12:     NSLog(@"XSDKLoginCallBack___tokenKey : %@", tokenKey);    

  13:     UnitySendMessage(SDKEvent, "eventXSDKLoginCallBack", [tokenKey UTF8String]);

  14: }

  15:  

  16: -(void)XSDKLogOutCallBack:(NSString *)guid

  17: {

  18:     NSLog(@"XSDKLogOutCallBack___guid:%@", guid);

  19:     UnitySendMessage(SDKEvent, "eventXSDKLogOutCallBack", [guid UTF8String]);

  20: }

  21:  

  22: -(void)XSDKGameLoginCallback:(NSString *)username password:(NSString *)password resultBlock:(void (^)(NSString * typeMessage))resultBlock

  23: {

  24:     NSLog(@"XSDKGameLoginCallback__usernam:%@, passward:%@", username, password);    

  25: }

  26:  

  27: -(void)XSDKGameLoginSuc

  28: {

  29:     NSLog(@"XSDKGameLoginSuc");

  30: }

  31:  

  32: -(void)XSDKPayCallback:(BOOL)isClientSuccess

  33: {

  34:     NSLog(@"XSDKPayCallback ___ %d", isClientSuccess ? 1 : 0);

  35: }

  36: @end

  37:  

  38: static SDK_7659* g_SDK7659 = nil;

  39: extern "C"

  40: {

  41:     void Init_7659(char* appKey)

  42:     {

  43:         NSLog(@"进入Init_7659~~~~~~~");

  44:         [[XSDK instanceXSDK] setAppKey:[NSString stringWithUTF8String:appKey]];    

  45:         if (g_SDK7659 == nil)

  46:         {

  47:              g_SDK7659 = [[SDK_7659 alloc] init];

  48:              [[XSDK instanceXSDK] setXsdkDelegate:g_SDK7659];

  49:         }

  50:         [[XSDK instanceXSDK] setISSupportGameNo:NO];

  51:         [[XSDK instanceXSDK] setOnlySupportIPhone:NO];

  52:         [[XSDK instanceXSDK] checkUpdate];

  53:         //[[XSDK instanceXSDK] login];    

  54:         //[[XSDK instanceXSDK] setGameContact:@"找回密码吗?"];

  55:     }    

  56:  

  57:     void ShowLogin_7659()

  58:     {

  59:         [[XSDK instanceXSDK] login];

  60:     }

  61:  

  62:     void Logout_7659()

  63:     {

  64:         [[XSDK instanceXSDK] logout];

  65:     }

  66: }