我在 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) 现在,每次您请求登录时,都会弹出一个嵌入的网页 View 对话框,而不是跳出当前游戏到 Facebook 登录对话框。
最佳答案
1) 首先确保你没有检查'PlayerSettings |其他设置 |配置 | Exit on suspend' 选项,它会在您离开时杀死您的应用。
90MB 在 iPhone4S 上可能很多,设备本身只有 512 MB RAM 内存,系统需要很多。如果你打开了很多应用程序,然后是你的应用程序,然后是现在也不是轻量级的 facebook 应用程序,那么最大的事件进程(你的游戏)可能会被杀死。
2) 是的。 Facebook Unity3d 插件有一个检查登录状态的方法,它应该在成功登录后返回 true(即使应用程序被终止)。
if( FB.IsLoggedIn )
{
// your code here
}
3) 当前版本的 Unity3D Facebook 插件没有简单的方法可以做到这一点。
关于ios - 登录 Facebook 时,Unity ios 游戏在后台被杀死,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22832744/