我注意到6.1的这个问题,但在降级到6.0之后它仍然存在。
在某些Android设备上,Facebook登录窗口需要很长时间才能显示。加载图标间歇显示,然后Facebook窗口最终显示,或者游戏崩溃。
问题不一致,但我认为有时它会在尝试显示Facebook窗口时崩溃,有时在返回游戏时会崩溃。
这是我的一位测试人员的崩溃报告:
java.lang.Error:FATAL EXCEPTION [main] Unity版本:4.6.0b21 设备型号:motorola XT1032设备指纹: 摩托罗拉/ falcon_retgb / falcon_umts:4.4.4 / KXB21.14-L1.40 / 36:用户/释放密钥
引起:java.lang.RuntimeException:传递结果失败 ResultInfo {who = null,request = 64206,result = -1,data = Intent {(has 额外的)}}到活动 {com.companyname.gamename / com.facebook.unity.FBUnityLoginActivity}: java.lang.NullPointerException:尝试调用虚方法 ' boolean com.facebook.Session.onActivityResult(android.app.Activity, int,int,android.content.Intent)'在null对象引用 android.app.ActivityThread.deliverResults(ActivityThread.java:3432)at android.app.ActivityThread.handleSendResult(ActivityThread.java:3475) 在android.app.ActivityThread.access $ 1300(ActivityThread.java:139)at android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1258) 在android.os.Handler.dispatchMessage(Handler.java:102)at android.os.Looper.loop(Looper.java:136)at android.app.ActivityThread.main(ActivityThread.java:5086)at java.lang.reflect.Method.invoke(Native Method)at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:785) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)引起 by:java.lang.NullPointerException:尝试调用虚方法 ' boolean com.facebook.Session.onActivityResult(android.app.Activity, int,int,android.content.Intent)'在null对象引用 com.facebook.unity.FBLogin.onActivityResult(FBLogin.java:245)at at com.facebook.unity.FBUnityLoginActivity.onActivityResult(FBUnityLoginActivity.java:25) 在android.app.Activity.dispatchActivityResult(Activity.java:5446)处 android.app.ActivityThread.deliverResults(ActivityThread.java:3428) ... 9更多
这是我的设备登录崩溃时的logcat警告和错误:
P.S。抱歉,这个问题看起来像是一个错误报告,而不是一个问题。 Facebook已经要求用户通过Stack Overflow报告反馈和错误。
答案 0 :(得分:0)
我弄清楚造成这个问题的原因。虽然我不确定我所做的是不正确,还是有错误。
我通过引用我的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);
}
}