我在 6.1 中注意到了这个问题,但在降级到 6.0 后它仍然存在。
在某些 Android 设备上,Facebook 登录窗口需要很长时间才能显示。加载图标间歇性地显示,然后 Facebook 窗口最终显示,或者游戏崩溃。
问题是不一致的,但我认为有时它会在尝试显示 Facebook 窗口时崩溃,有时会在返回游戏时崩溃。
这是我的一位测试人员的崩溃报告:
java.lang.Error:致命异常 [主要] Unity 版本:4.6.0b21
设备型号:motorola XT1032 设备指纹:
motorola/falcon_retgb/falcon_umts:4.4.4/KXB21.14-L1.40/36:用户/释放键
原因:java.lang.RuntimeException:传递结果失败
ResultInfo{who=null, request=64206, result=-1, data=Intent {(有
额外) }} 活动
{com.companyname.gamename/com.facebook.unity.FBUnityLoginActivity}:
java.lang.NullPointerException:尝试调用虚拟方法
'布尔值 com.facebook.Session.onActivityResult(android.app.Activity,
int, int, android.content.Intent)' 位于空对象引用上
android.app.ActivityThread.deliverResults(ActivityThread.java:3432) 在
android.app.ActivityThread.handleSendResult(ActivityThread.java:3475)
在 android.app.ActivityThread.access$1300(ActivityThread.java:139) 处
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1258)
在 android.os.Handler.dispatchMessage(Handler.java:102) 处
android.os.Looper.loop(Looper.java:136) 位于
android.app.ActivityThread.main(ActivityThread.java:5086) 在
java.lang.reflect.Method.invoke(本机方法) at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 引起
作者:java.lang.NullPointerException:尝试调用虚拟方法
'布尔值 com.facebook.Session.onActivityResult(android.app.Activity,
int, int, android.content.Intent)' 位于空对象引用上
com.facebook.unity.FBLogin.onActivityResult(FBLogin.java:245) 在
com.facebook.unity.FBUnityLoginActivity.onActivityResult(FBUnityLoginActivity.java:25)
在 android.app.Activity.dispatchActivityResult(Activity.java:5446) 处
android.app.ActivityThread.deliverResults(ActivityThread.java:3428)
... 9 更多
以下是我的设备上登录崩溃时出现的 logcat 警告和错误:
pastebin http://pastebin.com/vHYSnMAd
附注抱歉,这个问题读起来像是错误报告,而不是问题。 Facebook 已要求用户通过 Stack Overflow 报告反馈和错误。
我弄清楚是什么导致了这个问题。虽然我不确定我所做的是否不正确,或者是否存在错误。
我通过引用 MonoBehaviour 的实例和方法来传递回调方法。看来对回调的引用有时会以这种方式丢失。如果我只是传递对该方法的引用,它就可以正常工作。
// instance is a reference to this instance of monobehaviour
// this sometimes crashes
public static void TryFBLogin() {
if (instance != null && FB.IsInitialized) {
FB.Login("public_profile,user_friends", instance.OnFBLoginAttempted);
}
}
// this works
public void TryFacebookLogin() {
if (FB.IsInitialized) {
FB.Login("public_profile,user_friends", OnFBLoginAttempted);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)