登录 Facebook 时,Unity ios 游戏在后台被杀死
Posted
技术标签:
【中文标题】登录 Facebook 时,Unity ios 游戏在后台被杀死【英文标题】:Unity ios game get killed in background when login into Facebook 【发布时间】:2014-04-03 09:04:16 【问题描述】:在 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) 现在,每次您请求登录时,都会弹出一个嵌入的网页视图对话框,而不是跳出当前游戏到 Facebook 登录对话框。
【问题讨论】:
欢迎来到 ***。我猜有3个问题。无论如何,但这并不是提出问题的好方法。将这 3 个问题分开,付出一些努力,然后分别询问,描述您尝试过的方法以及问题所在。 感谢 Sanhil,这三个问题对应于我描述的一个问题的三个潜在解决方案。 当你发布版本的大小达到一半时是否也会发生这种情况? 不,开发构建 【参考方案1】:1) 首先确保你没有检查'PlayerSettings |其他设置 |配置 | Exit on suspend' 选项,当您离开时会终止您的应用。
iPhone4S 上的 90MB 可能很多,设备本身只有 512 MB RAM 内存,系统占用很多。如果您打开了许多应用程序,然后是您的应用程序,然后是现在也不是轻量级的 facebook 应用程序,那么最大的活动进程(您的游戏)可能会被杀死。
2) 是的。 Facebook Unity3d 插件有一个检查记录状态的方法,它应该在成功登录后返回 true(即使应用程序被杀死)。
if( FB.IsLoggedIn )
// your code here
3) 使用当前版本的 Unity3D Facebook 插件没有简单的方法。
【讨论】:
谢谢你。我在 Facebook 插件中更改了 FacebookUnityInteface.mm 中的登录方法,现在它会弹出一个嵌入式 Web 对话框供用户登录,而不是跳出游戏。还是谢谢你们!【参考方案2】:尝试在 Xcode 中进行调试构建,看看当应用程序在后台被杀死时它会显示什么。它应该提供一个堆栈跟踪以查看会发生什么。 90MB 对于 iPhone4S 来说应该不是问题,因此可以排除内存不足崩溃的可能性。
【讨论】:
感谢您的回复,Esa。我已经这样做了,XCode 告诉我应用程序由于内存压力而终止,这真的很奇怪,因为当我在 iPad2 上测试同一个应用程序时,一切正常。以上是关于登录 Facebook 时,Unity ios 游戏在后台被杀死的主要内容,如果未能解决你的问题,请参考以下文章
Unity 4.2.1 和 Facebook 插件 4.2.4 的登录问题
使用适用于 Android 的 Facebook Unity SDK 登录 facebook 时应用程序强制关闭
小松教你手游开发unity实用技能unity ios快捷打包