2013-09-23 34 views
5

Tôi đã thử một số đề xuất trong các chủ đề khác (chẳng hạn như buộc đăng xuất khi khởi động) và tôi không tìm thấy giải pháp cho vấn đề này. Vấn đề là với popup này:Dịch vụ trò chơi của Google Play - Chào mừng <Name> Popup không nhất quán

Welcome <name> popup image

Có vẻ như rất mâu thuẫn và hiếm khi xuất hiện.

Tôi đã thêm GameHelper.logout() vào ứng dụng của mình để bắt đầu luôn cố gắng hiển thị thông báo này, tuy nhiên nó không có.

Thường xuyên hơn không, nó chỉ đơn giản là không hiển thị ở tất cả.

Các phương pháp gọi như getGameClient().getCurrentUser().getIconImageUri() tất cả công việc và tôi có thể hiển thị hình ảnh theo cách đó. Ngoài ra, tôi có thể gửi lời mời và mọi người sẽ ngồi trong hành lang trò chơi với tôi.

Có cách nào để luôn hiển thị thông báo này khi họ nhấp vào nút đăng nhập Google+ trên màn hình trò chơi chính không?

Cần lưu ý rằng tôi đang sử dụng LibGDX, BaseGameUtils(GameHelper.java)Google Services (tất nhiên).

Có ai khác có vấn đề với điều này không?

Cảm ơn!

+0

Chỉ để tôi có thể thử một cái gì đó. Bạn có nhìn thấy nó khi: Sau khi người dùng đăng xuất (để nút Google+ của bạn thay đổi trở lại thành "đăng nhập bằng google" hoặc tương tự như vậy) và sau đó đăng nhập lại ngay lập tức, bạn có thấy Cửa sổ chào mừng không? – user2346305

+0

Tôi thì không. Gọi ví dụ, GameHelper.logout() theo sau bởi GameHelper.login() sẽ không làm cho thông báo này hiển thị. Tuy nhiên, nếu tôi không ở trong ứng dụng trong một khoảng thời gian dài (nhiều giờ) so với thông báo sẽ xuất hiện. Tôi gần như cảm thấy như thể vấn đề của một mã thông báo đang được tiếp tục tồn tại trên Google và ngăn tôi hiển thị thông báo này 'như tôi vui lòng'. Bạn đã xử lý điều này trước đây hay có bất kỳ thông tin chi tiết nào chưa? – Ryan

Trả lời

0

Ok, vì vậy tôi sẽ đăng bài ở đây cách thiết lập, sử dụng LibGDX và GPGS và tôi không gặp vấn đề gì khi hiển thị cửa sổ bật lên sau khi đăng xuất.

Đầu tiên tuyên bố của tôi cho dự án Android của tôi:

public class MainActivity extends AndroidApplication implements RequestHandler, GameHelperListener, 
    GoogleInterface, RealTimeMessageReceivedListener, RoomStatusUpdateListener, RoomUpdateListener, 
    OnInvitationReceivedListener, RealTimeReliableMessageSentListener, OnImageLoadedListener, OnStateLoadedListener, ConnectionCallbacks{ 
private GameHelper mHelper; 
private GameHelperInterface mGHInterface = null; 
private ConfirmInterface mConfirmInterface = null; 
private Handler libGDXHandler; 

Các GoogleInterface được sử dụng để truyền từ sợi LibGDX để thread Android và GameHelperInterface và ConfirmInterface là cho đi mọi thứ từ Android sang bên libGDX của nhà (tôi sử dụng confirmInteface để đăng nhập công cụ, và cái kia để nhắn tin, v.v ...) Trình xử lý là để đảm bảo mọi thứ đến từ phía LibGDX được đăng trên luồng Android chính xác (giống như bất kỳ thứ gì trong phần libGDX đến từ Android được đăng bằng cách sử dụng Gdx.app.postRunnable())

N ow Tôi tuyên bố trong onCreate()

.. setup the gameView etc.. 
mHelper.setup(this, GameHelper.CLIENT_GAMES | GameHelper.CLIENT_APPSTATE | GameHelper.CLIENT_PLUS, null); 
mHelper.getPlusClient().registerConnectionCallbacks(this); 

các onStart và onStop:

@Override 
public void onStart(){ 
    super.onStart(); 
    mHelper.onStart(this); 
} 

@Override 
public void onStop(){ 
    super.onStop(); 
    mHelper.onStop(); 
} 

đăng nhập và phương pháp Thoát bên trong mã Android

@Override 
    public void Login() { 
     libGDXHandler.post(new Runnable() { 

      @Override 
      public void run() { 
       dLog("beginUserInitatedSignIn()"); 
       //mHelper.signOut(); 
       mHelper.beginUserInitiatedSignIn(); 

      } 
     }); 

    } 

    @Override 
    public void LogOut() { 
     iServerBadAttempts = -1; 
     mHelper.signOut(); 

    } 

Các iServerBadAttempts được sử dụng để khi tôi khởi động quá trình Screen của tôi trong libGDX, tôi có thể yêu cầu bên Android cung cấp cho tôi biến đó ... nếu đó là -1, thì tôi biết rằng không có lần đăng nhập nào được thử trước đó và có thể thiết lập nút đăng nhập Google của tôi một cách thích hợp, nếu không tôi kiểm tra trạng thái của kết nối và một vài thứ khác để đặt các nút tôi sử dụng một cách thích hợp.

Và chỉ trong trường hợp, đây là cách tôi nói đang libGDX tôi rằng mHelper là thành công trong việc khai thác gỗ trong:

@Override 
public void onSignInSucceeded() { 
    dLog("signed in"); 
    mConfirmInterface.googleSucceeded(); 
    if (mHelper.getInvitationId() != null) { 
      acceptInviteToRoom(mHelper.getInvitationId()); 
      mConfirmInterface.acceptedInvitation(); 

     } 


} 

và đây là logcat của dấu hiệu trong và ngoài

09-24 09 : 14: 31.495: I/SplashScreen (6021): Đăng nhập Google 09-24 09: 14: 31.495: D/LDGame MainActivity (6021): beginUserInitatedSignIn() 09-24 09: 14: 31.495: D/Helper (6021): Bắt đầu luồng đăng nhập USER-INITIATED. 09-24 09: 14: 31.495: D/Helper (6021): làGooglePlayServicesAvailable trả lại 0 09-24 09: 14: 31.495: D/Helper (6021): beginUserInitiatedSignIn: bắt đầu luồng đăng nhập mới. 09-24 09: 14: 31.495: D/Helper (6021): Bắt đầu kết nối. 09-24 09: 14: 31.495: D/Helper (6021): Thay đổi trạng thái DISCONNECTED -> KẾT NỐI 09-24 09: 14: 31.495: D/Helper (6021): connectNextClient: khách hàng được yêu cầu: 7, khách hàng được kết nối: 0 09-24 09: 14: 31.495: D/Helper (6021): Khách hàng đang chờ xử lý: 7 09-24 09: 14: 31.495: D/Helper (6021): Kết nối GamesClient. 09-24 09: 14: 31.535: D/Helper (6021): onConnectionFailed 09-24 09: 14: 31.535: D/Helper (6021): Lỗi kết nối: 09-24 09: 14: 31.535: D/Người trợ giúp (6021): - Mã số: SIGN_IN_REQUIRED (4) 09-24 09: 14: 31.535: D/Helper (6021): - có thể giải quyết: đúng 09-24 09: 14: 31.535: D/Helper (6021): - chi tiết: ConnectionResult {statusCode = SIGN_IN_REQUIRED, resolution = PendingIntent {41d914d0: [email protected]}} 09-24 09: 14: 31.535: D/Helper (6021): onConnectionFailed: kể từ khi người dùng bắt đầu đăng nhập, giải quyết vấn đề. 09-24 09: 14: 31.535: D/Helper (6021): resolveConnectionResult: cố gắng giải quyết kết quả: ConnectionResult {statusCode = SIGN_IN_REQUIRED, resolution = PendingIntent {41d914d0: [email protected]}} 09-24 09 : 14: 31.535: D/Helper (6021): Kết quả có độ phân giải. Bắt đầu nó. 09-24 09: 14: 31.615: I/ScreenLog (6021): SCREEN PAUSE: SplashScreen 09-24 09: 14: 31.615: D/SensorManager (6021): unregisterListener :: Listener = com.badlogic.gdx.backends .android.AndroidInput $ SensorListener @ 41dc06e0 09-24 09: 14: 31.615: I/AndroidGraphics (6021): bị tạm dừng 09-24 09: 14: 31.615: D/Cảm biến (6021): Người nghe còn lại = Đang gửi .. bình thường delay 200ms 09-24 09: 14: 31.615: I/Sensors (6021): sendDelay --- 200000000 09-24 09: 14: 31.615: D/SensorManager (6021): JNI - sendDelay 09-24 09: 14: 31.615: I/SensorManager (6021): Đặt độ trễ bình thường = true 09-24 09: 14: 31.615: D/SensorManager (6021): unregisterListener :: Listener = com.badlogic.gdx.backends.android.AndroidInput $ SensorListener @ 41db99a0 09-24 09: 14: 31.615: D/Cảm biến (60 21): Tiếp tục nghe = Gửi .. bình thường trì hoãn 200ms 09-24 09: 14: 31.615: I/Cảm biến (6021): sendDelay --- 200000000 09-24 09: 14: 31.620: D/SensorManager (6021) : JNI - sendDelay 09-24 09: 14: 31.620: I/SensorManager (6021): Đặt độ trễ bình thường = true 09-24 09: 14: 31.620: I/AndroidInput (6021): bộ cảm biến rơi xuống 09- 24 09: 14: 32.220: W/IInputConnectionWrapper (6021): showStatusIcon trên đầu vào không hoạt động 09-24 09: 14: 37.010: D/Helper (6021): onActivityResult: req = RC_RESOLVE, resp = RESULT_OK 09-24 09: 14: 37.010: D/Helper (6021): onAR: Độ phân giải là RESULT_OK, vì vậy hãy kết nối lại máy khách hiện tại. 09-24 09: 14: 37.065: D/LDGame MainActivity (6021): về kết quả hoạt động 09-24 09: 14: 37.065: D/SensorManager (6021): registerListener :: handle = 0 name = LSM330DLC 3 trục Độ trễ gia tốc = 20000 Trình nghe = [email protected]ef6c38 09-24 09:14:37.070: D/SensorManager (6021): registerListener :: handle = 1 name = AK8975C Độ trễ cảm biến từ trường 3 trục = 20000 Listener = [email protected]ef6f00 09-24 09: 14: 37.070: I/AndroidInput (6021): thiết lập bộ cảm biến nghe 09-24 09: 14: 37.100: I/ScreenLog (6021): MÀN HÌNH KÍCH THƯỚC: SplashScreen 09-24 09: 14: 37.100: I/ScreenLog (6021): MÀN HÌNH HỒ SƠ: SplashScreen 09-24 09: 14: 37.160: D/dalvikvm (6021): GC_CONCURRENT giải phóng 674K, 13% miễn phí 13233K/15047K, bị tạm dừng 7ms + 3ms, tổng 61ms 09-24 09: 14: 37.160 : D/dalvikvm (6021): WAIT_FOR_CONCURRENT_GC bị chặn 22ms 09-24 09: 14: 37.180: D/dalvikvm (6021): GC_FOR_ALLOC giải phóng 10K, 13% miễn phí 13222K/15047K, tạm dừng 18 mili giây, tổng 18ms 09-24 09: 14: 37.180: I/dalvikvm-heap (6021): Tăng heap (frag case) lên 13.932MB cho 31 Phân bổ 3374 byte 09-24 09: 14: 37.200: D/dalvikvm (6021): GC_FOR_ALLOC giải phóng < 1K, 12% miễn phí 13528K/15367K, bị tạm dừng 19 mili giây, tổng số 19ms 09-24 09: 14: 37.235: D/SensorManager (6021): onAccuracyChanged :: accuracy = 3 09-24 09: 14: 37.240: D/Helper (6021): onConnected: kết nối! client = 1 09-24 09: 14: 37.240: D/Helper (6021): Khách hàng đã kết nối được cập nhật thành: 1 09-24 09: 14: 37.240: D/Helper (6021): connectNextClient: khách hàng được yêu cầu: 7, khách hàng được kết nối: 1 09-24 09: 14: 37.240: D/Helper (6021): Khách hàng đang chờ xử lý: 6 09-24 09: 14: 37.240: D/Helper (6021): Kết nối PlusClient. 09-24 09: 14: 37.395: D/dalvikvm (6021): GC_FOR_ALLOC giải phóng 511K, 14% miễn phí 13236K/15367K, tạm dừng 20ms, tổng 20ms 09-24 09: 14: 37.570: D/dalvikvm (6021): GC_CONCURRENT giải phóng 320K, 14% miễn phí 13319K/15367K, bị tạm dừng 1ms + 1ms, tổng số 34ms 09-24 09: 14: 37.755: D/dalvikvm (6021): GC_CONCURRENT giải phóng 482K, 14% miễn phí 13295K/15367K, bị tạm dừng 12ms + 2ms , tổng số 33ms 09-24 09: 14: 37.840: I/AndroidGraphics (6021): tiếp tục 09-24 09: 14: 38.055: D/Helper (6021): onConnected: đã kết nối! client = 2 09-24 09: 14: 38.055: D/Helper (6021): Khách hàng đã kết nối được cập nhật thành: 3 09-24 09: 14: 38.055: D/Helper (6021): connectNextClient: khách hàng được yêu cầu: 7, khách hàng được kết nối: 3 09-24 09: 14: 38.055: D/Helper (6021): Khách hàng đang chờ xử lý: 4 09-24 09: 14: 38.055: D/Helper (6021): Kết nối AppStateClient. 09-24 09: 14: 38.070: D/LDGame MainActivity (6021): bên trong khi được kết nối 09-24 09: 14: 38.070: D/LDGame MainActivity (6021): số 09-24 09: 14: 38.090: D/Helper (6021): onConnected: kết nối! client = 4 09-24 09: 14: 38.090: D/Helper (6021): Khách hàng đã kết nối được cập nhật thành: 7 09-24 09: 14: 38.090: D/Helper (6021): connectNextClient: khách hàng được yêu cầu: 7, khách hàng được kết nối: 7 09-24 09: 14: 38.090: D/Helper (6021): Khách hàng đang chờ xử lý: 0 09-24 09: 14: 38.090: D/Helper (6021): Tất cả khách hàng hiện đã kết nối. Đăng nhập thành công! 09-24 09: 14: 38.090: D/Helper (6021): Tất cả khách hàng được yêu cầu được kết nối. Đăng nhập đã thành công! 09-24 09: 14: 38.090: D/Helper (6021): Thay đổi trạng thái CONNECTING -> CONNECTED 09-24 09: 14: 38.090: D/Helper (6021): Thông báo LISTENER đăng nhập THÀNH CÔNG 09- 24 09: 14: 38.090: D/LDGame MainActivity (6021): đã đăng nhập

để đăng nhập, lưu ý quan trọng là bạn sẽ thấy "D/Helper (6021): onConnectionFailed: kể từ khi người dùng bắt đầu đăng nhập , giải quyết vấn đề. " làm như thế sẽ có nghĩa là signout làm việc trước đây

và đăng xuất logcat

09-24 09: 14: 52,145: D/Helper (6021): Clearing tài khoản mặc định trên PlusClient. 09-24 09: 14: 52.165: D/Helper (6021): Đăng xuất khỏi GamesClient. 09-24 09: 14: 52.190: D/Helper (6021): Tiếp tục ngắt kết nối. 09-24 09:14:52.190: D/Helper (6021): killConnections: giết các kết nối. 09-24 09: 14: 52.190: D/Helper (6021): Ngắt kết nối GamesClient. 09-24 09: 14: 52.195: D/Helper (6021): Ngắt kết nối PlusClient. 09-24 09: 14: 52.195: D/Helper (6021): Ngắt kết nối AppStateClient. 09-24 09: 14: 52.195: D/Helper (6021): killConnections: tất cả các máy khách bị ngắt kết nối. 09-24 09: 14: 52.195: D/Helper (6021): Thay đổi trạng thái CONNECTED -> DISCONNECTED

hy vọng sẽ hữu ích!

+0

Trong khi tôi không nói rõ, nó hoạt động ngay bây giờ. – Ryan