繁体   English   中英

登录Facebook时Unity iOS游戏在后台被杀死

[英]Unity ios game get killed in background when login into Facebook

在IOS7,iPhone-4s上将游戏与最新版本的Facebook Unity SDK集成时遇到了问题。

每次游戏请求Facebook登录操作时,游戏都会变为非活动状态并变成后台,并出现Facebook登录页面,然后IOS会杀死我的游戏,即使该游戏使用的内存也只有90M左右。 登录完成后,IOS重新启动了游戏,这时Facebook SDK找不到执行登录操作的先前游戏进程,因此无法将登录结果传递到新的游戏实例中。

因此,有两个问题:

1)有什么方法可以使游戏进程在后台运行吗? 我不知道为什么90M的内存使用量足够大,IOS想要杀死我的进程。

2)有什么方法可以让新游戏进程获得上一个游戏进程执行的登录结果?

3)在执行登录操作而不是退出游戏时,是否可以统一打开Facebook的嵌入式webView登录对话框?

谢谢。

------------更新----------

找到第三个问题的解决方案:

1)找到Facebook / Editor / iOS / FbUnityInterface.mm

2)查找方法-(void)login:(const char *)scope {...}

3)变更

openWithBehavior:FBSessionLoginBehaviorWithFallbackToWebView

openWithBehavior:FBSessionLoginBehaviorForcingWebView

4)现在,每次您请求登录时,都会弹出一个嵌入的Web视图对话框,而不是从当前游戏跳到Facebook登录对话框。

1)首先,请确保您尚未选中“ PlayerSettings | 其他设置| 配置| 在挂起时退出”选项,该选项会在您退出应用程序时将其杀死。

iPhone4S上的90MB可能很多,设备本身只有512 MB的RAM内存,系统占用了很多内存。 如果您打开了许多应用程序,那么您的应用程序,然后是当今不轻量的Facebook应用程序,则可能会杀死最大的活动进程(您的游戏)。

2)是的。 Facebook Unity3d插件具有一种用于检查已记录状态的方法,该方法在成功登录后应返回true(即使该应用被终止)。

if( FB.IsLoggedIn )
{
    // your code here
}

3)对于当前版本的Unity3D Facebook插件,没有简单的方法可以做到这一点。

尝试在Xcode中进行调试,以查看在后台终止应用程序时显示的内容。 它应该给一个堆栈跟踪,看看会发生什么。 对于iPhone4S而言,90MB并不是问题,因此可以排除内存不足的崩溃问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM