2014-05-25 105 views
0

問題很簡單,Google Play遊戲服務沒有活動是可以的嗎?Google Play遊戲無法再次登錄

我可以在第一時間簽名,並且一切正常,當我告訴它註銷並嘗試再次登錄時(signin-> signout-> signin),它就無法工作。

這是代碼:

public final class GooglePlayGameServices 
{ 
    private static Activity ua;//Unity Activity 
    private static GameHelper gameHelper = null; 
    private static GameHelperListener gameHelperListener= null; 

    public static void signIn() 
    { 
     if (ua == null) 
     { 
      ua = UnityPlayer.currentActivity; 
     } 

     ua.runOnUiThread(new Runnable() {public void run() 
     { 
      if (gameHelper == null) 
      { 
       conectedInPast = false; 
       gameHelper = new GameHelper(ua, GameHelper.CLIENT_GAMES); 
       gameHelperListener = new GameHelperListener() { 

        @Override 
        public void onSignInSucceeded() { 
         // TODO Auto-generated method stub 

        } 

        @Override 
        public void onSignInFailed() { 
         // TODO Auto-generated method stub 

        } 
       }; 

       gameHelper.setup(gameHelperListener); 
       gameHelper.enableDebugLog(true); 
      } 

      if (!gameHelper.isConnecting() && !gameHelper.isSignedIn()) 
      { 
       gameHelper.beginUserInitiatedSignIn(); 
      } 
      else 
      { 
       if (gameHelper.isConnecting()) 
       { 
        gameHelper.makeSimpleDialog("You are connecting. Please be patient").show(); 
       } 
       else if (gameHelper.isSignedIn()) 
       { 
        gameHelper.makeSimpleDialog("You have already signed in").show(); 
       } 
      } 

     }});    
    } 

    public static void signOut() 
    { 
     if (gameHelper != null) 
     { 
      ua.runOnUiThread(new Runnable() {public void run() 
      { 
       gameHelper.signOut(); 
      }}); 
     } 
    } 

    public static boolean isSignedIn() 
    { 
     return gameHelper != null&& gameHelper.isSignedIn(); 
    } 

    public static void showLeaderBoard(final String leaderboardID) 
    { 
     ua.runOnUiThread(new Runnable() {public void run() 
     { 
      ua.startActivityForResult(Games.Leaderboards.getLeaderboardIntent(gameHelper.getApiClient(), leaderboardID), 5342); 
     }}); 
    } 

} 

這是簽到其他時間只是當logcat的:

05-25 13:14:13.092: D/GameHelper(21003): GameHelper: beginUserInitiatedSignIn: resetting attempt count. 
05-25 13:14:13.093: D/GameHelper(21003): GameHelper: Starting USER-INITIATED sign-in flow. 
05-25 13:14:13.093: D/GameHelper(21003): GameHelper: beginUserInitiatedSignIn: starting new sign-in flow. 
05-25 13:14:13.093: D/GameHelper(21003): GameHelper: Starting connection. 
05-25 13:14:13.094: E/GooglePlayServicesUtil(21003): The Google Play services resources were not found. Check your project configuration to ensure that the resources are included. 
05-25 13:14:13.140: D/GameHelper(21003): GameHelper: onConnectionFailed 
05-25 13:14:13.140: D/GameHelper(21003): GameHelper: Connection failure: 
05-25 13:14:13.140: D/GameHelper(21003): GameHelper: - code: SIGN_IN_REQUIRED(4) 
05-25 13:14:13.140: D/GameHelper(21003): GameHelper: - resolvable: true 
05-25 13:14:13.140: D/GameHelper(21003): GameHelper: - details: ConnectionResult{statusCode=SIGN_IN_REQUIRED, resolution=PendingIntent{421e1d10: [email protected]}} 
05-25 13:14:13.140: D/GameHelper(21003): GameHelper: onConnectionFailed: WILL resolve because user initiated sign-in. 
05-25 13:14:13.140: D/GameHelper(21003): GameHelper: onConnectionFailed: resolving problem... 
05-25 13:14:13.141: D/GameHelper(21003): GameHelper: resolveConnectionResult: trying to resolve result: ConnectionResult{statusCode=SIGN_IN_REQUIRED, resolution=PendingIntent{421e1d10: [email protected]}} 
05-25 13:14:13.141: D/GameHelper(21003): GameHelper: Result has resolution. Starting it. 
05-25 13:14:13.141: I/ActivityManager(990): START u0 {flg=0x4000000 cmp=com.google.android.gms/.games.ui.signin.SignInActivity (has extras)} from pid -1 
05-25 13:14:13.147: W/ContextImpl(1286): Calling a method in the system process without a qualified user: android.app.ContextImpl.sendBroadcast:1244 android.content.ContextWrapper.sendBroadcast:365 com.motorola.motocare.util.TriggerHelper$TriggerBuilder.send:76 com.motorola.motocare.internal.frameworkevents.PauseResumeTrigger.handleFrameworkEvent:53 com.motorola.motocare.internal.frameworkevents.FwEventMonitor$FrameworkListener.processFrameworkEvent:114 
05-25 13:14:13.172: D/Volley(14199): [1] Request.finish: 32233 ms: [ ] https://android.clients.google.com/fdfe/bulkDetails 0xe8d195d1 NORMAL 1 
05-25 13:14:13.647: W/ActivityManager(990): Activity pause timeout for ActivityRecord{4237a8c0 u0 com.clinko.dovestw/com.unity3d.player.UnityPlayerNativeActivity t24} 
05-25 13:14:13.650: W/ContextImpl(1286): Calling a method in the system process without a qualified user: android.app.ContextImpl.sendBroadcast:1244 android.content.ContextWrapper.sendBroadcast:365 com.motorola.motocare.util.TriggerHelper$TriggerBuilder.send:76 com.motorola.motocare.internal.frameworkevents.PauseResumeTrigger.handleFrameworkEvent:53 com.motorola.motocare.internal.frameworkevents.FwEventMonitor$FrameworkListener.processFrameworkEvent:114 
05-25 13:14:13.657: I/SFPerfTracer(271):  triggers: (rate: 0:0) (176027 sw vsyncs) (0 skipped) (194:116854 vsyncs) (196:299645) 
05-25 13:14:13.730: D/Sensors(990): AccelerationSensor: Set Sensors state 0x2 
05-25 13:14:13.730: D/Sensors(990): AccelerationSensor: set delay 0 
05-25 13:14:13.739: I/Choreographer(21003): Skipped 34 frames! The application may be doing too much work on its main thread. 
05-25 13:14:13.795: I/SBar.NetworkController(1111): onDataActivity: direction=3 
05-25 13:14:13.798: I/SBar.NetworkController(1111): refreshSignalCluster: mobile: mHasMobileDataFeature=true DataTypeShown=zz_moto_stat_sys_data_fully_connected_h_wide Activity=zz_moto_stat_sys_data_fully_connected_signal_inout_wide in=false out=false Accessibility="3.5G" 
05-25 13:14:13.836: I/LaunchCheckinHandler(990): Displayed com.google.android.gms/.games.ui.signin.SignInActivity,wp,ca,189 
05-25 13:14:13.836: I/ActivityManager(990): Displayed com.google.android.gms/.games.ui.signin.SignInActivity: +189ms 
05-25 13:14:14.794: I/SBar.NetworkController(1111): onDataActivity: direction=0 
05-25 13:14:14.798: I/SBar.NetworkController(1111): refreshSignalCluster: mobile: mHasMobileDataFeature=true DataTypeShown=zz_moto_stat_sys_data_fully_connected_h_wide Activity=zz_moto_stat_sys_data_fully_connected_signal_none_wide in=false out=false Accessibility="3.5G" 
05-25 13:14:15.041: V/AlarmManager(990): sending alarm Alarm{42cd7300 type 2 com.android.providers.calendar} 
05-25 13:14:15.085: E/ModemStatsUtils(1219): Exception in getLastKnownLocation - Timed out waiting for response from server 
05-25 13:14:15.085: D/Checkin(1219): publish the event [tag = CALL_PERF_DEVICE_LOC event name = CALL_PERF_DEVICE_LOC] 
05-25 13:14:15.797: I/SBar.NetworkController(1111): onDataActivity: direction=3 
05-25 13:14:15.807: I/SBar.NetworkController(1111): refreshSignalCluster: mobile: mHasMobileDataFeature=true DataTypeShown=zz_moto_stat_sys_data_fully_connected_h_wide Activity=zz_moto_stat_sys_data_fully_connected_signal_inout_wide in=false out=false Accessibility="3.5G" 
05-25 13:14:16.807: I/SBar.NetworkController(1111): onDataActivity: direction=2 
05-25 13:14:16.811: I/SBar.NetworkController(1111): refreshSignalCluster: mobile: mHasMobileDataFeature=true DataTypeShown=zz_moto_stat_sys_data_fully_connected_h_wide Activity=zz_moto_stat_sys_data_fully_connected_signal_out_wide in=false out=false Accessibility="3.5G" 
05-25 13:14:17.341: E/ViewRootImpl(19392): Attempting to destroy the window while drawing! 
05-25 13:14:17.341: E/ViewRootImpl(19392): [email protected], title= 
05-25 13:14:17.389: I/SFPerfTracer(271):  triggers: (rate: 16:457) (compose: 0:24) (post: 0:57) (render: 2:290) (209:61029 frames) (210:111372) 
05-25 13:14:17.390: D/SFPerfTracer(271):  layers: (7:12) (DimLayer: 0:25)* (FocusedStackFrame: 0:349)* (StatusBar: 15:8589) (NavigationBar: 0:3139) (com.android.systemui.ImageWallpaper: 0:1087)* (DimLayer: 14:15) (com.clinko.dovestw/com.unity3d.player.UnityPlayerNativeActivity: 186:1244) (SurfaceView: 0:1538) (com.google.android.gms/com.google.android.gms.games.ui.signin.SignInActivity: 1:8) (: 208:214) 
05-25 13:14:17.470: W/GLSUser(13596): GoogleAccountDataService.getToken() 
05-25 13:14:17.534: W/GLSUser(13596): GoogleAccountDataService.getToken() 
05-25 13:14:17.813: I/SBar.NetworkController(1111): onDataActivity: direction=3 
05-25 13:14:17.815: I/SBar.NetworkController(1111): refreshSignalCluster: mobile: mHasMobileDataFeature=true DataTypeShown=zz_moto_stat_sys_data_fully_connected_h_wide Activity=zz_moto_stat_sys_data_fully_connected_signal_inout_wide in=false out=false Accessibility="3.5G" 
05-25 13:14:18.035: D/dalvikvm(2539): GC_CONCURRENT freed 1963K, 36% free 11073K/17248K, paused 3ms+12ms, total 55ms 
05-25 13:14:18.131: W/GLSUser(13596): GoogleAccountDataService.getToken() 
05-25 13:14:18.358: I/qtaguid(2539): Failed write_ctrl(u 172) res=-1 errno=22 
05-25 13:14:18.358: I/qtaguid(2539): Untagging socket 172 failed errno=-22 
05-25 13:14:18.359: W/NetworkManagementSocketTagger(2539): untagSocket(172) failed with errno -22 
05-25 13:14:18.567: D/dalvikvm(990): GC_EXPLICIT freed 868K, 17% free 21692K/26020K, paused 6ms+11ms, total 149ms 
05-25 13:14:18.601: W/ContextImpl(1286): Calling a method in the system process without a qualified user: android.app.ContextImpl.sendBroadcast:1244 android.content.ContextWrapper.sendBroadcast:365 com.motorola.motocare.util.TriggerHelper$TriggerBuilder.send:76 com.motorola.motocare.internal.frameworkevents.PauseResumeTrigger.handleFrameworkEvent:53 com.motorola.motocare.internal.frameworkevents.FwEventMonitor$FrameworkListener.processFrameworkEvent:114 
05-25 13:14:18.610: W/ContextImpl(1286): Calling a method in the system process without a qualified user: android.app.ContextImpl.sendBroadcast:1244 android.content.ContextWrapper.sendBroadcast:365 com.motorola.motocare.util.TriggerHelper$TriggerBuilder.send:76 com.motorola.motocare.internal.frameworkevents.PauseResumeTrigger.handleFrameworkEvent:53 com.motorola.motocare.internal.frameworkevents.FwEventMonitor$FrameworkListener.processFrameworkEvent:114 
05-25 13:14:18.637: W/GLSUser(13596): GoogleAccountDataService.getToken() 
05-25 13:14:18.731: D/audio_hw_primary(274): out_set_parameters: enter: usecase(0: deep-buffer-playback) kvpairs: routing=2 
05-25 13:14:18.731: D/audio_hw_extn(274): audio_extn_set_anc_parameters: anc_enabled:0 
05-25 13:14:18.732: D/Sensors(990): AccelerationSensor: Set Sensors state 0x3 
05-25 13:14:18.732: D/Sensors(990): AccelerationSensor: set delay 20 
05-25 13:14:18.732: D/Sensors(990): AccelerationSensor: set delay 1 
05-25 13:14:18.734: D/Sensors(990): AccelerationSensor: set delay 20 
05-25 13:14:18.752: V/msm8974_platform(274): platform_get_output_snd_device: enter: output devices(0x2) 
05-25 13:14:18.752: V/msm8974_platform(274): platform_get_output_snd_device: exit: snd_device(speaker) 
05-25 13:14:18.752: D/audio_hw_primary(274): select_devices: out_snd_device(2: speaker) in_snd_device(0:) 
05-25 13:14:18.752: V/msm8974_platform(274): platform_send_audio_calibration: sending audio calibration for snd_device(2) acdb_id(14) 
05-25 13:14:18.935: I/SFPerfTracer(271):  triggers: (rate: 16:458) (compose: 0:24) (post: 0:57) (render: 2:291) (15:61057 frames) (16:111461) 
05-25 13:14:18.935: D/SFPerfTracer(271):  layers: (5:12) (DimLayer: 0:25)* (FocusedStackFrame: 1:351)* (StatusBar: 15:8605) (NavigationBar: 4:3143) (com.android.systemui.ImageWallpaper: 0:1087)* (DimLayer: 0:28)* (com.clinko.dovestw/com.unity3d.player.UnityPlayerNativeActivity: 7:1313) (SurfaceView: 9:1547) (com.google.android.gms/com.google.android.gms.games.ui.signin.SignInActivity: 16:87) (: 0:228)* 
05-25 13:14:18.978: I/qtaguid(2539): Failed write_ctrl(u 172) res=-1 errno=22 
05-25 13:14:18.978: I/qtaguid(2539): Untagging socket 172 failed errno=-22 
05-25 13:14:18.978: W/NetworkManagementSocketTagger(2539): untagSocket(172) failed with errno -22 
05-25 13:14:20.820: I/SBar.NetworkController(1111): onDataActivity: direction=0 
05-25 13:14:20.823: I/SBar.NetworkController(1111): refreshSignalCluster: mobile: mHasMobileDataFeature=true DataTypeShown=zz_moto_stat_sys_data_fully_connected_h_wide Activity=zz_moto_stat_sys_data_fully_connected_signal_none_wide in=false out=false Accessibility="3.5G" 
05-25 13:14:21.395: I/MDMCTBK(270): NetlinkHandler, power_supply subsys 
05-25 13:14:21.395: I/MDMCTBK(270): NetlinkHandler, usbChargerStateChanged 
05-25 13:14:21.395: I/MDMCTBK(270): MdmCutbackHndler,readFromFile = /sys/class/power_supply/usb/online 
05-25 13:14:21.395: I/MDMCTBK(270): MdmCutbackHndler,readFromFile = 
05-25 13:14:21.395: E/MDMCTBK(270): MdmCutbackHndler,Could not open '' 
05-25 13:14:21.403: I/MDMCTBK(270): NetlinkHandler, power_supply subsys 
05-25 13:14:21.403: I/MDMCTBK(270): NetlinkHandler, usbChargerStateChanged 
05-25 13:14:21.403: I/MDMCTBK(270): MdmCutbackHndler,readFromFile = /sys/class/power_supply/usb/online 
05-25 13:14:21.404: I/MDMCTBK(270): MdmCutbackHndler,readFromFile = 
05-25 13:14:21.404: E/MDMCTBK(270): MdmCutbackHndler,Could not open '' 
05-25 13:14:22.893: I/SBar.NetworkController(1111): onDataActivity: direction=0 
05-25 13:14:35.333: I/SBar.NetworkController(1111): onDataActivity: direction=0 
05-25 13:14:37.640: I/SBar.NetworkController(1111): onDataActivity: direction=4 
05-25 13:14:37.688: D/dalvikvm(1279): GC_CONCURRENT freed 1967K, 40% free 10397K/17248K, paused 13ms+3ms, total 52ms 
05-25 13:14:38.652: I/SBar.NetworkController(1111): onDataActivity: direction=3 
05-25 13:14:38.656: I/SBar.NetworkController(1111): refreshSignalCluster: mobile: mHasMobileDataFeature=true DataTypeShown=zz_moto_stat_sys_data_fully_connected_h_wide Activity=zz_moto_stat_sys_data_fully_connected_signal_inout_wide in=false out=false Accessibility="3.5G" 
05-25 13:14:39.657: I/SBar.NetworkController(1111): onDataActivity: direction=0 
05-25 13:14:39.662: I/SBar.NetworkController(1111): refreshSignalCluster: mobile: mHasMobileDataFeature=true DataTypeShown=zz_moto_stat_sys_data_fully_connected_h_wide Activity=zz_moto_stat_sys_data_fully_connected_signal_none_wide in=false out=false Accessibility="3.5G" 
05-25 13:14:42.116: I/SBar.NetworkController(1111): onDataActivity: direction=0 
05-25 13:14:46.717: I/SFPerfTracer(271):  triggers: (rate: 0:0) (176027 sw vsyncs) (0 skipped) (1990:118844 vsyncs) (1992:301637) 

,當我讀到的登入狀態時,它返回true,以isConnecting。

任何想法我做錯了什麼? 感謝您的閱讀。

+0

你有沒有在任何地方實施過'onActivityResult'?需要保持gameHelper狀態同步。 – free3dom

+0

如何在不擴展Unity活動的情況下實現它? –

+0

我不確定你可以,但是你需要在某個地方實現「gameHelper」同步的功能,因爲它與登錄活動之間的溝通方式並不存在。 [這個討論](http://forum.unity3d.com/threads/219672-Examples-when-to-extend-UnityPlayerActivity)可能會給你一些想法。您可能需要繼承Unity活動 - 請參閱[擴展UnityPlayerActivity Java代碼](http://docs.unity3d.com/Documentation/Manual/PluginsForAndroid.html)部分以獲取有關如何執行此操作的信息。 – free3dom

回答

1

正如評論中提到的那樣,您絕對需要在某處執行onActivityResult並在其中調用gameHelper.onActivityResult()。這樣做允許gameHelper從登錄/註銷活動接收結果以更新其內部狀態。如果沒有這個,gameHelper將不知道當前的登錄狀態是什麼,並且可能錯誤地報告用戶已經登錄,而實際上他們已經登出,從而阻止他們重新簽入服務。

This discussion給出了一些通過擴展UnityPlayerActivity以及一些替代想法來做到這一點的方法。

Unity插件文檔中的Extending the UnityPlayerActivity Java Code部分給出了一個很好的示例,說明如何擴展UnityPlayerActivity以及清單所需的更改。

相關問題