2013-03-25 41 views
6

Tôi đang gặp một số vấn đề gây nhầm lẫn nghiêm trọng với Game Center.Tai ương của Trung tâm trò chơi: iTunes Connect? Hồ sơ Cấp phép? Thứ gì khác?

Ứng dụng của tôi chạy trên iOS 6 trở lên mà thôi, và tôi đã sử dụng mã chuẩn để xác thực với Game Center:

GKLocalPlayer *localPlayer = [GKLocalPlayer localPlayer]; 
localPlayer.authenticateHandler = ^(UIViewController *viewController, 
            NSError *error) { 
    // Respond to authentication (failure or success) here! 
} 

Với mã này, các ứng dụng đã được chạy đẹp và không có vấn đề đối với tuần, cho bản thân mình trong quá trình phát triển và với ~ 10-15 người thử nghiệm beta trong các bản phân phối quảng cáo.

Đối với hầu hết thời gian này và đối với hầu hết người dùng, ứng dụng hoạt động như bạn mong đợi: nếu bạn chưa đăng nhập vào Trung tâm trò chơi khi ứng dụng khởi chạy hoặc đăng nhập vào tài khoản Trung tâm trò chơi sản xuất, ứng dụng sẽ nhắc bạn (với Bộ điều khiển Chế độ xem theo chủ đề của Game Center) để đăng nhập bằng tài khoản Sandbox. Bạn đăng nhập vào tài khoản sandbox của mình và mọi thứ chỉ hoạt động.

Đối với một vài người dùng, mặc dù, điều gì đó rất lạ đã bắt đầu xảy ra.

Mã số authenticateHandler được gọi, errornil, nhưng [GKLocalPlayer localPlayer].authenticatedNO và người dùng chưa đăng nhập vào Trung tâm trò chơi. Quan trọng nhất, có không có hộp thoại Trung tâm trò chơi phương thức để nhắc người dùng đăng nhập. Ứng dụng đơn giản khởi chạy, mã số authenticateHandler được gọi, nhưng không có xác thực diễn ra. Tôi nghĩ ứng dụng sẽ hoạt động nếu ứng dụng Trung tâm trò chơi cho phép tôi đăng nhập bằng tài khoản sandbox của mình nhưng không: đăng nhập hoặc đăng xuất khỏi tài khoản Trung tâm trò chơi của tôi, không có tùy chọn đăng nhập sandbox.

Vì điều này chỉ xảy ra với một số người dùng và chỉ mới bắt đầu xảy ra cho thiết bị phát triển của mình, tôi rất nghi ngờ rằng đó là vấn đề với mã của tôi và tôi đoán đó là sự tương tác phức tạp giữa iTunes Connect. hồ sơ, cài đặt và lịch sử của Game Center trên thiết bị, v.v.

Trung tâm trò chơi được bật trong ID ứng dụng của chúng tôi và trong iTunes Connect (và ID ứng dụng cho cả hai trận đấu).

Trợ giúp!

Sửa

Vấn đề của tôi thể thể tương tự như iOS Development: Strange problem with authenticating Game Center user. Giải pháp được đề xuất cho câu hỏi đó là đăng nhập theo cách thủ công trong ứng dụng Trung tâm trò chơi. Điều này có vẻ giống như một giải pháp hợp lý, nhưng tôi cần phải đăng nhập vào môi trường sandbox và tôi không thể tìm thấy cách để nhận lời nhắc đăng nhập Trung tâm trò chơi hộp cát trong ứng dụng Trung tâm trò chơi.

+0

Có thể những người dùng này đã tắt Trung tâm trò chơi không? Nếu bạn hủy đăng nhập vào GC trong 2-3 lần liên tiếp, thiết bị sẽ nhắc bạn tắt tính năng này. Sau đó, bạn chỉ có thể đăng nhập theo cách thủ công, ứng dụng sẽ không hiển thị hộp thoại xác thực GC nữa. –

+0

@MarkoNikolovski cảm ơn đề xuất. Tôi đã đọc về hành vi đó (xem câu hỏi được liên kết trong bản chỉnh sửa của tôi) và nghi ngờ đó có thể là vấn đề của tôi. Tôi không nghĩ rằng tôi đã hủy đăng nhập nhiều lần, nhưng bất kể, có thể đó là lý do tại sao hộp thoại xác thực của tôi không hiển thị. Vấn đề của tôi là: cách đăng nhập vào sandbox bằng ứng dụng Game Center khi nó không cung cấp "sandbox" trong trường giữ chỗ mật khẩu? –

+0

Nó chỉ ra các vấn đề chủ yếu là do một sai lầm mà tôi đã thực hiện trong mã 'authenticateHandler' của tôi, nơi logic của tôi không hiển thị đúng' viewController' cho người dùng để họ có thể đăng nhập. xung quanh trình bày bộ điều khiển xem và Game Center bị "vô hiệu hóa", câu trả lời của @ MarkoNikolovski là hữu ích và chính xác, vì vậy tôi đã đánh dấu nó là câu trả lời. –

Trả lời

1

Tôi vừa thử trên thiết bị của mình những gì xảy ra nếu người dùng đã tắt Trung tâm trò chơi: người dùng không thể truy cập vào trình điều khiển chế độ xem đăng nhập của Trung tâm trò chơi nữa từ bên trong ứng dụng. Bạn cần đăng một số hướng dẫn để người dùng đăng nhập theo cách thủ công.

Tôi cũng đã truy cập vào Trung tâm trò chơi theo cách thủ công và đăng nhập vào tài khoản của mình (tài khoản thông thường của tôi bằng tài khoản iTunes thông thường) và sau khi quay lại ứng dụng của tôi, tôi đã tự động được xác thực lại mà không cần thêm lời nhắc. Tôi muốn cược rằng nếu bạn có một e-mail riêng biệt/tài khoản cho tài khoản GC sandbox, bạn sẽ chỉ nhận được hộp thoại auth một lần nữa.

TL; DR: đặt một số văn bản hướng dẫn người dùng nên làm gì nếu bạn không thể nhận được hộp thoại phương thức. Xem mã của Apple trong số GameKit programming guide (trang PDF 36, danh sách 3-1). Bạn cần thực thi mã này trong phần else.

+0

Cảm ơn bạn đã liên kết đến danh sách 3-1. Tôi nghĩ rằng trong một môi trường sản xuất, bạn là đúng, kiểm tra này và nói cho người dùng "đi đến ứng dụng Game Center và đăng nhập bằng tay" chắc chắn sẽ làm việc. Khá chắc chắn rằng một số gặp lỗi này (bao gồm cả bản thân mình) đã làm * không * bấm "hủy bỏ" trên hộp thoại một vài lần. Có cách nào khác mà Trung tâm trò chơi có thể bị vô hiệu hóa không? Ngoài ra: bất kỳ ý tưởng làm thế nào để có được một dấu nhắc đăng nhập sandbox trong ứng dụng Game Center để khắc phục GC bị "vô hiệu hóa"? –

+0

TL; DR: Tôi không thể kiểm tra ứng dụng của mình vì tôi không thể tải Game Center để hiển thị thông tin đăng nhập sandbox để ghi đè GC bằng cách nào đó bị "vô hiệu hóa", nếu điều này thực sự là những gì đang diễn ra. –

+0

Bạn có thể đăng nhập vào Game Center không, bất kể đó là sandbox hay không? Ngoài ra, bạn có đang làm điều này trong trình mô phỏng hoặc trên thiết bị không? –