登录 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快捷打包

Facebook Unity SDK 测试用户登录

无法登录 / Facebook Unity SDK & Android

Facebook Android SDK 仅在安装本机应用程序时工作