2013-03-13 33 views
5

Tôi muốn biết tên thật của trình phát nội bộ, nhưng tên hiển thị của GKLocalPlayer trả về "Tôi", không phải tên thật.Trung tâm trò chơi. Nhận tên thật

Mã những gì tôi sử dụng:

void (^completitionHandler)(NSArray *, NSError *) = ^(NSArray *players, NSError *error) { 

    for (GKPlayer *p in players) { 
     NSString *alies = p.alies; 
     NSString *name = p.displayName; 
     NSLog(@"name = %@",name); //not real name, just "Me" 
    } 

} 
+0

Vui lòng cập nhật câu hỏi bằng giải pháp hoặc đánh dấu câu trả lời đúng từ câu trả lời chính xác như câu trả lời được chấp nhận. Cảm ơn! – veducm

Trả lời

3

Sử dụng [GKLocalPlayer localPlayer].

NSString *alias = [GKLocalPlayer localPlayer].alias 
NSString *name = [GKLocalPlayer localPlayer].displayName 
+0

Cảm ơn bạn đã phản hồi, nhưng nó trả về "Tôi" – Sinba

+1

Thuộc tính bí danh đã trả về tên thực tế. Làm việc tốt. – user642252

4

Không chắc chắn displayName có thể được sử dụng để truy xuất tên đầy đủ của người dùng cục bộ. Từ Apple's documentation:

chơi Objects Cung cấp chi tiết về chơi

Khi trò chơi của bạn cần chi tiết cho một cầu thủ đặc biệt, nó lấy những chi tiết bằng cách thực hiện một truy vấn để Game Center. Bạn truy xuất thông tin cho người chơi sử dụng số nhận dạng người chơi của người chơi đó. Game Kit trả về các chi tiết đó cho trò chơi của bạn trong đối tượng GKPlayer.

  • displayName:

    Một chuỗi do người dùng có thể đọc được, bạn có thể hiển thị cho máy nghe nhạc này trong giao diện người dùng của riêng bạn. Ví dụ: trong kết hợp mạng, bạn có thể hiển thị tên hiển thị cho mỗi người chơi trong trận đấu để mọi người biết họ đang chơi với ai.

    display name cho trình phát tùy thuộc vào việc người chơi có phải là bạn của người chơi địa phương được xác thực trên thiết bị hay không. Nếu người chơi là bạn của người chơi địa phương, thì tên hiển thị là tên thật của người chơi. Nếu người chơi không phải là bạn, thì tên hiển thị là bí danh của người chơi.

Có nghĩa là truy xuất tên của người chơi khác. Sau đó, nếu bạn yêu cầu tên hiển thị của trình phát cục bộ, điều đó có nghĩa là nó trả về "Tôi", vì bạn là người dùng hiện tại của thiết bị này. Tôi đoán điều này có liên quan đến chính sách bảo mật.

thể Cách giải quyết:

Có lẽ, bạn có thể có được ID người dùng cục bộ và sử dụng nó để cố gắng lấy lại tên thật từ danh sách các cầu thủ cho ID đó. Nhưng tôi không biết nếu nó sẽ được thực hiện như bạn là một người bạn của chính mình hay không.

Các vấn đề liên quan